IaC (Terraform)

IaC란, Infrastructure as Code의 약자로, 인프라를 코드로 관리하는 것을 말합니다.

접근 방식에 따라 선언형과 명령형이 존재하는데, 명령형 언어의 경우 현재 상황을 반영하지 않는다는 단점이 존재하기 때문에 선언형을 조금 더 많이 사용합니다.


도구 비교

AWS CloudFormation AWS CDK Terraform
클라우드 환경 AWS 전용 AWS 전용 멀티 클라우드
코드 방식 선언형 (YAML/JSON) 명령형 (TypeScript/Python) 선언형 (HCL)
상태 관리 AWS에서 관리 AWS에서 관리 tfstate 파일로 관리
변경 계획 Change Set 없음 terraform plan
보안 정책 CloudFormation Guard AWS IAM Sentinel 지원

도구를 선정하는 기준은 각 조직에 운영 방식에 따라 달라지겠지만, 멀티 클라우드의 비중이 많아지는 현재 상황에서는 Terraform과 같이 여러 CSP를 지원해주는 IaC 도구를 많이 사용합니다. 아래는 추가적인 Terraform 설명입니다.


Terraform 기본 문법

provider "aws" {
region = "ap-northeast-2"
}
resource "aws_vpc" "example" {
cidr_block = "10.0.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
}
variable "vpc_cidr" {
type = string
default = "10.0.0.0/16"
}
output "public_ip" {
value = aws_instance.example.public_ip
}

Terraform 실행 영상