AWS 서비스를 이용하며 tag는 중요한 역할을 한다.
메타 언어로 해당 리소스에 대한 주석 역할을 한다.
디버그가 쉬울 뿐만 아니라, 유지/보수/식별 측면에서 매우 효과적이다.
variable "prefix" {
default = "recipe-app"
}
variable "project" {
default = "recipe-app-api-devops"
}
variable "contact" {
default = "khh180cm@naver.com"
}
...(생략)...
locals {
prefix = "${var.prefix}-${terraform.workspace}"
common_tags = {
Environment = terraform.workspace
Project = var.project
Owner = var.contact
ManagedBy = "Teffaform"
}
}
위와 같이 작성하면
앞으로 terraform으로 생성할 모든 리소스들에 대해 tag가 생긴다.
data "aws_ami" "amazon_linux" {
most_recent = true
filter {
name = "name"
values = ["amzn2-ami-hvm-2.0.*-x86_64-gp2"]
}
owners = ["amazon"]
}
resource "aws_instance" "bastion" {
ami = data.aws_ami.amazon_linux.id
instance_type = "t2.micro"
tags = merge(
local.common_tags,
map("Name", "${local.prefix}-bastion")
)
}
docker-compose -f deploy/docker-compose.yml run --rm terraform fmt
docker-compose -f deploy/docker-compose.yml run --rm terraform validate
docker-compose -f deploy/docker-compose.yml run --rm terraform plan
docker-compose -f deploy/docker-compose.yml run --rm terraform apply
tag를 확인해보자.