✔️ 출력 값 (Output Value)
출력값을 지정해 자주 확인해야 하는 리소스의 값을 확인할 수 있다.
인스턴스의 퍼블릭 ip나 EIP ip를 알고싶을 때는 어떻게 해야 할까 ?
terraform state show aws_eip.app_server_eip
← 해당 명령어로 확인할 수 있다.
하지만, 매번 terraform.tfstate 파일을 열어 보거나 terraform show를 통해서 보는 것은 번거로운 작업이다.
이러한 값들을 출력하기 위해 사용하는 것이 Output 변수이다.
사용 방법은 Input 변수와 유사하다. Output이라는 블록을 지정하고 Output 변수를 선언한다.
value에서 출력하기를 원하는 리소스의 값을 참조한다.
Outputs :
해당 포맷으로 값이 출력된다.
예제
output "instance_ip_addr" {
value = aws_instance.server.private_ip
}
output.tf
output "app_server_elastic_ip" {
value = aws_eip.app_server_eip.public_ip
}
apply 실행
Outputs:
또한 terraform output
하면 해당 명령어로 항상 Outputs을 볼 수 있다.
아래와 같이 선언하면 public_ip와 eip를 확인할 수 있다.
output "app_server_elastic_ip" {
value = aws_eip.app_server_eip.public_ip
}
output "app_server_public_ip" {
value = aws_instance.app_server.public_ip
}
추가로 ouput block 선언시 sensitive 인자를 통해 출력값을 숨길 수도 있다.
✔️ 로컬 값 (Local Value)
새로운 변수를 정의하거나 기존의 값을 바꿀 수 있다.
테라폼 문서의 Input variable에서보면
- Input variables are like function arguments.
- Output values are like function return values.
- Local values are like a function's temporary local variables.
- 입력 변수는 함수의 인자
- 출력 변수는 함수의 리턴 값
- 로컬 변수는 함수의 임시 로컬 변수
로컬 값은 테라폼 코드 내부에서만 사용하기위한 변수라고 생각하면 된다.
locals 라는 블록을 사용한다.
locals {
service_name = "forum"
owner = "Community Team"
}
참조할 때는 다음과 같이 사용한다.
resource "aws_instance" "example" {
# ...
tags = local.common_tags
tags = local.service_name # == forum
}
로컬 값은 어떻게 응용하는가 ?
우리가 aws 리소스를 만들 때 태그를 붙이는 이유는 나중에 검색에 용이하게 하기 위해서이다.
만약 동시에 생성되는 리소스들에 동일한 태그를 붙이고 싶을 때 로컬 변수를 사용할 수 있다.
변수를 먼저 정의해보자variable.tf
variable "project_name" {
description = "Project Name"
type = string
default = "My_First_Project"
}
variable "project_environment" {
description = "Project Environment"
type = string
default = "Local Development"
}
두개의 변수를 선언한다.
태그에는 기본적으로 아래와 같이 딕셔너리가 들어가지만 로컬 변수를 사용하면 이렇게 할 필요가 없다.
tags = {
Name = var.instance_name
Environment = "Terraform"
}
local.tf
locals {
common_tags = {
Name = "My Terraform"
project_name = var.project_name
project_env = var.project_environment
}
}
common_tags 라는 로컬 값을 만들고 내부에 다음 키들을 선언한다.
main.tf에서 리소스의 태그를 tags = local.common_tags 라고 선언하면 로컬 값을 참조한다.
+ tags = {
+ "Name" = "My Terraform"
+ "project_env" = "Local Development"
+ "project_name" = "My_First_Project"
}
aws 콘솔에서 태그 정보를 확인하면 부여된 태그 정보를 확인할 수 있다.
이러한 방식은 서비스의 묶음에 일괄적으로 태그를 부여해 검색하기에 용이하다.
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] 프로비저너 (Provisioner) (0) | 2022.04.22 |
---|---|
[Terraform] ec2 인스턴스 생성시 사용자 데이터 실행하기 (0) | 2022.04.22 |
[Terraform] 연관된 변수들을 연쇄적으로 참조하기 (0) | 2022.04.22 |
[Terraform] 입력 변수 (Input Variable) (0) | 2022.04.21 |
[Terraform] 리소스 생성 순서와 의존성 (0) | 2022.04.21 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!