실습 설정 안내 및 요구사항
계정과 진행 상황을 보호하세요. 이 실습을 실행하려면 항상 시크릿 브라우저 창과 실습 사용자 인증 정보를 사용하세요.

Terraform을 사용하여 네트워크 및 방화벽 만들기

실습 1시간 universal_currency_alt 크레딧 5개 show_chart 중급
info 이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
이 콘텐츠는 아직 휴대기기에 최적화되지 않음
최상의 경험을 위해 데스크톱 컴퓨터에서 이메일로 전송된 링크를 사용하여 방문하세요.

개요

이 실습에서는 데이터베이스 마이그레이션 프로젝트를 위한 안전한 네트워크 인프라를 만듭니다. 공용 VPC와 비공개 VPC를 모두 만들고 각각에 적절한 방화벽 규칙을 적용합니다. 각 네트워크에 가상 머신을 추가하고 가상 머신 간의 통신을 테스트합니다. 마이그레이션 프로젝트에서 활용할 수 있는 더 현실적인 워크플로를 보여주기 위해 Terraform을 사용하여 이 모든 작업을 수행합니다.

목표

이 실습에서는 Terraform을 사용하여 다음 작업을 수행하는 방법을 알아봅니다.

  • 네트워크 생성 자동화
  • 방화벽 규칙 만들기
  • 가상 머신 만들기
  • 비공개 네트워크 만들기

설정 및 요건

이 작업에서는 실습을 위한 초기화 단계를 수행합니다.

