Ssoon

Chapter (03) 기본 사용법 - HCL - Local / Output 본문

Terraform 101 Study 2기

Chapter (03) 기본 사용법 - HCL - Local / Output

구구달스 2023. 7. 10. 23:37
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 값을 다시 확인할 수 있습니다.

 

Comments