오늘의 인기 글
최근 글
최근 댓글
Today
Total
11-24 10:55
관리 메뉴

우노

[Terraform] Terraform Cloud를 사용한 GCP 실습 본문

DevOps/Terraform

[Terraform] Terraform Cloud를 사용한 GCP 실습

운호(Noah) 2023. 1. 5. 15:44

Terraform 및 Terraform Cloud 설정

  • Terraform 설치

  • Terraform Cloud 계정 생성

  • Terraform Cloud Workspace 생성

    • CLI-driven workflow로 생성
      • 이를 통해, 로컬 환경에서 CLI로 작업을 진행해도, Terraform의 실질적인 실행 및 백앤드는 Terraform Cloud가 됩니다.
  • Terraform Cloud Workspace Overview 진행

    • Terraform Cloud 토큰 생성 및 등록

      • 터미널 → terraform login 명령어 입력 → yes 입력 → Terraform Cloud에서 token 생성 → 생성한 token을 다시 터미널에 입력
        • 로그인에 사용된 토큰은 로컬의 ~/.terraform.d/credentials.tfrc.json 파일에 보관되며,
        • 로컬에 저장된 토큰은 로컬 Shell에서 TFC와 상호작용 할 때 사용됩니다.
        • Terraform Cloud에선 User settings -> Tokens에서 토큰 발행 기록을 확인할 수 있습니다.
    • Terraform을 테스트할 폴더를 생성합니다.

    • Terraform Cloud Workspace Overview에 설명 되어있는 백앤드 세팅을 configuration.tf 파일에 작성한 뒤, 앞서 생성한 Terraform 폴더에 저장합니다.

        terraform {
          cloud {
            organization = "???"
      
            workspaces {
              name = "noah-test"
            }
          }
        }
    • Terraform 폴더에서 Initialize를 진행합니다.

        terraform init
        terraform apply

GCP 설정

  • GCP Project 생성

  • GCP Project 인증 정보 생성

    • API 및 서비스 → 사용자 인증 정보 → 사용자 인증 정보 만들기 → 서비스 계정 → 역할 : 소유자
    • 생성한 서비스 계정 클릭 → 키 → 키 추가 → 새 키 만들기 → 키 유형 : JSON → 인증키를 Terraform 폴더로 이동
  • Terraform 폴더에서 providers.tf 파일 생성

      provider "google" {
        # 앞에서 다운로드 받은 인증키 파일의 위치
        credentials = "${file("???.json")}"
        # 사용 프로젝트 ID
        project     = "???"
        # 사용 리전 명
        region      = "asia-northeast3"
      }
  • Terraform 폴더에서 아래 명령 실행

      terraform init
      terraform plan

Terraform을 사용해 GCP에 실제 리소스 생성

  • Terraform 폴더에 main.tf 파일을 생성한 뒤, 리소스 생성 정보를 작성합니다.

      # GCP 버킷 생성 예제
      resource "random_id" "bucket_prefix" {
        byte_length = 8
      }
    
      resource "google_storage_bucket" "static" {
        name          = "${random_id.bucket_prefix.hex}-new-bucket"
        location      = "US"
        storage_class = "COLDLINE"
    
        uniform_bucket_level_access = true
      }
  • Terraform 폴더 내부에서 Plan & Apply를 실행합니다.

      terraform init
      terraform plan
      terraform apply
  • GCP 콘솔을 통해서 리소스 생성 결과를 확인할 수 있습니다.

리소스 삭제

  • terraform destroy를 통해 앞서 생성한 모든 자원을 다시 삭제할 수 있습니다.

      terraform destroy

참고

Comments