각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.

  1. 시크릿 창을 사용하여 Google Skills에 로그인합니다.

  2. 실습 사용 가능 시간(예: 1:15:00)을 참고하여 해당 시간 내에 완료합니다. 일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.

  3. 준비가 되면 실습 시작을 클릭합니다.

  4. 실습 사용자 인증 정보(사용자 이름비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.

  5. Google Console 열기를 클릭합니다.

  6. 다른 계정 사용을 클릭한 다음, 안내 메시지에 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다. 다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다.

  7. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.

작업 1. Terraform을 사용하여 네트워크 생성 자동화

  1. 탐색 메뉴(탐색 메뉴 아이콘)에서 을 클릭합니다.

  2. 프로젝트 정보 섹션에서 프로젝트 ID를 찾아 복사하여 텍스트 파일에 붙여넣습니다. 이 파일은 나중에 필요합니다.

프로젝트 정보 섹션에 강조 표시된 프로젝트 ID

  1. 콘솔의 오른쪽 상단에 있는 Cloud Shell 활성화(Cloud Shell 활성화 아이콘) 아이콘을 클릭합니다. Cloud Shell 터미널이 브라우저 창 하단에 있는 창에서 열립니다.

  2. terraform-networks라는 디렉터리를 만들고 해당 디렉터리로 변경합니다.

mkdir terraform-networks cd terraform-networks
  1. 이 실습에 필요한 Terraform 파일을 만듭니다.
touch provider.tf touch terraform.tfvars touch test-server-linux.tf touch variables.tf touch vpc-network-public.tf touch vpc-firewall-rules-public.tf touch public-test-server-linux.tf touch random-id-generator.tf
  1. ls를 입력하여 파일이 terraform-networks 폴더에 생성되었는지 확인합니다.

  2. Cloud Shell에서 편집기 열기를 클릭한 다음, terraform-networks 폴더를 선택하고 provider.tf 파일을 엽니다.

  3. 다음 코드를 입력하여 Google Cloud Terraform 프로바이더를 구성합니다.

terraform { required_version = ">= 0.12" } provider "google" { project = var.project_id region = var.gcp_region_1 zone = var.gcp_zone_1 }

위 코드의 변수를 확인합니다. 이제 이러한 변수와 다른 변수를 만듭니다.

  1. variables.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" }

이전 파일에서 변수를 정의하고 다른 파일에서 변수를 설정했습니다.

  1. terraform.tfvars 파일을 열고 다음 코드를 추가합니다.
# GCP Settings project_id = "{{{project_0.project_id|Project ID}}}" gcp_region_1 = "{{{ project_0.default_region | "REGION" }}}" gcp_zone_1 = "{{{ project_0.default_zone | "ZONE" }}}" # GCP Network Variables subnet_cidr_public = "10.1.1.0/24"
  1. vpc-network-public.tf 파일을 열고 다음을 추가합니다.
resource "google_compute_network" "public-vpc" { name = "public-vpc" auto_create_subnetworks = "false" routing_mode = "GLOBAL" } resource "google_compute_subnetwork" "public-subnet_1" { name = "public-subnet-1" ip_cidr_range = var.subnet_cidr_public network = google_compute_network.public-vpc.name region = var.gcp_region_1 } 참고: 위의 Terraform 코드는 서브넷이 하나인 VPC를 만듭니다. 서브넷에서 ip_cidr_rangeregion의 두 변수를 확인합니다. 또한 network 속성이 서브넷 이전에 생성된 VPC를 다시 참조하는 방식도 확인하세요.
  1. 지금까지 절차가 제대로 진행되었는지 확인하려면 Google Cloud 콘솔의 탐색 메뉴(탐색 메뉴 아이콘)에서 VPC 네트워크를 클릭합니다. default라는 이름의 네트워크가 하나 있을 것입니다.

  2. Cloud Shell에서 터미널 열기를 클릭합니다. 올바른 디렉터리에 있는지 확인합니다.

cd ~/terraform-networks
  1. Terraform을 초기화하려면 다음 명령어를 입력합니다.
terraform init

'Terraform has been successfully initialized!'(Terraform이 성공적으로 초기화되었습니다.)라는 메시지가 표시되어야 합니다.

  1. Terraform 계획을 빌드하려면 다음 명령어를 입력합니다.
terraform plan

오류가 없는지 확인하고 생성될 리소스를 살펴봅니다.

계획에 네트워크와 서브네트워크라는 두 개의 리소스가 생성된다고 표시됩니다.

  1. 리소스를 만들려면 다음 명령어를 실행합니다.
terraform apply -auto-approve

-auto-approve 파라미터는 프롬프트 없이 스크립트를 실행합니다.

  1. 스크립트가 완료될 때까지 기다린 다음, 콘솔의 VPC 네트워크 툴바에서 새로고침을 클릭합니다. 새 네트워크와 서브넷이 표시됩니다.

네트워크 구성 작업은 아직 끝나지 않았습니다.

  1. 다음 명령어를 사용해 방금 만든 항목을 삭제합니다.
terraform destroy -auto-approve
  1. 새로고침을 클릭하여 네트워크가 삭제되었는지 확인합니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. Terraform을 사용하여 네트워크 생성 자동화

검토

지금까지 Terraform을 사용하여 네트워크와 서브넷을 만들었습니다. 다음으로 방화벽 규칙을 만듭니다.

작업 2. Terraform을 사용하여 방화벽 규칙 만들기

  1. Cloud Shell에서 편집기 열기를 클릭합니다. terraform-networks 폴더에서 vpc-firewall-rules-public.tf 파일을 엽니다.

  2. 이 네트워크의 머신에 SSH를 허용하는 방화벽 규칙을 추가하려면 다음 코드를 추가합니다.

# allow ssh resource "google_compute_firewall" "public-allow-ssh" { name = "${google_compute_network.public-vpc.name}-allow-ssh" network = google_compute_network.public-vpc.name allow { protocol = "tcp" ports = ["22"] } source_ranges = [ "0.0.0.0/0" ] target_tags = ["allow-ssh"] } 참고: 이 규칙은 어디서나 SSH를 허용하지만 'allow-ssh' 태그가 있는 머신에만 허용합니다.
  1. Windows 머신에는 SSH가 아닌 RDP가 필요합니다. SSH 규칙 아래에 다음 RDP 규칙을 추가합니다.
# allow rdp resource "google_compute_firewall" "public-allow-rdp" { name = "${google_compute_network.public-vpc.name}-allow-rdp" network = google_compute_network.public-vpc.name allow { protocol = "tcp" ports = ["3389"] } source_ranges = [ "0.0.0.0/0" ] target_tags = ["allow-rdp"] }

핑은 테스트에 유용합니다.

  1. 이전 규칙 아래에 다음 규칙을 추가하여 사용 설정합니다.
# 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" ] }
  1. 이전과 마찬가지로 터미널을 전환하고 다음 명령어를 실행하여 오류를 확인하고 생성될 항목을 확인합니다.
terraform plan
  1. 다음 Terraform 명령어를 실행하고 콘솔을 사용하여 네트워크, 서브넷, 방화벽 규칙이 모두 생성되는지 확인합니다.
terraform apply -auto-approve

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. Terraform을 사용하여 방화벽 규칙 만들기

검토

이제 네트워크와 몇 가지 방화벽 규칙이 갖춰졌습니다. 다음으로 네트워크에 테스트 서버를 추가하고 방화벽 규칙이 작동하는지 확인합니다.

작업 3. Terraform을 사용하여 가상 머신 만들기

  1. Cloud Shell 코드 편집기를 열고 random-id-generator.tf 파일을 열어 다음 코드를 추가합니다.
# Terraform plugin for creating random ids resource "random_id" "instance_id" { byte_length = 4 }

이 Terraform 플러그인은 프로그래매틱 방식으로 추가된 VM의 고유한 이름을 생성하는 데 사용됩니다.

  1. 공용 네트워크에서 가상 머신을 만들려면 test-server-linux.tf 파일을 열고 다음 코드를 추가합니다.
# 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-11" } } 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 } 참고: 출력 변수는 생성된 머신의 이름과 내부 및 외부 IP 주소를 반환합니다. 또한 이 머신에는 'allow-ssh' 태그가 지정되어 있으므로 연결할 수 있습니다.

마지막으로 network_interface 섹션의 코드를 살펴보세요. 이 코드는 앞서 만든 공용 네트워크에 이 머신이 있도록 구성합니다.
  1. 앞에서와 같이 Terraform plan 및 apply 명령어를 실행하여 이 머신을 만듭니다. 오류가 표시되면 다시 이 두 명령어를 실행하기 전에 terraform init를 다시 실행해야 할 수 있습니다.

명령어 실행이 완료되면 VM 이름과 내부 및 외부 IP 주소가 표시됩니다.

  1. Cloud Shell 터미널에서 해당 머신의 외부 IP 주소를 핑할 수 있는지 확인합니다.

  2. 콘솔에서 Compute Engine 서비스로 이동하여 방금 만든 VM을 확인합니다.

  3. SSH를 클릭하여 방화벽 규칙이 작동하는지 확인한 다음, SSH 세션을 종료합니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. Terraform을 사용하여 가상 머신 만들기

작업 4. Terraform을 사용하여 비공개 네트워크 만들기

  1. 공용 네트워크의 구성을 가이드로 사용하고 두 번째 비공개 네트워크를 만듭니다. variables.tf 파일에서 비공개 서브넷 IP CIDR 범위의 변수를 추가하고 terraform.tfvars 파일에서 값을 설정합니다.

  2. vpc-network-public.tf 파일을 복제하고 이름과 변수를 적절하게 변경합니다.

  3. 공개 방화벽 규칙을 가이드로 사용하여 비공개 네트워크에 대한 방화벽 규칙을 추가합니다. source_ranges 섹션에서 모든 소스의 트래픽을 허용하지 말고 공개 서브넷 IP CIDR 범위의 트래픽만 허용합니다.

  4. 공개 서버를 가이드로 사용하여 비공개 네트워크에 테스트 서버를 만듭니다.

참고: 이 실습을 직접 완료해 보세요. 문제가 발생하면 GitHub의 다음 URL(GoogleCloudPlatform/training-data-analyst)에서 전체 솔루션을 확인할 수 있습니다.
  1. 모든 항목을 생성한 후에는 공개 테스트 서버에 SSH를 통해 연결해 보세요. 비공개 네트워크의 서버에는 아직 액세스할 수 없습니다. 다음 실습에서 이 문제를 해결합니다.

수고하셨습니다. 이 실습에서는 데이터베이스 마이그레이션 프로젝트를 위한 안전한 네트워크 인프라를 만들었습니다. 공용 VPC와 비공개 VPC를 모두 생성하고 각각에 적절한 방화벽 규칙을 적용했습니다. 각 네트워크에 가상 머신을 추가하고 가상 머신 간의 통신을 테스트했습니다. 이 모든 작업을 Terraform을 사용하여 수행했습니다.

실습 종료하기

실습을 완료하면 실습 종료를 클릭합니다. Google Skills에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.

실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.

별점의 의미는 다음과 같습니다.

  • 별표 1개 = 매우 불만족
  • 별표 2개 = 불만족
  • 별표 3개 = 중간
  • 별표 4개 = 만족
  • 별표 5개 = 매우 만족

의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.

의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.

Copyright 2026 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.

시작하기 전에

  1. 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
  2. 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
  3. 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.

시크릿 브라우징 사용

  1. 실습에 입력한 사용자 이름비밀번호를 복사합니다.
  2. 비공개 모드에서 콘솔 열기를 클릭합니다.

콘솔에 로그인

    실습 사용자 인증 정보를 사용하여
  1. 로그인합니다. 다른 사용자 인증 정보를 사용하면 오류가 발생하거나 요금이 부과될 수 있습니다.
  2. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
  3. 실습을 완료했거나 다시 시작하려고 하는 경우가 아니면 실습 종료를 클릭하지 마세요. 이 버튼을 클릭하면 작업 내용이 지워지고 프로젝트가 삭제됩니다.

현재 이 콘텐츠를 이용할 수 없습니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

감사합니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

한 번에 실습 1개만 가능

모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.

시크릿 브라우징을 사용하여 실습 실행하기

이 실습을 실행하는 가장 좋은 방법은 시크릿 모드 또는 시크릿 브라우저 창을 사용하는 것입니다. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.