首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用terraform创建具有公网IP的GCP实例

如何使用terraform创建具有公网IP的GCP实例
EN

Stack Overflow用户
提问于 2020-08-14 02:50:39
回答 2查看 4.2K关注 0票数 2

我需要在gcp中创建一个具有公网IP的VM实例(实例可以为自己随机选择一个),而不是显式定义一个。

那么我该怎么做呢?

这是我可以用来实现这一点的gcloud命令(使用自动分配的公网ip创建vm实例)

代码语言:javascript
复制
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代码。但是我该怎么做呢?

代码语言:javascript
复制
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"]
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-14 13:32:46

空的access_config块将为您的实例分配一个外部临时IP。

代码语言:javascript
复制
network_interface {
    network = "default"
    access_config {}
}
票数 7
EN

Stack Overflow用户

发布于 2020-08-14 11:49:45

似乎需要在network_interface下指定access_config,才能根据terraform中的this example为GCE实例分配外部(公网) IP。

代码语言:javascript
复制
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

Static external IP addresses

Ephemeral external IP addresses

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63401480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档