簡體   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