본문 바로가기

♻ Terraform(테라폼)/Terraform Modules

(6)
Terraform 리소스 값을 사용하기 위한 Module간 관계 정리 코드는 아래와 같다.# 사용되는 Flow를 블로그에 정리.module "subnet" { source = "./modules/subnet" # 서브넷 모듈 소스 경로 vpc_id = module.vpc.vpc_id # VPC 모듈에서 VPC ID 가져오기 route_table_id = module.vpc.route_table_id # VPC 모듈에서 라우트 테이블 ID 가져오기}module.vpc.route_table_id와 module.vpc.vpc_id 값을 가져오는 흐름은 다음과 같습니다:modules/vpc/main.tf 파일에서 VPC와 라우트 테이블 리소스 정의aws_vpc.main 리소스는 VPC를 생성하고, aws_route_table.main 리소스는 라우트 테이블을 생성합니다..
terraform module (테라폼 모듈의 실행 Flow) # 현재 폴더의 구성은 아래와 같다.├── main.tf└── modules ├── ec2 │ └── main.tf ├── key-pair │ └── main.tf ├── nat-gateway │ └── main.tf ├── security-group │ └── main.tf ├── subnet │ └── main.tf └── vpc └── main.tf# Terraform module의 실행 Flow 정리Terraform은 모듈 간의 의존성을 자동으로 관리합니다. main.tf 파일에서 vpc_id와 route_table_id를 module.vpc에서 가져오도록 설정했기 때문에, Terraform은 vpc 모듈을 ..
Terraform Module 구조 설명 # Terraform Module 구조 설명 - Terraform Module 구조를 확인하는 방법 - 아래의 명령어로 현재의 구조를 확인할 수 있다. tree . - tree. 명령어를 실행한 결과는 아래와 같다. 아래 구조를 잠시 설명하자면, Terraform_seung라는 폴더가 있고 그 밑에 다른 폴더는 생략하고 modules라는 폴더가 존재, 해당 폴더 아래에 module.ec2와 module.vpc가 존재하는 구조라고 볼 수 있다. - 아래의 링크를 참조하여 모듈을 왜 사용하는지 확인한다. 2022.04.15 - [Terraform(테라폼)/Terraform Modules] - 모듈을 활용한 재사용 가능한 인프라 생성 모듈을 활용한 재사용 가능한 인프라 생성 테라폼의 핵심은 바로 모듈을 활용한..
Terraform 모듈 사용 시 주의 할점 (file path 관련) # Terraform 에서 모듈 사용 시 file path 와 관련하여 설명 - 아래의 내용을 보면 private_ec2_postgresql.tf 파일에서 사용하는 private_key 파일의 패스 파일의 주소가 입력 되어 있다. 근데 실제로 module을 사용하여 작업을 수행하면 파일이 존재하지 않는다는 메세지가 나온다. 이유는 간단한데, 모듈은 모듈의 root 경로에서 파일을 찾고, private_ec2_postgresql.tf는 해당 파일이 존재하는 폴더의 경로에서 파일을 찾기 때문에 파일을 참조하는 위치가 다르기 때문이다. - 매우 당연한 이야기 인데, 그래서 만약에 root 경로에서 실행하는 것이 아니고, 해당 모듈에서 직접 terraform 리소스 생성을 실행할 경우 위와 같이 private_..
Terraform module을 활용 방법 설명 # Terraform modules 관련 사이트 https://registry.terraform.io/modules/terraform-aws-modules/security-group/aws/latest/submodules/http-80 Terraform Registry registry.terraform.io 1. 모듈의 사용방법 - 테라폼의 모듈을 잘 설명한 그림은 아래와 같다. - 아래의 그림처럼 모듈은 재사용성을 극대화 시킨 사용방법이다. 2. 모듈의 사용방법 가장 중요한 결론! 가장 중요한 결론은 위의 그림에서도 설명했 듯이 input 값과 output 값이라고 볼 수 있다. input 값은 Root 모듈의 입력 변수로 선언되고, 해당 변수를 받는 곳은 자식 모듈의 var.리소스 값으로 선언되어 있..
모듈을 활용한 재사용 가능한 인프라 생성 테라폼의 핵심은 바로 모듈을 활용한 재사용 이라고 할 수 있다. - 모듈의 간단한 사용 방법은 아래와 같다. 만약 Root 폴더에 asg.tf 라는 파일이 존재하고 Root 폴더에 asg.tf에 정의된 값을 활용하여 module.asg 폴더 안에 main.tf에 정의된 리소스를 실행시킨다고 가정할 경우 아래의 flow를 따라서 동작한다. (매우 간단하지만 실제로 해보지 않으면 헷갈림, 머리가 나빠서 그런거 같기도...) Root폴더의 실행파일.tf → 실행하는 Resource의 variables.tf와 맵핑 → 실행하는 Resource의 main.tf의 var.{resource_name} 으로 선언 되어 있어야 한다. - 그리고 asg.tf 파일의 내용을 보면 아래와 같다. module "asg" { s..