소개
Terraform에서 출력값(output values)은 리소스가 배포된 후 해당 리소스에 대한 유용한 데이터를 외부에 노출하는 방법입니다. 이는 Terraform 모듈의 반환값과 유사하며, 서버의 IP 주소, 데이터베이스 연결 문자열, 파일 경로와 같은 정보를 쉽게 조회하는 데 사용됩니다. 이를 통해 명령줄에서 정보를 간편하게 확인할 수 있으며, 다른 Terraform 구성에서 해당 값을 참조할 수도 있습니다.
이번 실습에서는 출력값을 정의하고, 적용하며, 확인하는 방법을 배웁니다. 먼저 로컬 파일을 생성하는 기본적인 Terraform 구성으로 시작하여, 해당 파일의 경로를 노출하는 출력 블록을 추가해 보겠습니다.
출력 정의를 위한 outputs.tf 파일 생성
이번 단계에서는 출력 정의를 위한 전용 파일을 생성합니다. 출력 블록은 어떤 .tf 파일에나 배치할 수 있지만, outputs.tf라는 별도의 파일에 모아두는 것이 일반적인 관례이자 모범 사례입니다. 이렇게 하면 구성을 체계적으로 관리할 수 있고 프로젝트의 모든 출력값을 쉽게 찾을 수 있습니다.
모든 작업은 터미널의 기본 디렉토리인 ~/project에서 진행됩니다.
먼저, 미리 생성된 main.tf 파일을 확인해 보겠습니다.
ls -l
main.tf 파일과 .terraform 디렉토리가 보일 것입니다.
total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf
이제 touch 명령어를 사용하여 outputs.tf 파일을 생성합니다.
touch outputs.tf
이 명령어는 현재 디렉토리에 outputs.tf라는 빈 파일을 생성합니다. 파일을 다시 나열하여 생성을 확인할 수 있습니다.
ls -l
이제 파일 목록에 outputs.tf가 포함된 것을 볼 수 있습니다.
total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf
-rw-rw-r-- 1 labex labex 0 Oct 15 12:39 outputs.tf
local_file 파일명에 대한 출력 정의
이번 단계에서는 outputs.tf 파일에 출력 블록을 정의합니다. 출력 블록은 Terraform 구성에 대한 단일 출력값을 선언합니다.
출력 블록의 기본 구문은 다음과 같습니다.
output "NAME" {
## 인수는 여기에 작성합니다
}
여기서 NAME은 출력값의 이름을 지정하는 문자열이며, 나중에 이 이름을 사용하여 값을 조회하게 됩니다.
nano 편집기로 outputs.tf 파일을 열고 첫 번째 출력 블록을 추가해 보겠습니다.
nano outputs.tf
이제 파일에 다음 코드를 추가합니다. 출력값의 이름은 file_path로 지정하겠습니다.
output "file_path" {
}
코드를 추가한 후, Ctrl+X를 누르고 Y, 마지막으로 Enter를 눌러 nano를 저장하고 종료합니다.
아직 value 인수가 없기 때문에 이 블록은 특별한 기능을 수행하지 않습니다. 다음 단계에서 이를 추가하겠습니다.
출력 블록에서 리소스 속성 참조
이번 단계에서는 출력 블록에 표시할 값을 지정하여 유용하게 만들어 보겠습니다. 이는 출력 블록 내부의 value 인수를 사용하여 수행됩니다. 값은 일반적으로 구성에 정의된 리소스의 속성에 대한 참조입니다.
리소스 속성을 참조하는 구문은 <RESOURCE_TYPE>.<RESOURCE_NAME>.<ATTRIBUTE>입니다.
main.tf 파일에는 다음과 같이 정의된 리소스가 있습니다.
resource "local_file" "example" {
## ...
}
local_file 리소스에는 관리하는 파일의 경로를 담고 있는 filename이라는 속성이 있습니다. 이 속성을 참조하려면 local_file.example.filename을 사용합니다.
이제 출력 블록에 이 참조를 추가해 보겠습니다. nano로 outputs.tf를 다시 엽니다.
nano outputs.tf
아래와 같이 value 인수를 포함하도록 파일을 수정합니다.
output "file_path" {
value = local_file.example.filename
}
이는 Terraform에게 file_path 출력값이 example이라는 이름의 local_file 리소스에 있는 filename 속성값을 가져야 함을 알려줍니다.
Ctrl+X, Y, Enter를 눌러 파일을 저장하고 nano를 종료합니다.
terraform apply를 실행하여 구성 업데이트
이번 단계에서는 구성 변경 사항을 적용합니다. 출력값을 추가, 제거 또는 수정할 때마다 terraform apply를 실행하여 Terraform이 변경 사항을 인식하고 상태 파일(state file)을 업데이트하도록 해야 합니다. 상태 파일은 Terraform이 출력값을 저장하는 곳입니다.
터미널에서 terraform apply 명령어를 실행합니다.
terraform apply
Terraform은 먼저 실행 계획을 보여줍니다. 출력값이 추가되었음을 감지하고 이를 추가할 계획을 세웁니다. local_file 리소스가 아직 존재하지 않으므로, 이를 생성할 계획도 함께 포함됩니다.
작업을 확인하라는 메시지가 나타나면 yes를 입력하고 Enter를 누릅니다.
Terraform used the selected providers to generate the following execution plan.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
## local_file.example will be created
+ resource "local_file" "example" {
+ content = "This is an example file managed by Terraform."
+ content_base64sha256 = (known after apply)
+ content_base64sha512 = (known after apply)
+ content_md5 = (known after apply)
+ content_sha1 = (known after apply)
+ content_sha256 = (known after apply)
+ content_sha512 = (known after apply)
+ directory_permission = "0777"
+ file_permission = "0777"
+ filename = "./example.txt"
+ id = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ file_path = "./example.txt"
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
local_file.example: Creating...
local_file.example: Creation complete after 0s [id=ec3adcab998872def2df6200fb03992ac6f237a4]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Outputs:
file_path = "./example.txt"
출력에서 볼 수 있듯이 적용이 성공적으로 완료되었으며, 이제 Terraform이 file_path 출력값과 그 값을 표시합니다.
terraform output을 실행하여 파일명 확인
이번 단계에서는 terraform output 명령어를 사용하여 상태 파일에서 출력값을 확인합니다. 이는 상태 파일을 수동으로 파싱하거나 terraform apply를 다시 실행할 필요 없이 인프라에 대한 정보를 검색할 때 유용합니다.
구성에 정의된 모든 출력값을 보려면 인수 없이 명령어를 실행하면 됩니다.
terraform output
그러면 모든 출력값이 사람이 읽기 쉬운 형식으로 표시됩니다.
file_path = "./example.txt"
이름을 인수로 제공하여 특정 출력값만 조회할 수도 있습니다. 이는 스크립트에서 사용하거나 단일 정보만 필요할 때 유용합니다.
terraform output file_path
이 명령어는 지정된 출력값의 원시(raw) 값만 출력합니다.
"./example.txt"
이를 통해 셸 스크립트에서 출력값을 쉽게 활용할 수 있습니다. 예를 들어 FILE=$(terraform output -raw file_path)와 같이 변수에 할당할 수 있습니다. -raw 플래그는 따옴표를 제거합니다.
요약
실습을 완료하신 것을 축하드립니다!
이번 실습에서는 Terraform에서 출력값을 관리하는 기본 원리를 배웠습니다. 다음 작업을 성공적으로 수행했습니다.
- 전용
outputs.tf파일을 생성하여 구성을 체계화했습니다. output블록을 정의하여 출력값을 선언했습니다.- 출력 블록 내에서 리소스 속성을 참조하여 해당 값을 노출했습니다.
terraform apply를 사용하여 구성을 적용하고 출력값을 활성화했습니다.terraform output을 사용하여 명령줄에서 출력값을 조회했습니다.
Terraform 출력값은 인프라에서 중요한 정보를 추출하고, Terraform 워크플로우를 다른 도구 및 스크립트와 통합하는 데 매우 강력한 기능입니다.



