728x90
안녕하세요, 이번 포스팅은 테라폼 모듈을 활용한 athena datacatalog 배포에 대해서 포스팅을 올립니다.
CloudNet@의 테라폼 스터디 내용을 기반하고 있습니다.
트리
├── main.tf
├── modules
│ └── ec2-instance
│ ├── main.tf
│ └── variables.tf
└── terraform.tfstate
루트 모듈 정의 (main.tf)
provider "aws" {
region = "ap-northeast-2"
}
locals {
ec2_instances = {
jflip-test-01 = {
instance_type = "t2.micro"
ami_id = "ami-04ea5b2d3c8ceccf8"
},
jflip-test-02 = {
instance_type = "t2.small"
ami_id = "ami-04ea5b2d3c8ceccf8"
},
jflip-test-03 = {
instance_type = "t2.medium"
ami_id = "ami-04ea5b2d3c8ceccf8"
},
}
}
module "ec2_instances" {
source = "./modules/ec2-instance"
for_each = local.ec2_instances
name = each.key
instance_type = each.value.instance_type
ami_id = each.value.ami_id
}
ec2_instances라는 로컬 변수를 사용하여 생성할 EC2 인스턴스의 설정을 맵 형태로 정의합니다.
각 인스턴스는 고유한 이름, 인스턴스 타입, 및 AMI ID를 가집니다.
또한 ec2_instances 모듈을 호출하여 각 EC2 인스턴스를 생성합니다.
for_each를 사용하여 로컬 변수에 정의된 각 설정을 반복적으로 적용합니다.
차일드 모듈의 변수 추가 (variables.tf)
variable "name" {
description = "Name of the EC2 instance"
type = string
}
variable "instance_type" {
description = "EC2 instance type"
type = string
}
variable "ami_id" {
description = "AMI ID"
type = string
}
각기 인스턴스명, 인스턴스 타입, 사용할 ami_id를 의미합니다.
차일드 모듈 (main.tf)
resource "aws_instance" "this" {
ami = var.ami_id
instance_type = var.instance_type
tags = {
Name = var.name
}
}
모듈에서 사용할 내용을 정의합니다.
테라폼 플랜을 통해서 해당 내용이 제대로 적용될 수 있는지 확인합니다.
테라폼을 통해서 배포해 본 결과입니다.
리소스가 잘 배포되는 것을 확인하실 수 있습니다!
감사합니다.
728x90
반응형
'DevOps > Terraform' 카테고리의 다른 글
[OpenTofu] 클라우드 인프라 관리를 위한 새로운 오픈소스 도구 (0) | 2024.08.04 |
---|---|
[Terraform] Karpenter on EKS Fargate (0) | 2024.07.28 |
[Terraform] 테라폼 모듈을 활용한 athena 데이터 카탈로그 배포 (0) | 2024.07.14 |
[Terraform] 테라폼 코드를 활용한 IPAM 배포 (0) | 2024.07.07 |
[Terraform] 테라폼 코드를 활용한 레드시프트 배포 (0) | 2024.07.07 |