首页 > 解决方案 > Terraform 用户数据传递实例详细信息

问题描述

我需要使用 terraform 在我的 gcp 实例的用户数据中设置主机名和默认网络,(用户数据模板 yml 如下)

  serverInfo:
    serverId: 1
    hostname: ${hostname}
    defaultNetwork: ${defaultNetwork}

但是,经过一番调查,我意识到这非常困难。据我了解,用户数据是在实际创建实例之前完成的(如果错了,请纠正我)。但是在创建实例后,主机名和网络详细信息将变得可用。您能否建议我一种更好的方法来捕获该信息并在用户数据中更新它?

标签: terraform

解决方案


  • 如果您在一个后端拥有所有内容(您有一个管理所有内容的 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/dterraform_remote_state中查看更多信息/remote_state.html )。好消息是这个远程状态是只读的,所以你用它做的任何事情都不会影响你的 gcp 实例。

推荐阅读