terraform - Terraform 用户数据传递实例详细信息
问题描述
我需要使用 terraform 在我的 gcp 实例的用户数据中设置主机名和默认网络,(用户数据模板 yml 如下)
serverInfo:
serverId: 1
hostname: ${hostname}
defaultNetwork: ${defaultNetwork}
但是,经过一番调查,我意识到这非常困难。据我了解,用户数据是在实际创建实例之前完成的(如果错了,请纠正我)。但是在创建实例后,主机名和网络详细信息将变得可用。您能否建议我一种更好的方法来捕获该信息并在用户数据中更新它?
解决方案
- 如果您在一个后端拥有所有内容(您有一个管理所有内容的 terraform 状态),您是否检查过 gcp 实例的任何输出参数是否对您的目的有效?您可以将它们与以下示例中的代码片段一起使用:
google_compute_instance.name_of_your_instance.network_interface.0.network_ip
google_compute_instance.name_of_your_instance.self_link
- 如果您在 terraform 后端的 gcp 实例与您使用用户数据的后端不同,也许您可以使用以下方式检索详细信息 (在https://www.terraform.io/docs/providers/terraform/d
terraform_remote_state
中查看更多信息/remote_state.html )。好消息是这个远程状态是只读的,所以你用它做的任何事情都不会影响你的 gcp 实例。
推荐阅读
- html - 如何根据角度8中的条件获取json数据
- excel - 日期重叠:拆分日期以获得重叠间隔的通用方法?
- python - 在 csv 文件中保存行的副本
- python - Python:将列表中的一个元素分配给另一个列表中的元素
- .net-core - Azure DevOps 管道看不到 .NET Core 3.1 SDK,但它是唯一安装的版本
- php - 如何从 PHP 的外部文件夹中获取要出现在博客页面上的图像
- html - 仅在 Safari 上,为什么 SVG feColorMatrix 过滤器会导致剪切?
- php - for 循环无法与 json 编码 Php 一起正常工作
- reactjs - 通过单击组件外部的按钮将分页重置为第一页
- c# - 如何使用内核.NET(C#)在 jupyter notebook 中调用 kernel32.dll 方法(LoadLibraryEx)