본문 바로가기
AWS/Part 4. Ch02 테라폼을 이용한 인프라 관리

CH02_17. 테라폼 워크스페이스 디렉토리 구성 전략

by Engineer-Lee 2022. 6. 4.
반응형

아래 링크에서 테라폼 공식 convention으로 구성된 디렉토리 구조를 보자

https://github.com/tedilabs/fastcampus-devops/tree/main/2-terraform/15-directory-structure

 

GitHub - tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료

🚀 패스트캠퍼스 데브옵스 초격차 코스 자료. Contribute to tedilabs/fastcampus-devops development by creating an account on GitHub.

github.com

 

구성하고자 하는 리소스(ex: nacl.tf, nat.tf, routes.tf, subnet.tf, vpc.tf, vpc endpoints.tf 등) 파일과

config.yaml

outputs.tf

remote-states.tf

terraform.auto.tfvars

terraform.tf

variables.tf

versions.tf

.terraform-version 파일들로 이루어져 있다.

 

먼저 versions.tf 파일을 보면 terraform 블록을 통해 required_version과 required_providers를 설정했다.

required_version= "~> 1.0" 의 의미는 이 파일을 실행시키기 위한 테라폼 최소 버전을 나타낸다.

 

 

variables.tf 파일에서는 워크스페이스를 구성할 때 "config_file"이라는 변수 하나만 정의해서 사용하고 있다.

이는 YAML 파일의 경로를 지정해준다.

 

 

 

terraform.tf 파일에서는 테라폼 워크스페이스에 대한 설정이 있다.

이 워크스페이스는 remote backend를 사용해서 테라폼 클라우드에 연결했다.

 

그 밑에는 지역변수로 aws의 계정 목록으로 "fastcampus"라는 계정 하나가 있고

context와 config는 config_file 이라는 variable에 YAML 파일의 경로가 들어있고

file이라는 함수를 통해 파일을 읽고 yamldecode 함수로 yaml코드를 HCL 오브젝트로 변환한다.

 

 

terraform.auto.tfvars 파일에서는 자동으로 로딩되는 테라폼 변수에 대한 데이터가 config.yaml 파일에 있으므로 파일 경로를 적었다.

 

 

remote-state.tf 파일에서는 멀티 워크스페이스 간의 의존성을 관리해준다.

data "terraform_remote_state" 블록에서 각각의 테라폼 remote states 블록을 정의하기보다는 for_each문을 통해 리스트로 가져오게 하였다.

 

 

 

마지막으로 .terraform-version 파일에서는 해당 워크스페이스에서 사용하는 테라폼 버전을 고정시킨다.

반응형