우노
[Terraform] Terraform Cloud를 사용한 GCP 실습 본문
Terraform 및 Terraform Cloud 설정
Terraform 설치
Install | Terraform | HashiCorp Developer
brew tap hashicorp/tap brew install hashicorp/tap/terraform
Terraform Cloud 계정 생성
Terraform Cloud Workspace 생성
- CLI-driven workflow로 생성
- 이를 통해, 로컬 환경에서 CLI로 작업을 진행해도, Terraform의 실질적인 실행 및 백앤드는 Terraform Cloud가 됩니다.
- CLI-driven workflow로 생성
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 login 명령어 입력 → yes 입력 → Terraform Cloud에서 token 생성 → 생성한 token을 다시 터미널에 입력
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
참고
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] provider "kubernetes” 선언 시 kubeconfig 파일 작성 방법 (0) | 2023.02.23 |
---|---|
[Terraform] state 자원 확인 방법 (0) | 2023.02.16 |
[Terraform] 리소스 제거 방법 (0) | 2023.02.16 |
[Terraform] 다중 Provider 적용 방법 (0) | 2023.01.12 |
[Terraform] Terraform 구성 요소 (0) | 2023.01.06 |
Comments