https://gasidaseo.notion.site/gasidaseo/CloudNet-Blog-c9dfa44a27ff431dafdd2edacc8a1863
TFC(Terraform Cloud) 사용해보자.
VCS (Version Control System) = 대표적으로 Git 사용해보자.
1
VCS와 직접 통합되어 별도 워크플로 작성 없이도 풀 리퀘스트에 대한 Plan 결과를 확인할 수 있으며
지정된 브랜치에 병합이 발생하면 테라폼을 실행하는 자동화된 구성이 가능하다.
지원되는 VCS는 아래와 같다
- Github.com / Github.com (OAuth) / Github Enterprise
- Gitlab.com / Gitlab EE와 CE
- Bitbucket Cloud / Bitbucket Server
- Azure DevOps Server / Azure DevOps Services
2
여기서는 Github.com 과 연동해보자
3
테라폼 클라우드와 VCS간 연동이 필요하다.
테라폼 클라우드와 Github.com 연동 작업해보자~
TFC Org → Setting → Version Control > Provider ⇒
[Add a VCS provider] 클릭 : Github.com (Custom) 선택 후 → [register a new OAuth Application] 클릭
아래 내용 입력
register a new OAuth Application. 클릭.
Application name:Terraform Cloud (topasvga-org)
Homepage URL: https://app.terraform.io
Application description: Any description of your choice
Authorization callback URL: https://app.terrafxxxxxxxxx 앞에 있다
하단 Register application 클릭
4
Generagate a new client secret 클릭 후 생성 메모
맨 하단 Update application
4
Client ID와 Client Secret가 필요하다.
만들자.
5
TFC 입력
테라폼 클라우드 앞 화면으로 가자
- Name : My Github.com
- Client ID : <xxxxxxxx>
- Client Secret : <xxxxxxx>
SSH Keypair 은 필수는 아니므로 [Skip and finish] 로 연동 마무리.
→ 맨 하단 Connect and continue ⇒ 변경 화면에서 Grant 처리하고 최종적으로 [Authorize]
현재 사용하고 있는 워크스페이스에 VCS연계하자.
1
대상 VCS와의 인증 및 권한 처리가 완료되었으므로 다음 과정을 통해 워크스페이스에 VCS를 연계,
워크스페이스는 Admin 권한으로 수행한다
2
워크스페이스 선택 → Setting → Version Control 선택 ⇒ [Connect to version control] 클릭
Version control workflow 선택
연동된 VCS목록에서 [My Github.com] 선택
포크된 저장소 선택
Confirm changes :**Auto Apply** 선택, **Always trigger runs** 선택, VCS branch(main 입력),
Pull Request(Automatic… **체크**)
→ 하단 **Update VCS Setting** 클릭
3
워크스페이스와 VCS간 최초 연동되면 마지막 커밋 내용을 기반으로 Run이 실행된다.
워크스페이스 Overview에서 확인
[Run] 메뉴로 이동해 깃허브에 의해 트리거링된 정보를 확인하고 Apply를 실행한다
리소스 생성 완료 확인
4
AWS 콘솔가서 만들어진 부분을 확인하자!!!
1
코드를 바꾸면 잘 동작하는지 확인하자~~
2
main.tf 파일 수정 :
terraform.cloud 블록 주석 처리 ← VCS 연동으로 더 이상 필요하지 않음
아래 Project 내용도 주석 처리하자.
Project = "terraform cloud workflow"
3
cd terraform-aws-tfc-workflow/
terraform {
# cloud {
# organization = "topasvga-org"
# hostname = "app.terraform.io" # default
# workspaces {
# name = "terraform-aws-tfc-workflow"
# }
# }
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
provider "aws" {
region = var.region
default_tags {
tags = {
Project = "terraform cloud workflow"
Owner = "jerry & tom"
}
}
}
4
tfc-workflow 브랜치 생성, 커밋, 푸시
git branch -M tfc-workflow
git add .
git commit -m "tfc workflow"
git push origin HEAD
결과 나오는 링크 클릭해 가자.
https://github.com/topasvga/terraform-aws-tfc-workflow/pull/new/tfc-workflow
5
나의 github로 변경하자!!! (필수)
자신의 github 에서 rp 생성
에러.
에러 조치
주석처리.
추가 연결 필요 없음!!
terraform {
#<<<<<<< tfc-workflow
=======
# cloud {
# organization = "topasvga-org"
# hostname = "app.terraform.io" # default
#
# workspaces {
# name = "terraform-aws-tfc-workflow"
# }
# }
# >>>>>>> main
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
→ Merge pull request : Confirm
5
AWS 콘솔
VPC의 태그 변경 확인
Project = "terraform cloud workflow"
6
TFC에서 생성된 리소스 삭제 :
TFC 워크스페이스 Setting → Destruction and Delete ⇒ Queue destroy plan 로 생성된 리소스 삭제
- 실습 완료 후 최종 삭제
1. TFC Workspace 삭제
2. TFC Provider 삭제
3. Github Repo 삭제
4. 로컬에 Repo 디렉터리 삭제
5. (옵션) 임시로 AWS IAM 생성 했을 경우, AWS IAM 계정 삭제
https://brunch.co.kr/@topasvga/3347
감사합니다.