밤 늦게까지 여는 카페

terraform cloud - 개인 PC에서 terraform 관리는 그만!!! 본문

DevOps

terraform cloud - 개인 PC에서 terraform 관리는 그만!!!

Jㅐ둥이 2022. 10. 29. 00:39
반응형

안녕하세요. 저번에 공부했던 terraform은 어떠셨나요?

 

.tfstate 파일을 어떻게 관리하지?

개인 컴퓨터에서 terraform을 사용하여 인프라를 관리하기 시작했다면 한가지 고민이 생기셨을 거에요.

 

.tfstate 파일을 어떻게 관리하지?

terraform을 사용하는, IaC가 필요한 상황은 조직에서 인프라를 관리할 때 입니다.

그런데 .tfstate 파일을 개인 컴퓨터에서 관리한다면 조직에서 관리가 어렵겠죠?

 

이를 해결하기 위해서 terraform은 backend 기능을 제공합니다.

 

terraform backend 기능

terraform backend는 state 파일을 어느 곳에 보관할지 설정하는 옵션입니다.

기본값은 local로 terraform 명령어가 실행되는 PC입니다.

backend로 사용할 수 있는 값들은 다음과 같습니다.

  • local (기본값)
  • remote
  • azurerm
  • consul
  • cos
  • gcs
  • http
  • Kubernetes
  • oss
  • pg
  • s3

공식 문서 참고: https://developer.hashicorp.com/terraform/language/settings/backends/configuration 

 

이번 포스팅에서는 바로 remote 를 소개시켜드리려고 합니다.

remote 옵션을 사용하면 terraform cloud에서 state 파일을 관리할 수 있고, VCS와 연동할 수 있습니다.

  • terraform cloud를 사용하면 플랫폼 의존성을 제거할 수 있습니다.
  • VCS와 연동하면 다음과 같은 장점이 있습니다.
    1. Pull Request(PR) 생성과 동시에 자동으로 plan 을 실행하여 terraform 스크립트의 유효성을 검증하고,
    2. PR이 병합되면 자동으로 apply 진행 가능
    3. 인프라가 어떻게 변경되었는지 commit으로 관리될 수 있음
    4. (3에 의해서 인프라에 대한 인수인계 과정이 간소화됨)

terraform cloud 연동

terraform cloud 연동하는 경우는 2가지로 나뉠 것입니다.

  1. 처음부터 terraform cloud로 연동하는 경우
  2. 다른 backend(주로 local 이겠죠?)를 사용하다가 terraform cloud로 연동하는 경우

혹시라도 2번의 경우라서 terraform cloud 연동을 걱정하고 있으셨다면 전혀 걱정하실 필요 없습니다!

 

 

1. 기존의 terraform.tf 파일(terraform 버전 및 설정을 작성한 terraform 파일)에 다음 코드를 추가합니다.

cloud {
    organization = "dev_holic"
    hostname = "app.terraform.io" # Optional; defaults to app.terraform.io

    workspaces {
        name = "goodahn"
    }
  }

※사용하고 있는 terraform 버전이 1.1.0보다 낮은 경우

더보기
backend "remote" {
    hostname = "app.terraform.io"
    organization = "dev_holic"

    workspaces {
      name = "goodahn"
    }
}

 

2. terraform state push --force terraform.tfstate 명령어를 실행한다.

3. 끝!

 

 

이제 terraform 클라우드에 state가 동기화 되었습니다. VCS와 연동해볼까요?

 

terraform cloud & github 연동

제가 github를 주로 사용해서 VCS 연동 github를 예시로 들겠습니다!

※ 만약 처음부터 VCS를 연동하여 워크스페이스를 생성한다면 바로 4번으로 가시면 됩니다!

더보기

1. Settings 탭을 클릭합니다.

Settings 탭 클릭!

2. Version Control 탭을 클릭합니다.

Version Control 탭 클릭!

3. Connect to version control 버튼 클릭!

4. Version control workflow 클릭!

Version control workflow 클릭!

5. Github 버튼 클릭!

Github 아이콘 클릭!

6. 연동된 repository 중 terraform 스크립트가 관리되고 있는 repository 클릭!

7. 화면 하단의 Update VCS settings 버튼 클릭!

  • 혹시 기본 브랜치가 아닌 다른 브랜치와 연동시키고 싶으면 VCS branch 항목에 입력해주시면 됩니다.
Update VCS settings 버튼 클릭!

8. 연동 끝!

 

terraform cloud & github 를 이용한 배포 방법

Terraform Cloud와 github를 이용한 배포 방법입니다.

생각보다 간단하고, 팀에서 프로세스로 가져가기 좋더라구요 :)

  1. Terraform Cloud와 연동된 레포지토리의 브랜치로 switch
  2. 1번의 브랜치에서 업데이트 사항을 적용한 브랜치 생성
  3. github에 푸시 후 PR 진행
  4. PR이 통과되면 Terraform Cloud에 로그인
  5. 배포 대상의 워크스페이스에 접속
  6. 워크스페이스에 진입 후, Runs 탭에 접속하여 승인된 PR 클릭
  7. 화면에 표시되는 Confirm & Apply 버튼을 클릭하여 배포 진행

 

terraform cloud 연동 방법과 사용 방법에 대해서 간단하게 알아봤는데 어떠셨나요?

다음에는 진짜로 terraform을 사용해서 인프라를 구성해보겠습니다!

반응형