首页 文章

访问user_data提供程序模板文件中的Terraform变量

提问于
浏览
4

我正在使用terraform启动 aws_launch_configuration 实例 .

我正在为 user_data 变量使用shell脚本,如下所示:

resource "aws_launch_configuration" "launch_config" {
    ...
     user_data                     = "${file("router-init.sh")}"
    ....  
}

在这个router-init.sh中,我想做的事情之一是访问我通过terraform启动的其他实例的ip地址 .

我知道我可以使用splat访问该实例的所有IP地址,例如:

output ip_address {
    value = ${aws_instance.myAWSInstance.*.private_ip}"
}

有没有办法在router-init.sh脚本中传递/访问这些IP地址?

1 回答

  • 7

    您可以使用template_file data source执行此操作:

    data "template_file" "init" {
      template = "${file("router-init.sh.tpl")}"
    
      vars {
        some_address = "${aws_instance.some.private_ip}"
      }
    }
    

    然后在模板中引用它,如:

    #!/bin/bash
    
    echo "SOME_ADDRESS = ${some_address}" > /tmp/
    

    然后将其用于 user_data

    user_data = ${data.template_file.init.rendered}
    

相关问题