brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Aug 17. 2023

13. 테라폼- 워크플로


<1> 테라폼 워크 플로

<2> 격리 구조



<1> 테라폼 워크 플로


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이 두번째 작업을 한다.




<2> 격리 구조


테라폼 격리 목표 : 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


다음은 주말 CloudNet 테라폼 스터디 내용 참고하여  정리한 부분입니다.

https://gasidaseo.notion.site/gasidaseo/CloudNet-Blog-c9dfa44a27ff431dafdd2edacc8a1863  



감사합니다.



                    

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari