我想使用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地址?
答案 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。