Ssoon
Chapter (03) 기본 사용법 - HCL - Local / Output 본문
CloudNet@ 가시다님이 진행하는 Terraform 101 Study 2기
"테라폼으로 시작하는 IaC" (한빛미디어) 도서로 진행!
✅ Local
- variable 과 달리 선언된 모듈 내에서만 접근이 가능하며, variable 처럼 실행 시에 입력받을 수 없습니다.
- 값이나 표현식을 반복적으로 사용할 수 있습니다.
🧿 local 선언
- 블록은 locals로 시작됩니다.
- locals 에 선언한 로컬 변수 이름은 전체 루트 모듈에서 유일해야 합니다.
variable "prefix" {
default = "hello"
}
locals {
name = "terraform"
content = "${var.prefix} ${local.name}"
my_info = {
age = 20
}
my_nums = [1,2,3]
}
🧿 local 참조
- local.<이름> 으로 참조합니다.
- 서로 다른 파일에 선언되어 있더라도 다른 파일에서 참조할 수 있습니다.
✔ sub.tf
locals {
content = "${var.prefix} ${local.name}"
}
✔ main.tf
variable "prefix" {
default = "hello"
}
locals {
name = "terraform"
}
resource "local_name" "abc" {
content = local.content #sub.tf에서 정의된 local값
filename = "${path.module}/abc.txt"
}
- main.tf 의 내용 값으로 local.content를 참조합니다.
- 해당 값은 다른 테라폼 구성 파일(sub.tf) 에 있지만 실행 시점에는 하나의 구성 파일처럼 실행됩니다.
✅ Output
- 테라폼 코드의 프로비저닝 후 결과 속성 값을 확인하는 용도로 사용됩니다.
- 모듈 간, 워크스페이스 간 데이터 접근 요소로 활요할 수 있습니다.
- 루트 모듈에서 사용자가 확인하고자 하는 특정 소스 출력
- 자식 모듈의 특정 값을 정의하고 루트 모듈에서 결과 참조
- 서로 다른 루트 모듈의 결과를 원격으로 읽기 위한 접근 요소
🧿 output 선언
- output 블록에 정의됩니다.
- output 결과에서 리소스 생성 후 결정되는 값 -> 프로비저닝 완료 후 확인
output "instance_ip_addr" {
value = "http://${aws_instance.server.private_ip}"
}
🧿 output 활용
✔ main.tf
resource "local_file" "abc" {
content = "abc123"
filename = "${path.module}/abc.txt"
}
output "file_id" {
value = local_file.abc.id
}
output "file_abspath" {
value = abspath(local_file.abc.filename)
}
- 아직 생성되지 않은 file_id 값은 "know after apply" 로 apply 실행 후 확인할 수 있습니다.
- terraform apply 실행 후 file_id 값을 확인할 수 있습니다.
- terraform output으로 구성 재적용 없이 output 값을 다시 확인할 수 있습니다.
'Terraform 101 Study 2기' 카테고리의 다른 글
Chapter (03) 기본 사용법 - HCL - 조건식 / 함수 / 프로비저너 (0) | 2023.07.10 |
---|---|
Chapter (03) 기본 사용법 - HCL - 반복문 (0) | 2023.07.10 |
Chapter (03) 기본 사용법 - HCL - 데이터 소스 / Variable (0) | 2023.07.10 |
Chapter (03) 기본 사용법 - HCL - Resource (0) | 2023.07.10 |
Chapter (03) 기본 사용법 - HCL - 블록 (0) | 2023.07.04 |
Comments