하나의 워크스페이스는 모듈이라고 할 수 있다.
현재 테라폼 커맨드가 실행되고 있는 모듈이 root 모듈이고 root 모듈에서 참조하는 모듈이 child 모듈이다.
이번에는 다른 테라폼 워크스페이스에서 모듈 블록을 이용하여 참조할 수 있는 child 모듈의 작성 방법을 알아보자
https://github.com/tedilabs/fastcampus-devops/tree/main/2-terraform/13-module
GitHub - tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료
🚀 패스트캠퍼스 데브옵스 초격차 코스 자료. Contribute to tedilabs/fastcampus-devops development by creating an account on GitHub.
github.com
account 디렉토리는 child 모듈로써 사용될 것이다. account 디렉토리 내의 outputs.tf는 output,
variables.tf는 variable, versions.tf는 provider와 module 버전 의존성에 관한 코드가 있다.
먼저 versions.tf 파일을 보면 테라폼과 aws 모듈의 버전이 명시되어 있다.
variables.tf 파일의 코드를 보면 name과 password_policy라는 두 가지 변수가 정의되어 있다.
variable "name"은 AWS 계정을 만들고 나면 숫자 형식의 account_id가 생성되는데 이를 문자열 타입으로 별칭을 만들기 위한 코드이고
variable "password_policy" 는 비밀번호의 정책 설정에 관한 코드이다.
이제 main.tf 파일을 보자
data "aws_caller_identity" 를 통해 aws 계정(account_id)을 가져올 수 있고
resource "aws_iam_account_alias" 로 전에 설정한 계정 id의 별칭을 부여한다.
resource "aws_iam_account_password_policy" 에서는 변수로 받았던 비밀번호 정책에 관한 값들을 대입해준다.
root 모듈에서 모듈 블록을 통해서 소스로 child 모듈을 가리키게 되면 child 모듈의 attribute를 참조해야 하는데 그러기 위해서는 outputs.tf에서 참조 가능한 attribute를 작성해야 한다.
마지막으로 README.md 파일에서 해당 모듈의 설명을 확인할 수 있다.
이제 root 모듈의 main.tf 파일을 보자
module "account" 를 통해 source가 account라는 하위 디렉토리로 설정해서 child 모듈을 사용한다.
output 블록에서는 value들을 모두 module.account.[속성 값] 들로 이루어져 있다.
'AWS > Part 4. Ch02 테라폼을 이용한 인프라 관리' 카테고리의 다른 글
CH02_17. 테라폼 워크스페이스 디렉토리 구성 전략 (0) | 2022.06.04 |
---|---|
CH02_16. 테라폼 terraform_remote_state 데이터소스 활용 (0) | 2022.06.04 |
CH02_13. 테라폼 워크스페이스 관리 (0) | 2022.06.03 |
CH02_12. 테라폼 리소스 강제 교체하기 (taint & untaint) (0) | 2022.06.03 |
CH02_11. 테라폼 상태 관리 (0) | 2022.06.03 |