- [Terraform]테라폼 모듈(module) 작성 방법 목차
Terraform Module 작성 방법
module은 root module과 child module 로 나누어집니다.
root module : terraform 커맨드가 실행 되고 있는 module
child module : root module에서 리소스를 생성하기 위해 참조하고 있는 module block
child module 작성 방법
먼저 파일구조입니다.
테라폼은 디렉토리에 있는 모든 *.tf 파일들을 읽습니다.
테라폼 컨벤션으로 보통 위 사진과 같이 정의합니다.
versions.tf : provider / module 의 버전 의존성
variables.tf : variable 관련
outputs.tf : output 관련
main.tf : resources/data/module/local
README.md
version.tf
해당 모듈을 사용하기 위해서 최소 버전 0.15 버전 이상의 테라폼 버전이 필요합니다.
이 테라폼 모듈을 사용하기 위해 필요한 aws 프로바이더의 모듈 버전 정보입니다.
variables.tf
aws의 password_policy 정책에 맞는 type과 default 값을 보실 수 있습니다.
main.tf
"aws_caller_identity" 를 이용하면 aws의 account_id를 갖고 올 수 있습니다.
aws provider의 resource를 활용해서
"aws_iam_account_password_policy"는 variables.tf 파일에서 정의한 변수를 활용합니다.
그럼 이렇게 만들어진 리소스들에 대해 module이 output을 출력해줍니다.
output.tf
output.tf에서는 참조 가능한 속성들을 작성해줘야합니다.
account module에서는 account의 id를 수행하는 id와 name 편의적인 목적인 signing_url, password 정책 등을 작성했습니다.
로컬 소스를 활용
Account 상위 root의 main.tf를 보면 (account 폴더의 main.tf와는 다릅니다.)
프로바이더 설정 후 module block을 통해 source="./account" 와 같이 source='상대 경로' 와 같이 module을 사용할 수 있습니다.
이 외에도 다양한 github,테라폼 레지스트리, 테라폼 클라우드 등 모듈들을 설정할 수 있습니다.
name에서는 사용할 모듈의 별칭을 적어주고 password_plicy로 안에 내용과 같은 설정을 갖도록 설정하였습니다.
또한 root output에서 module의 속성 레퍼런스로 참조하기(output으로 참조하는 것을 의미) 위해서는 해당 module이 output으로 설정한 값들만 가져올 수 있습니다.
(즉, account의 output에서 설정한 값들만 가져올 수 있다는 의미)
'AWS' 카테고리의 다른 글
[AWS] Nextjs cloudfront S3 배포 시 html 확장자 제거 (feat. lambda 함수 이용) (0) | 2022.04.08 |
---|---|
[Terraform]테라폼(terraform)state 관리(local,terraform cloud,s3) (0) | 2022.03.02 |
[AWS]로드밸런서(load balancer)란? (0) | 2022.03.02 |
[AWS]VPC Endpoint란?(feat.bastion(바스티온) 접속) (0) | 2022.02.28 |
[AWS]AWS 네트워크 구조(feat.VPC,Subnet,NACL,Security Group,Router) (2) | 2022.02.25 |