【问题标题】:Terrafrom | variable | input to bash script地形 |变量 | bash 脚本的输入
【发布时间】:2020-03-26 14:34:06
【问题描述】:

我在来自

的 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"```
















【问题讨论】:

  • 你在做什么有什么问题?您似乎了解需要在 ECS 配置文件中附加一行,但您没有在问题中显示错误或解释什么不适合您。

标签: terraform terraform-template-file


【解决方案1】:

刚开始,我认为您不应该在模板中使用${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}",

模板当然比这更复杂。我建议从一个简单的文件开始,并检查它看起来像你想要的那样,然后在此基础上构建。一旦您看到 vars 随心所欲地在链中流动,构建一个更复杂的引导程序应该很简单。

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 2021-11-11
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多