Ssoon
Chapter (08) - 워크플로 본문
CloudNet@ 가시다님이 진행하는 Terraform 101 Study 2기
"테라폼으로 시작하는 IaC" (한빛미디어) 도서로 진행!
✅ 테라폼 워크플로
- Write
- 코드를 작성
- Plan
- 적용하기 위한 실행 계획을 통해 리뷰
- Apply
- 코드로 인프라를 프로비저닝
✅ 규모에 따른 워크플로
- 각 워크스페이스 별로 접근 권한을 관리
- 중앙에서 관리되는 실행 환경을 설계하여 조직의 복잡성을 해결
- 프로비저닝에 집중하는 규모에 맞는 워크플로 설계
🧿 개인 워크플로
Write
- 프로비전닝하려는 목적에 따라 코드 작성
- 반복적인 사용성 고려
- 인수에 할당되는 값을 입력 변수화
- 반복적인 구조가 발생하는 경우 리소스 단위별로 반복문 사용? 다수의 리소스를 모듈화? 결정
Plan
- terraform fmt 명령을 통해 코드 형태 포맷팅, 변경 리소스 리뷰
- tfsec 이나 terrascan 같은 보안 취약성 점검 툴 활용
Apply
- 실제 인프라를 프로비저닝
- VCS 에서 코드 병합
🧿 다중 작업자 워크플로
Write
- 작업자는 작업 전에 미리 원격 저장소의 코드를 받고 Git 에서 branch 를 활용 개별적으로 작업
- 개인의 워크플로의 변수화와 패스워드 같은 민감 데이터가 포함되지 않도록 설계
- 개인 작업 환경에서 사용되는 변수는 공유하지 않음
- 작업자 개인 변수 -> terraform.tfvars 에 선언 -> .gitignore 에 추가 -> 개별 테스트 환경 구성
- 개별 작업자는 작은 단위의 개별 워크플로(Write > Plan > Apply) 를 반복
- 프로비저닝 대상 환경을 검증과 운영 환경으로 구성으로 구조화 -> 디렉터리 기반 격리 / 깃 기반 브랜치 격리
Plan
- 둘 이상의 작업자는 프로비저닝 이전에 리뷰를 통해 변경 내역을 확인 -> 공동 저장소에 병합
- 테라폼의 Plan 결과를 풀 리퀘스트 단계에 같이 제공 -> 영향을 받는 서비스와 중단 서비스 예측이 쉬어짐
Apply
- 코드가 최종 병합 -> 인프라 변경이 수행됨을 알리고 변경 대상 환경의 중요도에 따라 승인 필요
- 관리 단위 -> R&R, 서비스, 인프라 종류 등으로 구분
🧿 다수 팀의 워크플로
- 프로비저닝 대상은 하나이지만 관리하는 리소스가 분리
- 단일 팀의 워크플로가 유지 -> 공유해야 하는 핵심 워크플로 필요
Write
- 대상 리소스가 하나의 모듈에서 관리되지 않고 R&R 에 의해 워크스페이스가 분리
- 서로 다른 워크스페이스에서 구성된 리소스 데이터를 권한이 다른 팀에서 공유하기 위해 -> 저장된 State 접근 권한 제공 -> output 를 통해 공유 대상 데이터 노출
- 서로 다른 워크스페이스에서의 변경 사항을 데이터 소스로 받아 오는 terraform_remote_state 또는 별도 KV_store 를 활용하는 코드 구성 요구
- 관리 주체가 다른 곳에서 생긴 변경 사항의 영향력 최소화 -> 리모트 데이터 소스의 기본값을 정의하거나 코드적인 보상 로직을 구현
Plan
- 병합을 승인하는 단계에 영향을 받는 다른 팀의 작업자고 참여
Apply
- 프로비저닝 실행과 결과에 대한 안내가 관련 팀에 통보 -> 파이프라인 구조에서 자동화
- 실행 후 영향도가 여러 팀이 관리하는 리소스에 전파 가능성 -> 코드 롤백 훈련 필요
- 생성된 결과와 다른 워크스페이스에서 참조되는 output 값의 업데이트된 내용을 다른 팀이 확인하는 권한 관리 필요
'Terraform 101 Study 2기' 카테고리의 다른 글
Chapter (08) - 워크플로 - 격리 구조 (0) | 2023.08.09 |
---|---|
Chapter (07) - 협업 (0) | 2023.07.28 |
Chapter (06) Module - 사용 형식 / 소스 관리 (0) | 2023.07.24 |
Chapter (06) Module - 작성 기본 원칙 / 모듈화 (0) | 2023.07.24 |
Chapter (05) State - 워크스페이스 (0) | 2023.07.19 |
Comments