AI와 함께하는 Terraform: AWS 인프라 구축 (Cursor + MCP)
출처: Dev.to
AI와 함께하는 Terraform이 현대 DevOps에서 중요한 이유
작은 환경을 제외하고 Terraform을 직접 작성하면 금세 지루해집니다.
Build Complete AWS Infrastructure with Terraform MCP Server and Cursor AI - Full Tutorial
전통적인 Terraform 워크플로우
전형적인 워크플로우는 다음과 같습니다.
- AI를 이용해 Terraform을 생성한다는 생각이 직관적이다.
“공용 및 사설 서브넷이 있는 VPC에 대한 Terraform을 생성해줘” - 오래된 인수를 사용할 수 있다.
- AI는 인프라 컨텍스트를 이해하지 못한다.
이를 해결하기 위해 우리는 내부 도구를 구축했습니다.
- 벡터 데이터베이스
- 반복이 어려웠음 –
terraform plan과apply루프 – 오류 수정 - 중간에 Cursor 에이전트가 매우 강력해져서 반복 문제를 거의 해결했기 때문에 추가 최적화는 시도하지 않았다.
Terraform MCP Server를 도입하고 Cursor와 함께 사용하면서 동작이 바뀌었습니다.
Terraform 모듈 문서
높은 수준에서 MCP는 편집기(Cursor)와 Terraform 컨텍스트 사이의 다리 역할을 합니다.
- 모듈 정의를 조회한다
이는 일반적인 AI 사용과의 핵심 차이점입니다.
MCP의 개선점은 단순히 프롬프트가 더 좋아진 것이 아니라 구조화된 Terraform 지식에 접근할 수 있다는 점입니다.
- 리소스, 데이터 소스, 함수에 대한 전체 문서를 가져온다
- 레지스트리에서 사용 예시와 함께 Terraform 모듈을 찾는다
- 입력값, 출력값, 구성 패턴을 반환한다
- 모범 사례와 보안 정책을 식별하는 데 도움을 준다
- 엔지니어가 직접 찾아보듯이 정보를 제공한다
실제로 대부분의 팀은 먼저 AI를 시도하지만, 컨텍스트가 없으면 결과가 신뢰할 수 없다는 것을 깨닫습니다. MCP가 그 격차를 메워줍니다.
현실적인 설정 예시
VPC + 공용/사설 서브넷
모든 코드를 수동으로 작성하는 대신 문제를 작은 단계로 나누고 AI를 안내했습니다.
- 모호한 프롬프트 대신 구조화된 단계별 접근 방식을 사용했다.
- “코드 생성을 시작한다. 단계별로 진행한다. 현재 단계가 완료될 때만 다음 단계로 이동한다.”
단계 1: VPC 및 네트워크 인프라 생성 – vpc 모듈 사용
- 적절한 CIDR 블록을 가진 VPC 생성
- 2개의 AZ에 걸쳐 공용 및 사설 서브넷 생성
- 인터넷 게이트웨이 설정
- 공용 서브넷에 NAT 게이트웨이 배치
- 공용/사설 서브넷용 라우팅 테이블 구성
단계 2: 보안 그룹 생성
- ALB 보안 그룹 (HTTP/HTTPS 인바운드 허용)
- EC2 보안 그룹
- ALB에서 오는 트래픽 허용
- VPC 내부에서 SSH 허용
- 모든 아웃바운드 트래픽 허용
단계 3: Auto Scaling Group 생성 – autoscaling 모듈 사용
- EC2 인스턴스용 런치 템플릿 생성
- Ubuntu AMI 사용
- 사설 서브넷에 ASG 배포
- 키페어 이름
vikas-aws사용 - 사용자 데이터 스크립트에 Nginx 설치 및 간단한 HTML 페이지 생성 포함
단계 4: 점프박스 생성
- 공용 서브넷에 점프박스 생성
- 퍼블릭 IP 할당 보장
- 인터넷에서 SSH 허용
단계 5: Application Load Balancer 생성 – alb 모듈 사용
- 공용 서브넷에 ALB 생성
- HTTP 리스너 설정
- Auto Scaling Group에 연결
단계 6: CloudFront 배포
- ALB를 오리진으로 하는 CloudFront 설정
- 캐시 TTL을 0으로 지정
단계 7: DNS 설정
- DNS는 Cloudflare에서 관리 (Route53 사용 안 함)
이와 같이 문제를 단계별로 나누면 단일 프롬프트에 비해 출력 품질이 크게 향상됩니다.
간단한 예시
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.0.0"
name = "demo-vpc"
cidr = "10.0.0.0/16"
azs = ["us-east-1a", "us-east-1b"]
public_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
private_subnets = ["10.0.3.0/24", "10.0.4.0/24"]
enable_nat_gateway = true
single_nat_gateway = true
}
완벽하지는 않았지만:
- 구조는 올바랐음
- 실제 사용에서는
- 인프라 조립에 2~4시간 소요
- 초기 설정은 몇 분 안에 생성됨
이 접근법에 필요한 규율
-
항상
terraform plan을 실행한다. -
대부분의 팀에서 이 방식은 다음 상황에 적합함
- 새로운 인프라를 구축할 때
-
다음 경우에는 의존을 피한다
- 인프라가 엄격한 컴플라이언스를 요구할 때
자연스럽게 통합되는 워크플로우
- Git 기반 워크플로우와 자연스럽게 결합됨
Terraform with AI는 AI 도구를 활용해 인프라 코드를 보다 효율적으로 생성·관리하는 것을 의미합니다. AI에게 Terraform 컨텍스트(모듈·문서 등)를 제공함으로써 가능해집니다.
- 검증 및 리뷰를 거친 후에만 사용한다.
- Terraform 자체는 변하지 않았다.
관련 링크: