빠른 시작: Terraform을 사용하여 VM 인스턴스 만들기
이 빠른 시작에서는 Terraform을 사용하여 Compute Engine 가상 머신(VM) 인스턴스를 만들고 이 VM 인스턴스에 연결하는 방법을 알아봅니다.
Hashicorp Terraform은 클라우드 인프라를 프로비저닝하고 관리할 수 있게 해주는 코드형 인프라(IaC) 도구입니다. Google Cloud용 Terraform 제공업체(Google Cloud 제공업체)를 사용하면 Google Cloud 인프라를 프로비저닝하고 관리할 수 있습니다.
시작하기 전에
이미 gcloud CLI 및 Terraform이 설정된 온라인 터미널을 사용하려면 Cloud Shell을 활성화합니다.
이 페이지 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API:
gcloud services enable compute.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/compute.instanceAdmin.v1
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For examples, see Represent workforce pool users in IAM policies. - Replace
ROLE
with each individual role.
- Replace
환경 준비
Terraform 샘플이 포함된 GitHub 저장소를 클론합니다.
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
빠른 시작 샘플이 있는 디렉터리로 이동합니다.
cd terraform-docs-samples/compute/quickstart/create_vm
Terraform 파일 검토
main.tf
파일을 검토합니다. 이 파일은 만들려는 Google Cloud 리소스를 정의합니다.
cat main.tf
출력은 다음과 비슷합니다.
이 파일은 Compute Engine VM 인스턴스의 Terraform 리소스인 google_compute_instance
리소스를 설명합니다. google_compute_instance
는 다음과 같은 속성을 갖도록 구성됩니다.
name
가my-vm
로 설정되어 있습니다.machine_type
가n1-standard-1
로 설정되어 있습니다.zone
가us-central1-a
로 설정되어 있습니다.boot_disk
가 인스턴스의 부팅 디스크를 설정합니다.network_interface
가 Google Cloud 프로젝트에서 기본 네트워크를 사용하도록 설정되어 있습니다.
Compute Engine VM 인스턴스 만들기
Cloud Shell에서 다음 명령어를 실행하여 Terraform을 사용할 수 있는지 확인합니다.
terraform
출력은 다음과 비슷하게 표시됩니다.
Usage: terraform [global options] <subcommand> [args] The available commands for execution are listed below. The primary workflow commands are given first, followed by less common or more advanced commands. Main commands: init Prepare your working directory for other commands validate Check whether the configuration is valid plan Show changes required by the current configuration apply Create or update infrastructure destroy Destroy previously-created infrastructure
다음 명령어를 실행하여 Terraform을 초기화합니다. 이 명령어는 Terraform에서 구성을 적용할 수 있도록 작업공간을 준비합니다.
terraform init
출력은 다음과 비슷하게 표시됩니다.
Initializing the backend... Initializing provider plugins... - Finding latest version of hashicorp/google... - Installing hashicorp/google v5.35.0... - Installed hashicorp/google v5.35.0 (signed by HashiCorp) Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future. Terraform has been successfully initialized!
다음 명령어를 실행하여 Terraform 구성을 검증합니다. 이 명령어는 다음 작업을 수행합니다.
main.tf
구문이 올바른지 확인합니다.- 생성될 리소스의 미리보기를 표시합니다.
terraform plan
출력은 다음과 비슷하게 표시됩니다.
Plan: 1 to add, 0 to change, 0 to destroy. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
구성을 적용하여
main.tf
파일에 설명된 리소스를 프로비저닝합니다.terraform apply
메시지가 표시되면
yes
를 입력합니다.Terraform은 Google Cloud API를 호출하여
main.tf
파일에 정의된 VM 인스턴스를 만듭니다.출력은 다음과 비슷하게 표시됩니다.
Apply complete! Resources: 1 added, 0 changed, 0 destroyed
VM 인스턴스에 연결
다음 명령어를 실행하여 방금 만든 VM 인스턴스에 연결합니다.
gcloud compute ssh --zone=us-central1-a my-vm
삭제
이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 Google Cloud 프로젝트를 삭제하면 됩니다.
Cloud Shell에서 다음 명령어를 실행하여 Terraform 리소스를 삭제합니다.
terraform destroy
메시지가 표시되면 yes
를 입력합니다.
출력은 다음과 비슷하게 표시됩니다.
Destroy complete! Resources: 1 destroyed.
다음 단계
- Terraform을 사용하여 기본 Flask 웹 서버 배포 방법 알아보기
- Cloud Storage 버킷에 Terraform 상태 저장 방법 알아보기