연재 시리즈

테라폼으로 EKS만들기 프로젝트 3-4편 - 테라폼 코드 실행 순서

악분 2023. 7. 2. 10:48
반응형

영상: https://youtu.be/69rHkicuM_E

 

테라폼 코드 실행 순서

테라폼은 코드를 분석하여 코드 실행순서를 설정합니다. 코드 실행 선후관계가 없다면 코드는 병렬로 동시 실행됩니다. 반대로 선후관계가 있는 코드는 순서대로 실행됩니다.

 

실행 순서 원리

테라폼은 코드 실행순서를 종속성 그래프(resource dependency graph)로 표현합니다. 종속성 그래프는 terraform graph명령어로 생성할 수 있고 graphviz뷰어로 볼 수 있습니다.

 

예제 

예제를 실습하면서 테라폼 종속성 그래프를 만들어보겠습니다. 예제는 git 저장소에 dependency폴더에 있습니다.

git clone https://github.com/choisungwook/terraform_practice.git example
cd example/dependency

 

main.tf파일을 보면 first, second, third resource블럭이 있습니다. first와 second는 선후관계가 있습니다. second.condtent가 first.content를 참조하기 때문입니다. third는 선후 관계가 없습니다.

결국, main.tf가 실행되면 first resource가 실행된 후에 second resource가 실행됩니다. 그리고 third는 선후관계가 없으므로 first resource가 실행될 때 병렬로 실행됩니다.  아래 그림에서 ①, ②은 동시에 실행되고 ③은 ①과 동시에 실행됩니다.

 

terraform graph를 사용하면 실행순서를 추출할 수 있습니다. 확장자는 .dot파일형식입니다.

terraform graph

 

시각화

graphviz 뷰어를 사용하면 terraform graph내용을 시각화 할 수 있습니다. visual studio code extension에서 graphviz 뷰어를 쉽게 설치 가능합니다

 

리다이렉션을 이용하여 terraform graph결과를 파일로 저장합니다. 그리고 graphviz 뷰어로 추출한 파일을 시각화합니다. 추출한 파일을 열고 오른쪽 위 graphviz버튼을 클릭하면 뷰어가 열립니다.

terraform graph > graph.dot

 

선후관계에 따라 종속성 그래프가 그려졌습니다. first resource와 second resource는 선후 관계가 있어서 실행순서가 설정되었습니다. third resource는 선후관계가 없어서 first resource와 같이 병렬로 실행됩니다.

반응형