Terraform 참조 방식
Terraform에서 무언가를 참조할 때는 다음과 같은 구조를 따른다.
<category>.<type_and_name>.<attribute>
<category> | Terraform 타입 | data, module, var, local (resource는 생략 가능) |
<type_or_name> | 리소스 타입과 이름 | 설정한 값 |
<attribute> | 가져오고 싶은 속성 값 | 각각의 category에 따라 참조할 수 있는 속성(attribute)이 여러 개 있다. 예시) aws_instance 리소스의 경우 .id : 인스턴스 ID .private_ip : 사설 IP 주소 .public_ip : 공인 IP 주소 .arn : ARN |
1. resource
resource "aws_instance" "web" {
ami = var.ami_id
instance_type = "t2.micro"
}
# 참조: aws_instance.web.id
(resource는 생략 가능)
2. Data
data "aws_ami" "ubuntu" {
most_recent = true
owners = ["099720109477"]
filter {
name = "name"
values = ["ubuntu/images/*"]
}
}
# 참조: data.aws_ami.ubuntu.id
3. Module
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
}
# 참조: module.vpc.vpc_id
4. Variable
variable "ami_id" {
type = string
}
# 참조: var.ami_id
5. map 값 참조
variable "vpc_cidrs" {
type = map
default = {
us-east-1 = "10.0.0.0/16"
us-east-2 = "10.1.0.0/16"
us-west-1 = "10.2.0.0/16"
us-west-2 = "10.3.0.0/16"
}
}
var.<변수이름>["<키이름>"]
# 참조: var.vpc_cidrs["us-east-1"]
(var.vpc_cidrs[0] 이런식으로는 안됌. 숫자(index)로 접근할 수 없다)
🤔 문제 1
다음 Terraform 구성은 AWS AMI를 위한 데이터 소스를 사용하고 있습니다.
이 경우, aws_instance 리소스의 ami 인자에는 어떤 값을 입력해야 하나요?
data "aws_ami" "ubuntu" {
...
}
resource "aws_instance" "web" {
ami = ???
instance_type = "t2.micro"
tags = {
Name = "HelloWorld"
}
}
A. aws_ami.ubuntu
B. data.aws_ami.ubuntu
C. data.aws_ami.ubuntu.id
D. aws_ami.ubuntu.id
정답
정답 C
🤔 문제 2
Terraform이 이 리소스를 참조하기 위해 할당하는 이름은 무엇인가요?
resource "azurerm_resource_group" "dev" {
name = "test"
}
A. dev
B. azurerm_resource_group
C. azurerm
D. test
정답
정답 A
Terraform에서 리소스를 정의할 때 다음과 같은 형식을 사용한다.
resource "<리소스 타입>" "<로컬 이름>" {
...
}
🤔 문제 3
이 가상의 리소스에서 두 번째 인스턴스의 "name" 값을 어떻게 참조하겠습니까?
resource "aws_instance" "web" {
count = 2
name = "terraform-${count.index}"
}
A. element(aws_instance.web, 2)
B. aws_instance.web[1].name
C. aws_instance.web[1]
D. aws_instance.web[2].name
E. aws_instance.web.*.name
정답
정답. B
'Terraform' 카테고리의 다른 글
[Terraform] dynamic Block란? 쉽게 정리 (nested block 생성할 경우) (0) | 2025.07.02 |
---|---|
[Terraform] depends_on 란? 쉽게 정리 (테라폼의 의존성 implicit vs. explicit) (0) | 2025.06.28 |
[Terraform] 테라폼에서 Secret(비밀 정보)를 안전하게 관리하는 방법 (0) | 2025.06.27 |
[Terraform] Terraform Cloud란? 쉽게 정리 (0) | 2025.06.27 |
[Terraform] Splat Expressions와 For Expressions 쉽게 정리 (0) | 2025.06.26 |