본문 바로가기

IT/Devops14

[Terraform] Module 기본 구조 Root Module - only required element - root directory에 위치해야만 함 - nested module과 연계하여 최종 결과를 만들어냄 README (README.md) - 각 module에 대한 설명 LISENCE main.tf, variables.tf, outputs.tf - main.tf: 각 module이 실행되는 entrypoint(main file), 모든 resource가 생성됨. - variables.tf: main에 쓰일 변수에 대한 선언 - outputs.tf: main의 실행 결과, 출력하고 싶은 정보를 선언 Nested modules - 재사용성을 위해 기능별로 module을 나누어 놓음 - root module에서 nested module을 사용.. 2022. 3. 16.
HCL이란 HCL (HashiCorp Configuration Language) - Hashicorp 사에서 개발한 툴을 이용하기 위한 언어 (ex: Terraform, Packer, Vault, 기타 등등...) - JSON 형식을 지원 - Variables를 통해 resource 선언에 필요한 값을 입력 (like functions arguments) - Outputs를 통해 resource 생성 후 필요한 정보를 출력 (like function return values) - Local을 통해 변수로 활용 (like a function's temporary local variables) - string interpolation 지원 ( ${...} ) - string directive ( %{...} ) "He.. 2022. 3. 15.
[Terraform] State, Terraform Cloud Terraform State - terraform으로 생성한 resource들의 정보 및 환경 설정값 Terraform Backend - terraform state가 저장되는 장소 - local에서는 terraform.tfstate에 저장되는데 환경 설정값을 통해, 기존 인프라에서 apply를 여러번 해도 변경된 인프라가 기존 인프라를 교체한다는 것을 알 수 있음 (같은 인프라를 새로 만들지 않음) - 협업을 하는 경우, 각자 local로 terraform code를 가져와 작업하고 push 하는 경우, 인프라가 동일함을 알 수 없어 충돌이 일어나거나 같은 인프라를 다시 만들 수 있음 - 위 협업 문제를 해결하기 위해 Remote Backend에서는 locking이 필요함 - 대표적인 Remote Ba.. 2022. 3. 14.