如何使用Terraform将静态IP添加到GCE VM实例

时间:2020-01-14 13:41:46

标签: google-cloud-platform virtual-machine google-compute-engine terraform

我想使用Terraform 0.12部署一个Google Cloud Compute Engine VM实例。我的问题是创建了2个IP地址。我有一个静态的临时IP地址。 VM实例正在使用临时IP。 该区域正确。

这是我正在使用的代码:

resource "google_compute_address" "static-ip" {
  name = "static-ip"
  address_type = "EXTERNAL"
  region = var.location
}

google_compute_instance_template中的Compute Engine VM实例内部, 这样配置网络:

  network_interface {
    network = "default-net"
    access_config {
      nat_ip = google_compute_address.static-ip.address
    }
   }

然后,我使用资源google_compute_instance_from_template实例化VM实例。

我想知道如何将外部IP附加到我的VM实例上并且只有一个IP地址?

2 个答案:

答案 0 :(得分:3)

GCP IP Addresses文章所述,您将拥有2个IP,一个内部IP和一个可选的外部IP(临时或静态)

要使用Terraform使用静态IP创建实例,请查看他们的google_compute_address示例

resource "google_compute_address" "static" {
  name = "ipv4-address"
}

data "google_compute_image" "debian_image" {
  family  = "debian-9"
  project = "debian-cloud"
}

resource "google_compute_instance" "instance_with_ip" {
  name         = "vm-instance"
  machine_type = "f1-micro"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = data.google_compute_image.debian_image.self_link
    }
  }

  network_interface {
    network = "default"
    access_config {
      nat_ip = google_compute_address.static.address
    }
  }
}

阅读Argument Reference部分,了解每个变量的预期结果

答案 1 :(得分:0)

感谢您的回应。我自己解决了这个问题。我认为问题是我首先创建了一个具有内部IP的VM。然后我将自己的Terraform脚本更改为临时的临时IP。之后,我将所有内容都更改为静态外部。

Terraform并未删除临时IP。所以我手动删除了ip。