IaC 배포/Terraform

[ Terraform ] Terraform Cloud 이란?

김붕어87 2023. 6. 29. 18:56
반응형

1. Terraform Cloud 이란?

Terraform Cloud를 사용하면 웹 UI으로 Terraform code를 실행 및 관리 할 수 있다.

Terraform Cloud 공식 홈페이지

Terraform Cloud 가격

 

2. Terraform Cloud 장점

보안

1. 사용자 단위로 실행/읽기 권한을 설정 가능하다.

2. 누가 언제 어떻게 실행했는지 정보를 Terraform Cloud에서 제공한다.

3. WorkerSpace(Terraform code)를 Lock를 설정해서 아무도 실행하지 못하도록 만들 수 있다.

4. Terraform Code를 Local 및 remote 둘 중에 하나만 실행하도록 Lock 할 수 있다.

5. Terraform Cloud 로그인 MFA 설정 가능하다.

6. Terraform Code안에 Access_Key, Secret_Key를 넣지 않고, Terraform Cloud에 암호화로 저장해서 사용한다.
(Terraform Code 노출 시 안전함)

저장소

1. tfstate 파일을 AWS S3에 저장하지 않아도 된다. (Terraform Cloud에 올라가며 revision 기능 제공)

2. DynamoDB Tables을 생성하지 않아도 된다. (Terraform Cloud에서 Lock 기능 제공)

편리성

1. Terraform Cloud와 GitHub 연동해서 Terraform Code 만 관리하고, 실행은 Terraform Cloud에서 한다.
> 기존 : Github에서 Terraform Code 다운로드 및 code 수정 후 Terraform plan & Apply 적용, github에 code 업로드

2. Github 수정된 내용이 있으면 Trigger받아서 자동으로 Terraform Cloud 실행 가능합니다.

3. 하나의 WorkerSpace(Terraform Code)가 완료되면 다른 WorkerSpace가 실행 되도록 Trigger 설정이 가능하다.

4. Terrform Code 실행 결과를 다른 유저(읽기 권한)들도 실시간으로 볼 수 있다.

 

3. Terraform Cloud 단점

  1. GitHub에서 repository를 가져오고 Cloud에서 Plan & Apply 되기 때문에 속도가 느리다.
  2. Terraform CLI 명령어 중에서 지원하지 않은 기능은 사용할 수 가 없다.
    > import 및 tfstate 상태 업데이트하려면 Terraform CLI 명령어(Local)를 사용해야한다.

 

4. Terraform Cloud 사용

1. 배포할 Organization 선택

”service-devops-infra-dev” Organization 선택

 

 

2. 배포할 workspace 생성

2-1. ”New WorkSpace” 선택

 

 

 

2-2. “Version control workflow” 선택

 

 

 

2-3. “GitHub” 선택

 

 

 

2-4. 배포할 GitHub Repository 선택
"service-xxx" repository에서 terraform 폴더 선택

 

 

 

 

2-5. “workspace Name” 입력

“Create workerspace” 클릭

 

 

 

 

2-6. workspace 생성 확인

 

 

 

 

 

 

 

3. workspace 셋팅

 

3-1. service-dev-vpc workspace에서 “Settings” 클릭

“Gerneral” 클릭

 

 

3-2. Gerneral 셋팅
Execution Mode : Remote (Terraform Cloud에서만 Terraform code 실행 가능)
Terraform Version : Terraform Code 버전 설정 (버전이 안맞으면 문법이 달라져서 오류 발생)
Terraform Working Directory : GitHub Repository 위치 (Terraform Code 위치)
“Save Settings” 클릭

 

 

 

 

 

  • 해당 organization의 모든 워크스페이스에서 Remote State을 Share할 수 있도록 설정
 

https://developer.hashicorp.com/terraform/cloud-docs/workspaces/state#accessing-state-from-other-workspaces.

 

 

 

 

 

 

4. workspace 실행

 

4-1. workspace 실행
“Actions” 클릭
“Start new run” 클릭

“Plan and apply (standard)” 클릭
“Start Run” 클릭

 

 

 

 

4-2. workspce Plan & Apply
Resource 46개 생성
Chagne 0개
Destory 0개
Plan 결과에는 어떤 resource가 생성되는지 정보를 자세히 볼 수 있음.
Comfirm 버튼 누르면 Apply 결과 확인할 수 있음.
배포

 

 

 

 

4-3. 배포 내용 확인
States탭에서 tfstate 파일 내용 확인

누가,언제 배포했는지 확인
tfstate 파일에서 outputs 내용도 확인 가능.

 

 

 

 

 

4-4. workspace Overview 확인
Overview 탭에서 생성된 리소스, outputs 내용 등 확인 가능

 

 

5. workspace에 Access Key / Secret Key 등록

“Sensitive - write only”으로 Key를 등록해서 확인 불가

 

 

6. Workspace Resource destory / Delete Workspace

  • Workspace > Setting > Destruction and Deletion 에서 Queue Destroy plan
    • 을 통해서 infrastructure(resource) 삭제가 가능함.
  • Delete from Terrafrom cloud를 통해서 Workspace 삭제 가능
 

반응형