빠른 시작: Terraform을 사용하여 VM 인스턴스 만들기

이 빠른 시작에서는 Terraform을 사용하여 Compute Engine 가상 머신(VM) 인스턴스를 만들고 이 VM 인스턴스에 연결하는 방법을 알아봅니다.

Hashicorp Terraform은 클라우드 인프라를 프로비저닝하고 관리할 수 있게 해주는 코드형 인프라(IaC) 도구입니다. Google Cloud용 Terraform 제공업체(Google Cloud 제공업체)를 사용하면 Google Cloud 인프라를 프로비저닝하고 관리할 수 있습니다.

시작하기 전에

  1. 이미 gcloud CLI 및 Terraform이 설정된 온라인 터미널을 사용하려면 Cloud Shell을 활성화합니다.

    이 페이지 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. 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.

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Enable the Compute Engine API:

    gcloud services enable compute.googleapis.com
  5. Google 계정에 역할을 부여합니다. 다음 각 IAM 역할에 대해 다음 명령어를 한 번씩 실행합니다. roles/compute.instanceAdmin.v1

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • PROJECT_ID를 프로젝트 ID로 바꿉니다.
    • EMAIL_ADDRESS를 이메일 주소로 바꿉니다.
    • ROLE을 각 개별 역할로 바꿉니다.

환경 준비

  1. Terraform 샘플이 포함된 GitHub 저장소를 클론합니다.

    git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
    
  2. 빠른 시작 샘플이 있는 디렉터리로 이동합니다.

    cd terraform-docs-samples/compute/quickstart/create_vm
    

Terraform 파일 검토

main.tf 파일을 검토합니다. 이 파일은 만들려는 Google Cloud 리소스를 정의합니다.

cat main.tf

출력은 다음과 비슷합니다.

resource "google_compute_instance" "default" {
  name         = "my-vm"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-minimal-2210-kinetic-amd64-v20230126"
    }
  }

  network_interface {
    network = "default"
    access_config {}
  }
}

이 파일은 Compute Engine VM 인스턴스의 Terraform 리소스인 google_compute_instance 리소스를 설명합니다. google_compute_instance는 다음과 같은 속성을 갖도록 구성됩니다.

  • namemy-vm로 설정되어 있습니다.
  • machine_typen1-standard-1로 설정되어 있습니다.
  • zoneus-central1-a로 설정되어 있습니다.
  • boot_disk가 인스턴스의 부팅 디스크를 설정합니다.
  • network_interface가 Google Cloud 프로젝트에서 기본 네트워크를 사용하도록 설정되어 있습니다.

Compute Engine VM 인스턴스 만들기

  1. 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
    
    
  2. 다음 명령어를 실행하여 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!
    
    
  3. 다음 명령어를 실행하여 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.
    
  4. 구성을 적용하여 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.

다음 단계