Hashicorp에서 제공하는 Terraform Cloud는 Terraform을 사용한 인프라 관리에 최적화된 클라우드 플랫폼 입니다.
Terraform을 오픈소스로 사용할 때 필요한 다양한 기능을 통합 제공 하여 테라폼 작업을 보다 편하게 할 수 있으며, 협업에 유용한 기능을 제공함으로써 여러 사람과 작업할 경우 유용하게 사용할 수 있습니다.
Terraform Cloud을 사용하면서 느낀 좋은 기능 몇가지를 간략하게 소개합니다.
프로덕션 환경에서 상태(tfstate)파일을 보관하기 위해선 보통 AWS의 S3 혹은 Azure의 Blob과 같은 저장소 서비스를 백앤드로 사용하게 됩니다. 이런 원격 백앤드는 tfstate를 안전한게 보관하고, 작업공간이 바뀌어도 지속적으로 테라폼 작업을 할 수 있게 도와줍니다. 다만, 이러한 저장소 서비스는 테라폼 작업에 최적화 되어 있지는 않습니다, 가령 tfstate의 과거 이력을 확인하지 못하며, 파일의 저장 비용이 발생하게 됩니다.
테라폼 클라우드를 사용하게 되면 이러한 원격 백앤드 서비스를 자체적으로 제공하며, 각 실행 마다 생성되는 .tfstate를 스택 처럼 보관 하여 상태 히스토리를 파악할 수 있습니다. 또한, 각 실행(Plan & Apply)을 이력으로 남길 수 있어 과거에 실행한 내용을 로깅 할 수 있는 장점이 있습니다.
테라폼 클라우드가 제공해주는 실행공간에서 테라폼을 작업이 실행되고 플랜 결과를 팀원과 리뷰하고 승인과정을 거칠 수 있습니다. 또한, 배포될 리소스에 대한 비용 예측 기능을 플랜과 함께 출력해 줍니다.
Workspace간 tfstate를 공유하여 서로 참조할 수 있습니다.
만약 Workspace A가 Network 전용 작업공간 이라면, 컴퓨팅 전용인 Workspace B 에서 네트워크 ID를 참조하여 가상머신을 배포 할 수 있습니다.
클라우드 접근에 필요한 시크릿 변수와 배포에 필요한다양한 변수들을 클라우드상에서 안전하게 저장하고 관리할 수 있습니다.
예를 들어, Azure 에 접근하기 위한 Credential을 중앙에서 관리하게 되면, 작업자 마다 Credential을 저장하고 있는 것 보다 안전할 수 있습니다.
Terraform Cloud의 Private Registry를 사용하여 안전하고 체계화된 Module Registry 서비스를 이용할 수 있습니다.
Github으로 관리되던 Module 화된 Repo를 Tag로 Versioning하고 Release 한뒤 Terraform Cloud에 연결 하면, 해당 Repo는 테라폼클라우드에서 자동으로 테라폼 모듈로 인식되어 테라폼 클라우드 상에 Private Registry로 구성됩니다.
별도의 CI/CD Tool 없이, github과 같은 VCS와 연결하여 VCS의 이벤트를 감지하고 이를 통해 자동으로 테라폼 작업을 실행하는 자동화된 워크플로우를 구현할 수 있습니다.
코드로 이루어진 하나의 정책과 같은 기능입니다. 테라폼 배포 전 테라폼 코드의 선언적 내용을 감사하여, 정책에 맞지 않는 코드 혹은 실행이 있다면, 배포를 하지 못하게 합니다. 예를 들면, Apply를 할 수 있는 시간을 정해놓거나, 배포되는 리소스의 비용 한도를 미리 정의해 둘 수 있습니다.
테라폼 클라우드의 특징에 대해 살펴보았습니다. 이외에도 테라폼 작업에 도움이되는 기능들이 많은 테라폼 클라우드는 사용하면 할 수록 많은 장점을 가지고 있다고 생각됩니다.
다음에는 테라폼 클라우드의 초기 환경 설정 및 간단한 튜토리얼을 준비해보겠습니다.
감사합니다.
(이 글은 미디엄에서 22.10.07에 작성한 글입니다.)