1
개인작업 워크플로?
Write -> Plan -> Apply
2
여러 사람이 관리하게 되면, 워크스페이스 별로 접근 권한을 관리하고 중앙에서 관리되는 실행 환경을 설계하여 규모에 맞는 워크 플로 설계 필요.
3
Write : 테라폼 코드 작성.
Plan : 계획을 통해 리뷰
Apply : 코드로 실제 인프라를 프로비저닝.
4
다중 작업자 워크플로?
Write (Write, Plan , Apply ) --------Plan (Review) ---Apply(Merge)
Write
여러 작업자의 테라폼 코드가 충돌하지 않도록 VCS 같은 형상관리 도구에 익숙해야 함.
작업 전 미리 원격 저장소의 코드를 받고 깃에서는 브랜치를 활용해 개별적으로 작업.
깃을 사용한다면 작업자 개인 변수는 terraform.tfvars에 선언하고. gitignore에 추가해 개별적으로 테스트할 수 있는 환경을 구성할 수 있다.
구조화 시 사용하는 방식은 디렉터리 기반 격리와 깃 기반의 브랜치 격리가 있다.
Plan
팀원 간 리뷰를 거쳐 변경내역을 확인하고 공통 저장소에 병합한다.
Apply
실제 배포하는 내용.
중요도에 따라 승인이 필요할 수 있다.
5
다수 팀 워크 플로?
Network Team (Write , Plan , Apply ) ------- 네트워크 배포 ----- Remote State 저장소에 저장 ----- Server Team (Write , Plan , Apply ) ------- 서버 배포.
// Remote State 정보를 참조해 Server Team이 두번째 작업을 한다.
테라폼 격리 목표 : State를 분리
1
테라폼은 파일이나 하위 모듈로 구분하더라고 동작 기준은 실행하는 루트 모듈에서 코드를 통합하고 하나의 State로 관리한다.
2
루트 모듈 격리 (파일 / 디렉터리)
그림 8-4
파일 구조 격리
상태파일(tfstate)이 1개
디렉토리 구조 격리
Network 파일에도 상태파일(tfstate) 파일이 있다.
해당 state 참조해 vm생성
7
환경 격리 - 깃 브랜치 ?
서비스의 테스트, 검증, 운영 배포를 위해 테라폼으로 관리하는 리소스가 환경별로 격리되어야 한다면 디렉터리 구조로 분리하는 방안을 고려할 수 있다.
업자가 다수의 환경을 동시에 관리한다면 디렉터리로 구분하더라도 각 디렉터리마다 동일한 깃 저장소의 브랜치별 리모트 구성을 하는 것이 바람직하다.
디렉터리 격리에 깃 브랜치 연결 - 그림 8-6
Project A
-----DEV // DEV Branch
-- main.tf
-- terraform.tfstate
-----QA // QA Branch
-- main.tf
-- terraform.tfstate
-----PROD // main Branch
-- main.tf
-- terraform.tfstate
다음 과정
https://brunch.co.kr/@topasvga/3408
https://gasidaseo.notion.site/gasidaseo/CloudNet-Blog-c9dfa44a27ff431dafdd2edacc8a1863
감사합니다.