繁体   English   中英

Terraform aws_launch_template user_data 变量分离(本地和ec2执行)

[英]Terraform aws_launch_template user_data variables separation (local and ec2 execution)

在我的用户数据中,我有:

export INSTANCEID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)

和 Terraform:

resource "aws_launch_template" "launch_template" { 
  user_data = base64encode(
      templatefile(
        "${path.module}/user_data/user_data.sh.tpl",
        {
          environment = var.environment
        }
      )
    )

结果,我收到错误:

“vars”参数的值无效:vars map 不包含键“INSTANCEID”,引用于./user_data/user_data.sh.tpl

正如我们所见,INSTANCEID 应该在 EC2 端的启动时设置,但 Terraform 正试图在计划时替换此变量。 怎么解决?

有2个解决方案:

  1. 在 shell 脚本中使用额外的$转义该变量。 例如, INSTANCEID=$${INSTANCEID}
  2. 在 terraform 脚本中的文件变量列表下将该变量添加为INSTANCEID = "$INSTANCEID" ,它将用$INSTANCEID INSTANCEID 替换${INSTANCEID}并且脚本仍然可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM