我需要在gcp中创建一个具有公网IP的VM实例(实例可以为自己随机选择一个),而不是显式定义一个。
那么我该怎么做呢?
这是我可以用来实现这一点的gcloud命令(使用自动分配的公网ip创建vm实例)
gcloud compute instances create controller-1 \
--async \
--boot-disk-size 200GB \
--can-ip-forward \
--image-family ubuntu-2004-lts \
--image-project ubuntu-os-cloud \
--machine-type e2-standard-2 \
--private-network-ip 10.240.0.10 \
--scopes compute-rw,storage-ro,service-management,service-control,logging-write,monitoring \
--subnet kubernetes \
--tags kubernetes-the-hard-way,controller上面的命令将创建一个同时具有内部IP 10.240.0.10和带有某个随机选取的ip地址的公共ip的vm。
所以我想用terraform实现同样的目标
这是我的terraform代码。但是我该怎么做呢?
resource "google_compute_instance" "controllers" {
name = "controller-0"
machine_type = "e2-standard-2"
zone = var.zone
can_ip_forward = true
tags = ["kubernetes-the-hard-way", "controller"]
boot_disk {
initialize_params {
image = "ubuntu-2004-focal-v20200720"
}
}
network_interface {
subnetwork = google_compute_subnetwork.kubernetes.name
network_ip = "10.240.0.10" // private ip but how to assign a public ip (randomly)
}
service_account {
scopes = ["compute-rw", "storage-ro", "service-management", "service-control", "logging-write", "monitoring"]
}
}发布于 2020-08-14 13:32:46
空的access_config块将为您的实例分配一个外部临时IP。
network_interface {
network = "default"
access_config {}
}发布于 2020-08-14 11:49:45
似乎需要在network_interface下指定access_config,才能根据terraform中的this example为GCE实例分配外部(公网) IP。
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
}
}
}谷歌云平台的计算引擎支持两种类型的external IP addresses
https://stackoverflow.com/questions/63401480
复制相似问题