Я хочу создать публичную и частную подсети в GCP с помощью terraform

Я создал VPC в GCP с помощью Terraform. Теперь я хочу добавить две подсети: общедоступную и частную. при создании ВМ. если я передал общедоступную подсеть, виртуальная машина должна получить общедоступный IP-адрес, а если я передал частную подсеть, виртуальная машина должна получить только частный внутренний IP-адрес

## Create VPC
resource "google_compute_network" "vpc" {
     name                    = "${var.name}-vpc"
     auto_create_subnetworks = "false"
    }


    ## Create Subnet
 ##  Create public subnet  

resource "google_compute_subnetwork" "pub-subnet" {
     name          = "${var.name}-public-subnet"
     ip_cidr_range = "${var.pub-subnet-cidr}"
     network       = "${var.name}-vpc"
     depends_on    = ["google_compute_network.vpc"]
     region        = "asia-south1"
    }

## Create private subnet

resource "google_compute_subnetwork" "private-subnet" {
     name          = "${var.name}-private-subnet"
     ip_cidr_range = "${var.private-subnet-cidr}"
     network       = "${var.name}-vpc"
     depends_on    = ["google_compute_network.vpc"]
     region        = "asia-south1"
     private_ip_google_access = "true"
    }

##### Создать экземпляр vm

  resource "google_compute_instance" "default" {
name = "qa7-web-linux-${count.index + 1}"
count = "${var.count}"
machine_type = "${var.machine_type}"

boot_disk {
     initialize_params {
         image = "${var.web-srv-image}"
         }
     }   
network_interface {
    subnetwork = "${var.subnet-private}"
    access_config {
         }
    }
metadata {
sshKeys = "indra:${file(".//modules//instances//key.pub")}"
    }
}

person Indrajeet Kumar    schedule 16.08.2019    source источник
comment
Что не так с тем, что вы опубликовали? Вы получаете сообщение об ошибке при запуске? Что-то происходит не так, как вы ожидаете? Вы также должны включить свой код Terraform, который создает ваши экземпляры, если что-то идет не так.   -  person ydaetskcoR    schedule 16.08.2019
comment
Я не получаю никаких ошибок при создании экземпляров виртуальных машин, которым автоматически назначается общедоступный IP-адрес (даже при выборе частной подсети), хочу внести некоторые изменения, которые будут назначать только частный IP-адрес при выборе частной подсети :)   -  person Indrajeet Kumar    schedule 16.08.2019
comment
Где ваш код для создания экземпляра?   -  person ydaetskcoR    schedule 16.08.2019
comment
ресурс google_compute_instance по умолчанию {name = qa7-web-linux - $ {count.index + 1} count = $ {var.count} machine_type = $ {var.machine_type} boot_disk {initialize_params {image = $ {var.web-srv- image}}} network_interface {subnetwork = $ {var.subnet-private} access_config {}} метаданные {sshKeys = indra: $ {file (.// modules // instance // key.pub)}}}   -  person Indrajeet Kumar    schedule 16.08.2019
comment
Отредактируйте его в своем вопросе, а не в комментарии. И сделать так, чтобы он был полностью воспроизводимым. Руководство минимальный воспроизводимый пример дает хорошее объяснение того, что следует включать в вопрос.   -  person ydaetskcoR    schedule 16.08.2019
comment
Добавлен код для создания экземпляра vm в частной подсети   -  person Indrajeet Kumar    schedule 16.08.2019
comment
Ваш код показывает, что вы помещаете его в общедоступную подсеть?   -  person ydaetskcoR    schedule 16.08.2019
comment
Отредактировал код   -  person Indrajeet Kumar    schedule 16.08.2019


Ответы (1)


Я знаю, что это старый вопрос, но недавно я столкнулся с той же проблемой. Проблема с вашим кодом в том, что у вас есть

access_config { }

block в вашем определении network_interface. Когда он присутствует, внешний IP-адрес будет назначен создаваемому сетевому интерфейсу. У вас должен быть другой блок network_interface без параметра access_config для виртуальных машин в вашей частной подсети. В отличие от AWS, подсеть на самом деле не является частной, b / c вы можете назначить внешний IP-адрес в любое время. private_ip_google_access, вероятно, не означает то, что вы думаете.

person LHWizard    schedule 21.11.2020