Terraform Cloud #1. Features

hyukjun·2022년 12월 10일
0

Terraform Cloud

목록 보기
1/3
post-thumbnail

Terraform Cloud ?

Terraform Cloud Workspace

Hashicorp에서 제공하는 Terraform Cloud는 Terraform을 사용한 인프라 관리에 최적화된 클라우드 플랫폼 입니다.

Terraform을 오픈소스로 사용할 때 필요한 다양한 기능을 통합 제공 하여 테라폼 작업을 보다 편하게 할 수 있으며, 협업에 유용한 기능을 제공함으로써 여러 사람과 작업할 경우 유용하게 사용할 수 있습니다.

Basic Concept

  1. Organization → Workspace:
    개인마다 여러 조직을 가질 수 있으며, 조직 아래 작업공간인 Workspace가 있습니다. Workspace는 테라폼의 작업 공간이 되며, 로컬 환경과 비교하면 테라폼 실행시 루트가 되는 로컬 디렉토리 단위와 같습니다. Workspace간의 state 정보를 참조하거나 다른 Workspace의 이벤트를 실행 트리거로 삼을 수 도 있습니다.
  2. Team Management:
    테라폼 클라우드는 팀 관리 기능을 통해 다양한 사람을 조직에 초대하여 팀을 구성하고, 협업할 수 있으며, 팀 혹은 개인별로 적절한 권한을 부여 할 수 있는 RBAC 기능을 지원합니다.
  3. Workflow:
    테라폼 클라우드는 기본적으로 아래 다이어그램과 같이 사용할 수 있습니다.Github과 같은 VCS 에서 terraform 코드를 관리하고 사용합니다. 다만 테라폼의 실행환경과 배포에 필요한 Credential 그리고 .tfstate를 위한 백앤드는 tfcloud에서 중앙화 되며, 각 개인이 실행하는 Apply 작업은 Cloud 상에서 같은 팀과 리뷰를 거치며 진행할 수 있습니다.

TFC Workflow diagram

Key Features

Terraform Cloud을 사용하면서 느낀 좋은 기능 몇가지를 간략하게 소개합니다.

1. Remote Backend (Remote state storage) & Run history

프로덕션 환경에서 상태(tfstate)파일을 보관하기 위해선 보통 AWS의 S3 혹은 Azure의 Blob과 같은 저장소 서비스를 백앤드로 사용하게 됩니다. 이런 원격 백앤드는 tfstate를 안전한게 보관하고, 작업공간이 바뀌어도 지속적으로 테라폼 작업을 할 수 있게 도와줍니다. 다만, 이러한 저장소 서비스는 테라폼 작업에 최적화 되어 있지는 않습니다, 가령 tfstate의 과거 이력을 확인하지 못하며, 파일의 저장 비용이 발생하게 됩니다.

테라폼 클라우드를 사용하게 되면 이러한 원격 백앤드 서비스를 자체적으로 제공하며, 각 실행 마다 생성되는 .tfstate를 스택 처럼 보관 하여 상태 히스토리를 파악할 수 있습니다. 또한, 각 실행(Plan & Apply)을 이력으로 남길 수 있어 과거에 실행한 내용을 로깅 할 수 있는 장점이 있습니다.

4. Remote Plan & Apply, Cost Estimate

테라폼 클라우드가 제공해주는 실행공간에서 테라폼을 작업이 실행되고 플랜 결과를 팀원과 리뷰하고 승인과정을 거칠 수 있습니다. 또한, 배포될 리소스에 대한 비용 예측 기능을 플랜과 함께 출력해 줍니다.

3. Remote State (Workspace 간 State 공유)

Workspace간 tfstate를 공유하여 서로 참조할 수 있습니다.

만약 Workspace A가 Network 전용 작업공간 이라면, 컴퓨팅 전용인 Workspace B 에서 네트워크 ID를 참조하여 가상머신을 배포 할 수 있습니다.

4. Secret & Variable Management

클라우드 접근에 필요한 시크릿 변수와 배포에 필요한다양한 변수들을 클라우드상에서 안전하게 저장하고 관리할 수 있습니다.

예를 들어, Azure 에 접근하기 위한 Credential을 중앙에서 관리하게 되면, 작업자 마다 Credential을 저장하고 있는 것 보다 안전할 수 있습니다.

5. Private Registry

Terraform Cloud의 Private Registry를 사용하여 안전하고 체계화된 Module Registry 서비스를 이용할 수 있습니다.

Github으로 관리되던 Module 화된 Repo를 Tag로 Versioning하고 Release 한뒤 Terraform Cloud에 연결 하면, 해당 Repo는 테라폼클라우드에서 자동으로 테라폼 모듈로 인식되어 테라폼 클라우드 상에 Private Registry로 구성됩니다.

6. VCS Connection (gitOps)

별도의 CI/CD Tool 없이, github과 같은 VCS와 연결하여 VCS의 이벤트를 감지하고 이를 통해 자동으로 테라폼 작업을 실행하는 자동화된 워크플로우를 구현할 수 있습니다.

7. Sentinel as Code

코드로 이루어진 하나의 정책과 같은 기능입니다. 테라폼 배포 전 테라폼 코드의 선언적 내용을 감사하여, 정책에 맞지 않는 코드 혹은 실행이 있다면, 배포를 하지 못하게 합니다. 예를 들면, Apply를 할 수 있는 시간을 정해놓거나, 배포되는 리소스의 비용 한도를 미리 정의해 둘 수 있습니다.

마치며

테라폼 클라우드의 특징에 대해 살펴보았습니다. 이외에도 테라폼 작업에 도움이되는 기능들이 많은 테라폼 클라우드는 사용하면 할 수록 많은 장점을 가지고 있다고 생각됩니다.

다음에는 테라폼 클라우드의 초기 환경 설정 및 간단한 튜토리얼을 준비해보겠습니다.

감사합니다.
(이 글은 미디엄에서 22.10.07에 작성한 글입니다.)

profile
slow and steady

0개의 댓글