Как открыть дополнительные порты в моем инстансе Google Compute с помощью Terraform? - PullRequest
0 голосов
/ 28 мая 2018

У меня есть экземпляр Google Compute, определенный некоторым кодом Terraform.

provider "google" {
  credentials = "${file("auth.json")}"
  project     = "aqueous-depth-189023"
  region      = "europe-west2"
}

resource "google_project" "website" {
  name = "Website"
  project_id = "aqueous-depth-189023"
}

resource "google_compute_instance" "default" {
  name         = "website"
  machine_type = "n1-standard-1"
  zone         = "europe-west1-b"

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }

  metadata {
    sshKeys = "james:${file("website.pem.pub")}"
  }

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-8"
    }
  }
}

По умолчанию Google предоставляет только порт 22 и несколько других для экземпляров Google Compute.Могу ли я обновить свой код Terraform, чтобы получить доступ к порту 80 и некоторым другим портам, не прибегая к использованию веб-консоли?Какой ресурс Terraform мне нужно добавить или отредактировать?

1 Ответ

0 голосов
/ 29 мая 2018

Использование google_compute_firewall.Вам потребуется tag вашего экземпляра с ресурсом экземпляра и установить target_tags на ресурсе брандмауэра.Вы можете обратиться к тому, как эти теги работают здесь .

Пример

Добавить тег к экземпляру

resource "google_compute_instance" "default" {
  name         = "website"
  machine_type = "n1-standard-1"
  zone         = "europe-west1-b"

  tags = ["web"]

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }

  metadata {
    sshKeys = "james:${file("website.pem.pub")}"
  }

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-8"
    }
  }
}

Добавить ресурс брандмауэра

resource "google_compute_firewall" "default" {
 name    = "web-firewall"
 network = "default"

 allow {
   protocol = "icmp"
 }

 allow {
   protocol = "tcp"
   ports    = ["80"]
 }

 source_ranges = ["0.0.0.0/0"]
 target_tags = ["web"]
}

Вы также можете определить source_tags или source_ranges, в приведенном выше примере используется диапазон источника 0.0.0.0/0, который равен «что угодно»,Это может не подходить для всех правил.

...