Terraform Template_File Rendeding не работает
Я новичок в Terraform и изучаю файл template_file с помощью AWS. Я только что собрал код, как показано ниже, с шаблоном template_file, но после запуска экземпляра EC2 я обнаружил, что скрипт в файле template_file не выполняется - tcpdump и httpd не установлены, а конфигурация имени хоста и сервера имен не выполнена. Может ли кто-нибудь указать, что я здесь делаю неправильно?
файл_файла: user_data.sh.tpl:
#!/usr/bin/bash sudo yum install -y tcpdump sudo yum update -y sudo yum install -y httpd24 php56 php56-mysqlnd sudo service httpd start sudo hostname www.xyz.com echo "${nameserver}" >> /etc/resolv.conf
Ресурс и данные в файле application.tf в модуле dir:
data "template_file" "user_data" { template = "${file("/Users/user1/Documents/Terraform/Code/started/modules/application/user_data.sh.tpl")}" vars { nameserver = "${var.external_nameserver}" } } resource "aws_instance" "app-server" { ami = "ami-b2b55cd5" key_name = "privatekey" instance_type = "${lookup(var.instance_type, var.environment)}" subnet_id = "${var.subnet_id}" vpc_security_group_ids = ["${distinct(concat(var.extra_sgs, aws_security_group.allow_http.*.id))}"] user_data = "${data.template_file.user_data.rendered}" tags { Name = "${var.name}" } }
1 ответ
Вместоtemplate_file
user_data = "${data.template_file.user_data.rendered}"
я использовалtemplatefile
функция (с именем файла.tftpl
вместо.tpl
) похоже на это
templatefile("${path.module}/user_data.tftpl", {
nameserver = "${var.external_nameserver}"
})
Затем очистить и удалить
data "template_file" "user_data" {
template = "${file("/Users/user1/Documents/Terraform/Code/started/modules/application/user_data.sh.tpl")}"
vars = {
nameserver = "${var.external_nameserver}"
}
}
https://github.com/hashicorp/terraform-provider-template/issues/85https://www.terraform.io/language/functions/templatefile