Open Editor를 클릭한 후 terraform-networks 폴더의 provider.tf 파일 코드 입력을 통해 Google Cloud Terraform 공급자를 구성
terraform {
required_version = ">= 0.12"
}
provider "google" {
project = var.project_id
region = var.gcp_region_1
zone = var.gcp_zone_1
}
variable.tf 파일을 열고 변수와 기타 변수를 생성
# GCP Project ID
variable "project_id" {
type = string
description = "GCP Project ID"
}
# Region to use for Subnet 1
variable "gcp_region_1" {
type = string
description = "GCP Region"
}
# Zone used for VMs
variable "gcp_zone_1" {
type = string
description = "GCP Zone"
}
# Define subnet for public network
variable "subnet_cidr_public" {
type = string
description = "Subnet CIDR for Public Network"
}
# allow ping only from everywhere
resource "google_compute_firewall" "public-allow-ping" {
name = "${google_compute_network.public-vpc.name}-allow-ping"
network = google_compute_network.public-vpc.name
allow {
protocol = "icmp"
}
source_ranges = [
"0.0.0.0/0"
]
}
Open Terminal을 클릭한 후 오류를 확인하고 생성될 내용을 확인
terraform plan
Terraform 명령을 실행하고 콘솔을 사용하여 네트워크, 서브넷 및 방화벽 규칙이 모두 생성되고 있는지 확인
terraform apply -auto-approve
Terraform을 사용하여 가상 머신 생성 (네트워크에 테스트 서버를 추가하고 방화벽 규칙이 작동하는지 확인)
Open Editor를 클릭하고 random-id-generator.tf 파일에 코드를 추가 이 Terraform 플러그인은 프로그래밍 방식으로 추가된 VM의 고유한 이름을 생성하는 데 사용
# Terraform plugin for creating random ids
resource "random_id" "instance_id" {
byte_length = 4
}
공용 네트워크에서 가상 머신을 생성하려면 test-server-linux.tf 파일을 열고 다음 코드를 추가 출력 변수는 생성된 시스템의 이름과 내부 및 외부 IP 주소를 반환하며 이 시스템에는 "allow-ssh" 태그가 지정되어 있으므로 연결할 수 있음 마지막으로 이 시스템이 이전에 생성한 공용 네트워크에 있도록 구성하는 network_interface 섹션의 코드를 살펴봄
# Create Test Server in Public VPC
resource "google_compute_instance" "test-server-linux" {
name = "public-test-server-linux-${random_id.instance_id.hex}"
machine_type = "f1-micro"
zone = var.gcp_zone_1
tags = ["allow-ssh"]
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
metadata_startup_script = "sudo apt-get update;"
network_interface {
network = google_compute_network.public-vpc.name
subnetwork = google_compute_subnetwork.public-subnet_1.name
access_config { }
}
}
output "test-server-linux" {
value = google_compute_instance.test-server-linux.name
}
output "test-server-linux-external-ip" {
value = google_compute_instance.test-server-linux.network_interface.0.access_config.0.nat_ip
}
output "test-server-linux-internal-ip" {
value = google_compute_instance.test-server-linux.network_interface.0.network_ip
}
Terraform 계획을 실행하고 이전에 이 머신을 생성하기 위해 했던 것처럼 명령을 적용 오류가 나타나면 다른 두 명령을 실행하기 전에 terraform init를 다시 실행
teraform init
terraform plan
terraform apply -auto-approve