
시작하기 전에
- 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
- 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
- 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.
Create mynetwork and its resources
/ 100
Terraform을 사용하면 인프라를 안전하고 예측 가능한 방식으로 생성, 변경, 개선할 수 있습니다. Terraform은 API를 선언적 구성 파일로 코드화하는 오픈소스 도구로, 팀원들과 공유하며 코드로 처리하고 편집, 검토, 버전 관리가 가능합니다.
이 실습에서는 Google Cloud 인프라 배포를 자동화하는 모듈로 Terraform 구성을 만듭니다. 다음 다이어그램과 같이 하나의 방화벽 규칙과 2개의 VM 인스턴스를 가진 자동 모드 네트워크 1개를 배포합니다.
이 실습에서는 다음 작업을 수행하는 방법을 알아봅니다.
각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다. 왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 패널이 있습니다.
Google Cloud 콘솔 열기를 클릭합니다(Chrome 브라우저를 실행 중인 경우 마우스 오른쪽 버튼으로 클릭하고 시크릿 창에서 링크 열기를 선택합니다).
실습에서 리소스가 가동되면 다른 탭이 열리고 로그인 페이지가 표시됩니다.
팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.
필요한 경우 아래의 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다.
실습 세부정보 패널에서도 사용자 이름을 확인할 수 있습니다.
다음을 클릭합니다.
아래의 비밀번호를 복사하여 시작하기 대화상자에 붙여넣습니다.
실습 세부정보 패널에서도 비밀번호를 확인할 수 있습니다.
다음을 클릭합니다.
이후에 표시되는 페이지를 클릭하여 넘깁니다.
잠시 후 Google Cloud 콘솔이 이 탭에서 열립니다.
이 작업에서는 Terraform을 사용하도록 Cloud Shell 환경을 구성합니다.
이제 Terraform이 Cloud Shell에 통합되었습니다. 설치된 버전을 확인합니다.
출력은 다음과 같습니다.
참고: Terraform 버전이 최신 버전이 아니라는 경고가 표시되더라도 걱정하지 마세요. 이 실습 안내는 Terraform v1.5.7 이상의 버전에서 작동됩니다. Terraform 웹사이트에서 최신 버전의 Terraform을 다운로드할 수 있습니다. Terraform은 지원되는 모든 플랫폼 및 아키텍처에서 바이너리 패키지로 배포되며 Cloud Shell은 Linux 64비트를 사용합니다.
참고: '서드 파티 쿠키가 차단되어 코드 편집기를 로드할 수 없습니다'라는 메시지가 표시되면 새 창에서 열기를 클릭합니다. 코드 편집기가 새 탭에서 열립니다. 원래 탭으로 돌아가서 터미널 열기를 클릭한 다음 코드 편집기 탭으로 다시 전환합니다. 이 실습에서는 주기적으로 Cloud Shell 터미널로 전환해야 합니다.
Terraform은 플러그인 기반 아키텍처를 사용하여 이용 가능한 수많은 인프라와 서비스 제공업체를 지원합니다. 각 '제공업체'는 Terraform 자체와 별도로 배포되는 자체 캡슐화된 바이너리입니다. Google을 제공업체로 설정하여 Terraform을 초기화합니다.
마우스 오른쪽 버튼으로 클릭
한 다음 새 파일을 클릭합니다.provider.tf
에 복사합니다.provider.tf를 저장하려면 파일 > 저장을 클릭합니다.
Terraform을 초기화하려면 다음 명령어를 실행합니다.
이제 Cloud Shell에서 Terraform으로 작업할 준비가 되었습니다.
이 작업에서는 방화벽 규칙 및 VM 인스턴스 2개(mynet_vm_1 및 mynet_vm_2)와 함께 자동 모드 네트워크인 mynetwork를 만듭니다.
새 구성을 만들고 mynetwork를 정의합니다.
마우스 오른쪽 버튼으로 클릭
한 다음 새 파일을 클릭합니다.mynetwork.tf
에 복사합니다.어떤 Google Cloud 리소스든 이 기본 템플릿으로 시작하면 좋습니다. name 필드에는 리소스의 이름을 지정하고 type 필드에는 생성할 Google Cloud 리소스를 지정할 수 있습니다. 속성도 정의할 수 있으나 일부 리소스의 경우에는 선택사항입니다.
mynetwork.tf
에서 [RESOURCE_TYPE]
을 "google_compute_network"
(따옴표 포함)로 변경합니다.참고: google_compute_network 리소스는 VPC 네트워크입니다. 사용할 수 있는 리소스는 Google Cloud 제공업체 문서에서 확인할 수 있습니다. Terraform 문서에서 이 특정 리소스에 대해 자세히 알아보세요.
mynetwork.tf
에서 [RESOURCE_NAME]
을 "mynetwork"
(따옴표 포함)로 변경합니다.mynetwork.tf
에 다음 속성을 추가합니다.자동 모드 네트워크는 말 그대로 자동으로 각 리전에 서브네트워크를 만듭니다. 따라서 auto_create_subnetworks를 true로 설정합니다.
mynetwork.tf
를 저장하려면 파일 > 저장을 클릭합니다.mynetwork에서 HTTP, SSH, RDP, ICMP 트래픽을 허용하는 방화벽 규칙을 정의합니다.
mynetwork.tf
에 다음 기본 코드를 추가합니다.mynetwork.tf
에서 [RESOURCE_TYPE]
을 "google_compute_firewall"
(따옴표 포함)로 변경합니다.참고: google_compute_firewall 리소스는 방화벽 규칙입니다. Terraform 문서에서 이 특정 리소스에 대해 자세히 알아보세요.
mynetwork.tf
에서 [RESOURCE_NAME]
을 "mynetwork-allow-http-ssh-rdp-icmp"
(따옴표 포함)로 변경합니다.mynetwork.tf
에 다음 속성을 추가합니다.참고: 이 방화벽 규칙은 네트워크에 종속되므로 google_compute_network.mynetwork.self_link 참조를 사용하여 Terraform이 이러한 리소스를 종속된 순서로 해결하도록 지시합니다. 여기에서는 네트워크가 방화벽 규칙보다 먼저 생성됩니다.
mynetwork.tf
에 다음 속성을 추가합니다.허용 규칙 목록은 허용되는 프로토콜과 포트를 지정합니다.
mynetwork.tf
파일이 다음과 같은지 확인합니다.VM 인스턴스 모듈을 만들어 VM 인스턴스를 정의합니다. 모듈은 폴더 내에서 재사용 가능한 구성입니다. 이 모듈을 이 실습의 두 VM 인스턴스 모두에 사용합니다.
마우스 오른쪽 버튼으로 클릭
한 다음 새 파일을 클릭합니다.Cloud Shell에 다음과 같은 폴더 구조가 만들어졌을 것입니다.
main.tf
에서 [RESOURCE_TYPE]
을 "google_compute_instance"
(따옴표 포함)로 변경합니다.참고: google_compute_instance 리소스는 Compute Engine 인스턴스입니다. Terraform 문서에서 이 특정 리소스에 대해 자세히 알아보세요.
main.tf
에서 [RESOURCE_NAME]
을 "${var.instance_name}"
(따옴표 포함)으로 변경합니다.두 VM 인스턴스 모두에 이 모듈을 사용할 것이므로 인스턴스 이름을 입력 변수로 정의합니다. 그러면 mynetwork.tf에서 변수 이름을 제어할 수 있습니다. Terraform: 입력 변수 정의하기 가이드에서 입력 변수에 대해 자세히 알아보세요.
main.tf
에 다음 속성을 추가합니다.이러한 속성은 인스턴스의 영역 및 머신 유형을 입력 변수로 정의합니다.
main.tf
에 다음 속성을 추가합니다.이 속성은 부팅 디스크가 Debian 11 OS 이미지를 사용하도록 정의합니다. 두 VM 인스턴스 모두 동일한 이미지를 사용하므로 모듈에 이 속성을 하드 코딩할 수 있습니다.
main.tf
에 다음 속성을 추가합니다.이 속성은 네트워크 이름을 입력 변수로 제공하고 액세스 구성을 지정하여 네트워크 인터페이스를 정의합니다. 액세스 구성을 비워 두면 임시 외부 IP 주소(이 실습에 필요함)가 생성됩니다. 내부 IP 주소만으로 인스턴스를 만들려면 access_config 섹션을 삭제하세요. 자세한 내용은 Terraform 문서를 참고하세요.
main.tf
가 괄호({}
)를 포함하여 다음과 같은지 확인합니다.마우스 오른쪽 버튼으로 클릭
한 다음 새 파일을 클릭합니다.variables.tf
에 입력 변수 4개를 정의합니다.instance_type에 기본값을 지정하여 변수를 선택사항으로 만듭니다. instance_name, instance_zone, instance_network는 필수이며 mynetwork.tf
에서 정의합니다.
mynetwork.tf
에 다음 VM 인스턴스를 추가합니다.이러한 리소스는 instance 폴더의 모듈을 활용하고 이름, 영역, 네트워크를 입력으로 제공합니다. 이러한 인스턴스는 VPC 네트워크에 종속되므로 google_compute_network.mynetwork.self_link 참조를 사용하여 Terraform이 이러한 리소스를 종속된 순서로 해결하도록 지시합니다. 여기에서는 네트워크가 인스턴스보다 먼저 생성됩니다.
참고: Terraform 모듈을 작성하면 여러 구성에서 재사용할 수 있다는 이점이 있습니다. 직접 모듈을 작성하는 대신 Terraform 모듈 레지스트리에 있는 기존 모듈을 활용할 수도 있습니다.
mynetwork.tf
를 저장하려면 파일 > 저장을 클릭합니다.
mynetwork.tf
가 괄호({}
)를 포함하여 다음과 같은지 확인합니다.
이제 mynetwork 구성을 적용할 차례입니다.
출력은 다음과 같습니다.
참고: 오류가 발생하면 이전 단계를 다시 살펴보고 구성이 실습 안내와 일치하는지 확인하세요. 구성 관련 문제를 해결할 수 없으면 다음의 완성된 구성을 다운로드한 다음 참고하세요.
출력은 다음과 같습니다.
참고: 오류가 발생하면 이전 단계를 다시 실행하여 폴더/파일 구조가 정확한지 확인하세요. 구성 관련 문제를 해결할 수 없으면 위 링크의 완성된 구성을 참고하세요. 문제를 해결했으면 이전 명령어를 다시 실행합니다.
출력은 다음과 같습니다.
Terraform은 다음 리소스 4개를 추가해야 한다고 판단했습니다.
이름 | 설명 |
---|---|
mynetwork | VPC 네트워크 |
mynetwork-allow-http-ssh-rdp-icmp | HTTP, SSH, RDP, ICMP를 허용하는 방화벽 규칙 |
mynet-vm-2 |
|
mynet-vm-2 |
|
출력은 다음과 같습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
참고: 실행 중에 오류가 발생하면 이전 단계를 다시 실행하여 폴더/파일 구조가 정확한지 확인하세요. 구성 관련 문제를 해결할 수 없으면 위 링크의 완성된 구성을 참고하세요. 문제를 해결했으면 이전 명령어를 다시 실행합니다.
Google Cloud 콘솔에서 리소스가 생성되었는지 확인합니다.
이 실습에서는 Google Cloud 인프라 배포를 자동화하는 모듈로 Terraform 구성을 만들었습니다. Terraform은 구성 변화에 맞춰 실행 계획을 만들어 가기 때문에 전체 구성을 단계별로 구축할 수 있습니다.
인스턴스 모듈을 사용하여 속성을 입력 변수로 제공하면서 동일한 리소스 구성을 여러 리소스에 재사용할 수 있었습니다. 만든 구성 및 모듈을 시작점으로 삼아 향후 배포에 활용할 수 있습니다.
실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.
실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.
별점의 의미는 다음과 같습니다.
의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.
의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.
Copyright 2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.
현재 이 콘텐츠를 이용할 수 없습니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
감사합니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
한 번에 실습 1개만 가능
모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.