KJH
Terraform GitOps(/w Atlantis) 본문
시스템 작업을 로컬에서 CLI를 통해 하는 것은 심장 떨리는 일이며 비록 간단한 작업이라도 apply, destroy는 주저하게 된다. 0%의 휴먼에러를 만들 순 없지만 최소화 하는 노력을 하는 방향이 맞는 듯 하다.
Atlantis
AtlantisTerraform Pull Request Automation Running Terraform Workflows with Ease
www.runatlantis.io
설치는 기본형으로 하되 repoConfig에 workflow만 수정하면 된다.
구조
설정 방법
아래는 Sample Config이다.
terraform Git Repo를 id에 맞게 수정을 하고, branch를 지정한다.
id와 workflow를 매핑하고, 아래에서 workflow를 작성한다.
Plan
atlantis plan cli를 할때 동작시킬 workflow를 써내려가는 곳이다.
필요한 환경 변수가 많을땐 mutienv로 한번에 적어둘 수 있다. key=value 형태의 stdout을 발생시키면 파싱해서 넣어준다.
env를 명시적으로 config에 넣는 방법도 있다.
terraform 작업 전에 init script들을 실행시키고, plan에 extra args를 넣어줘서 실행 시키는것이 가능하다.
Apply
atlantis apply cli를 할때 동작시킬 workflow이다.
plan 결과물로 apply를 동작시키기에 특별하게 추가 할건 없었다.
repoConfig: |
---
repos:
- id: /.*gitRepoName.*/
branch: "/^infra$/"
workflow: infra
apply_requirements: []
allowed_overrides: []
allow_custom_workflows: false
workflows:
infra:
plan:
steps:
- multienv:
command: /etc/bash/env-base.sh
shell: bash
- env:
name: TEST
value: "123"
- run: bash /etc/bash/login.sh
- run: bash /etc/bash/tls-certs.sh
- init
- plan:
extra_args: [
"-var", "test=$TEST"
]
apply:
steps:
- apply
PR을 등록하면 plan을 알아서 실행해준다.
UI에서 plan의 로그를 볼 수 있다.
※ plan 로그 양이 많으면 PR에는 나오지 않을 수 있다. 65000자 까지 지원한다고 본거 같음
plan이 마음에 든다면 apply는 직접 실행해야 한다.
UI나 설정 방법들이 직관적이며 심플하다. helm chart에서 모든 작업들이 가능하게 되어 있어서 좋았다.
정식 출시를 한 상태는 아니라 다른 쟁쟁한 툴들이 나올 수 있지만 Ops 환경을 적용 해놓는다면 갈아타는 것은 수월할 것이라 생각한다.
'DevOps' 카테고리의 다른 글
Jmeter websocket 테스트 (/w nginx) (0) | 2025.04.18 |
---|---|
Github 특정 Tag를 Fork하기 (0) | 2025.04.16 |
Nginx Ingress Controller OCSP 설정 (0) | 2025.04.13 |
Docker Compose Active-Standby 구성 (w/ nginx) (0) | 2025.03.14 |
Azure Virtual Network Peering (0) | 2025.01.14 |