0

我在 terraf 的 varibles.tf 文件中有 veraibles

locals {
deployment-type  = lower(var.env)

我正在制作一个将加入 ecs 集群的实例。我需要在 TF vars 的模板文件中注入集群名称

 resource "aws_instance" "ec2-instance" {......
 user_data = "${data.template_file.user_data.rendered}"
  data "template_file" "user_data" {
 template = "${file("${path.module}/user_data.tpl")}"
}

这是tpl文件。我需要从 TF vars 在这个文件中注入集群名称


# Update all packages

sudo yum update -y
sudo yum install -y ecs-init
sudo service docker start
sudo start ecs
echo "${var.env}"
#Adding cluster name in ecs config
#echo "${var.source_dest_check}"= >> /etc/ecs/ecs.config
cat /etc/ecs/ecs.config | grep "ECS_CLUSTER"```
















4

1 回答 1

0

就在顶部,我认为您不应该${var.env}在模板中使用,而是${env}.

它的工作原理有多个部分。我将不得不假设您缺少这些部分之一。我可以提供一个简单的例子。

从我自己的用户数据定义中,一些大大简化的示例:

variable "product" {
  default = ""
}

data "template_file" "userdata" {
  template = file("${path.module}/userdata.sh")
  vars = {
    product             = var.product
  }
}

从我的terraform.tfvars文件:

product = "radar"

文件中的某处userdata.sh,即模板:

    "product": "${product}",

模板当然比这更复杂。我建议从一个简单的文件开始,并检查它是否看起来像你想要的那样,然后在此基础上进行构建。一旦你看到了你想要的通过链的变量,构建一个更复杂的引导程序应该很简单。

于 2020-04-23T17:20:29.277 回答