Создайте частную сеть с помощью Terraform, запустив скрипт - Google Cloud Platform - PullRequest
1 голос
/ 27 июня 2019

Начиная с Terraform недавно с GCP, я хотел бы закончить упражнение:

  • Создание новой сети VPC с одной подсетью.
  • Создайте правило брандмауэра, разрешающее внешний трафик RDP в хост-систему бастиона.
  • Разверните два сервера Windows, которые подключены как к сети VPC, так и к сети по умолчанию.
  • Создайте виртуальную машину, которая указывает на сценарий запуска.
  • Настройте правило брандмауэра, чтобы разрешить HTTP-доступ к виртуальной машине.

Вот мое решение:

  1. Создайте новую сеть VPC под названием securenetwork, затем создайте новую подсеть VPC внутри защищенной сети. После настройки сети и подсети настройте правило брандмауэра, которое разрешает входящий трафик RDP (порт TCP 3389) из Интернета на хост бастиона.
# Create the securenetwork network
resource "google_compute_network" "securenetwork" {
  name                    = "securenetwork"
  auto_create_subnetworks = false
}

# Create securesubnet-us subnetwork
resource "google_compute_subnetwork" "securesubnet-eu" {
  name          = "securesubnet-eu"
  region        = "europe-west1"
  network       = "${google_compute_network.securenetwork.self_link}"
  ip_cidr_range = "10.130.0.0/20"
}

# Create a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on securenetwork
resource "google_compute_firewall" "securenetwork-allow-http-ssh-rdp-icmp" {
  name    = "securenetwork-allow-http-ssh-rdp-icmp"
  network = "${google_compute_network.securenetwork.self_link}"

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

  allow {
    protocol = "icmp"
  }
}

# Create the vm-securehost instance
module "vm-securehost" {
  source              = "./instance/securehost"
  instance_name       = "vm-securehost"
  instance_zone       = "europe-west1-d"
  instance_subnetwork = "${google_compute_subnetwork.securesubnet-eu.self_link}"
  instance_network = "${google_compute_network.securenetwork.self_link}"
}

# Create the vm-bastionhost instance
module "vm-bastionhost" {
  source              = "./instance/bastionhost"
  instance_name       = "vm-bastionhost"
  instance_zone       = "europe-west1-d"
  instance_subnetwork = "${google_compute_subnetwork.securesubnet-eu.self_link}"
  instance_network = "${google_compute_network.securenetwork.self_link}"
}
  1. Развертывание экземпляров Windows

    • экземпляр сервера Windows 2016 с именем vm-securehost с двумя сетевыми интерфейсами. Настройте первый сетевой интерфейс с внутренним единственным подключением к новой подсети VPC, а второй сетевой интерфейс - с внутренним единственным подключением к сети VPC по умолчанию. Это безопасный сервер.
variable "instance_name" {}
variable "instance_zone" {}

variable "instance_type" {
  default = "n1-standard-1"
}

variable "instance_subnetwork" {}
variable "instance_network" {}

resource "google_compute_instance" "vm_instance" {
  name         = "${var.instance_name}"
  zone         = "${var.instance_zone}"
  machine_type = "${var.instance_type}"

  boot_disk {
    initialize_params {
      image = "windows-cloud/windows-2016"
    }
  }

  network_interface {
    subnetwork = "${var.instance_subnetwork}"
    access_config {
      # Allocate a one-to-one NAT IP to the instance
    }
  }
}
  • второй экземпляр сервера Windows 2016 с именем vm-bastionhost с двумя сетевыми интерфейсами. Настройте первый сетевой интерфейс для подключения к новой подсети VPC с эфемерным публичным (внешним NAT) адресом, а второй сетевой интерфейс - только для внутреннего подключения к сети VPC по умолчанию. Это поле прыжка или бастион.
variable "instance_name" {}
variable "instance_zone" {}

variable "instance_type" {
  default = "n1-standard-1"
}

variable "instance_subnetwork" {}
variable "instance_network" {}

resource "google_compute_address" "default" {
  name = "default"
  region = "europe-west1"
}

resource "google_compute_instance" "vm_instance" {
  name         = "${var.instance_name}"
  zone         = "${var.instance_zone}"
  machine_type = "${var.instance_type}"

  boot_disk {
    initialize_params {
      image = "windows-cloud/windows-2016"
    }
  }

  network_interface {
    subnetwork = "${var.instance_subnetwork}"
    network = "${var.instance_network}"
    access_config {
      # Allocate a one-to-one NAT IP to the instance
      nat_ip = "${google_compute_address.default.address}"
    }
  }
}

Мой вопрос:

  • как настроить экземпляр вычисления Windows под названием vm-securehost, который не имеет публичного IP-адреса?
  • как настроить экземпляр вычисления Windows под названием vm-securehost, который запускает программное обеспечение веб-сервера Microsoft IIS при запуске?
  • Спасибо за любой комментарий к решению
...