【问题标题】:Read IP address of the existing GCP VM instance in Terraform [closed]读取 Terraform 中现有 GCP VM 实例的 IP 地址 [关闭]
【发布时间】:2021-09-20 22:29:22
【问题描述】:

我的 Google Cloud Platform 项目中有一个现有的 VM 实例,它是手动创建的(不使用 Terraform)。

现在,我想使用 Terraform 来为此 VM 配置 DNS 记录。我不想手动复制 IP 地址并将其硬编码到配置中。 Terraform 有没有办法读取现有 VM 实例的公共 IP 地址并在创建另一个资源时将此值用作变量?

此外,一般来说,Terraform 是否能够从现有资源(不由 Terraform 管理)中查询数据?

【问题讨论】:

  • 您已经发布了一个很好的答案。尝试编辑您的问题,以免您的问题结束。
  • 偶尔有效的话题被认为是离题的。好的问题/答案会被否决。世界并不总是公平的。然而,你已经做出了很多贡献——不要因为一种情况而停止贡献。

标签: google-cloud-platform terraform terraform-provider-gcp


【解决方案1】:

Terraform 有一个名为Data Sources 的功能。这种机制本质上提供了一种查询现有基础设施和从资源中读取数据的方法。

每个提供商都有自己的一组受支持的数据源。例如,GCP 提供者有一个google_compute_instance 数据源。

以下是如何使用此机制为现有 VM 实例创建 DNS 记录的示例:

data "google_compute_instance" "my-instance" {
  # this is how you query/match the existing resources
  name = "unique-name-of-your-instance"
}

resource "google_dns_record_set" "my-record" {
  name = "foo.example.com."
  type = "A"
  managed_zone = google_dns_managed_zone.my-zone.name
  rrdatas = [
    data.google_compute_instance.my-instance.network_interface.0.access_config.0.nat_ip
  ]
}

【讨论】:

    猜你喜欢
    • 2021-04-22
    • 2019-08-12
    • 2022-01-18
    • 2021-04-19
    • 2021-09-16
    • 2020-09-05
    • 2020-04-02
    • 2021-12-18
    • 2021-08-12
    相关资源
    最近更新 更多