amazon-web-services - 在 user_data 提供者模板文件中访问 Terraform 变量
问题描述
我正在aws_launch_configuration
使用 terraform 启动一个实例。
我正在为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 地址?
解决方案
您可以使用template_file
数据源执行此操作:
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}
推荐阅读
- angular - 如何根据 Firebase 服务取消测试 Angular 组件
- c# - 使用 Moq 进行 Elasticsearch Nest 单元测试:无法模拟具体类
- flutter - 弃用自定义颤振小部件
- react-hook-form - 反应钩子形式:点击清除文件输入字段
- hololens - 有没有办法通过 Hololens 在 Unity 中离线使用 Python?
- python - 如何对直线进行降噪
- tailwind-css - 从 Tailwind UI Figma 文件导出以创建 Tailwind CSS 主题
- java - 当涉及到多态性、继承、重载、覆盖、泛型和铸造的混合时,如何记住事情
- java - 使用 webview 和 Fragment 在 android 中动态添加选项卡
- javascript - Handlebars 动态数据显示:“Uncaught SyntaxError: Invalid or unexpected token”