#google-cloud-platform #terraform
#google-cloud-platform #terraform
Вопрос:
Мне нужно создать экземпляр виртуальной машины в gcp
с общедоступным IP (экземпляр может случайным образом выбрать один для себя) без явного определения одного.
Итак, как я могу это сделать?
Это gcloud
команда, которую я могу использовать для достижения этой цели (создать экземпляр виртуальной машины с автоматически назначенным общедоступным ip)
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-адресом.
Итак, я хочу достичь той же цели с 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"]
}
}
Ответ №1:
Пустой блок access_config присвоит вашему экземпляру внешний эфемерный IP.
network_interface {
network = "default"
access_config {}
}
Ответ №2:
Похоже, вам нужно указать «access_config» в разделе «network_interface», чтобы назначить внешний (общедоступный) IP экземпляру GCE в соответствии с этим примером из terraform.
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
}
}
}
Вычислительный движок облачной платформы Google поддерживает два типа внешних IP-адресов:
Комментарии:
1. … скриншот?
2. Стоит отметить, что вы платите за статический IP-адрес, около 7,20 долларов в месяц, когда я проверял последний раз. Эфемерный вариант бесплатный.
3. Как назначить
nat_ip
уже зарезервированный IP по имени этого адресного ресурса в GCP?