다양한 클라우드 프로바이더(AWS, GCP, Azure)를 위한 재사용 가능한 Terraform 모듈 컬렉션입니다.
- vpc: VPC, 서브넷, 라우트 테이블, 인터넷 게이트웨이, NAT 게이트웨이 생성
- security-group: 보안 그룹 및 인그레스/이그레스 규칙 관리
- eks: Amazon EKS 클러스터, 애드온, 액세스 엔트리, Pod Identity 구성
- irsa: IAM Roles for Service Accounts (IRSA) 설정
- oidc: OIDC Identity Provider 구성
- role: IAM 역할 및 정책 관리
- s3: S3 버킷 생성 및 설정
- ec2: EC2 인스턴스 생성
- ecr: Amazon ECR 리포지토리 생성
- elb: Elastic Load Balancer 구성
- parameter-store: AWS Systems Manager Parameter Store 관리
plain: 일반 파라미터secure: 암호화된 파라미터
- cloudfront: CloudFront 배포 구성
- vpc: VPC 네트워크 및 서브넷 생성
- firewall: 방화벽 규칙 관리
- gke: Google Kubernetes Engine 클러스터 생성
- gcs: Google Cloud Storage 버킷 생성
- service-account: 서비스 계정 및 권한 관리
- ssl: SSL 인증서 관리
- loadbalancer: HTTPS 로드 밸런서 구성
- 현재 지원 모듈 없음
- helm: Helm 차트 배포
모듈을 사용하려면 source에 상대 경로를 지정하고 필요한 변수를 전달합니다:
module "vpc" {
source = "../../aws/vpc"
config = {
name = "my-vpc"
cidr_block = "10.0.0.0/16"
region = "ap-northeast-2"
# ... 기타 설정
}
}대부분의 모듈은 YAML 파일을 통한 선언적 구성 방식을 지원합니다. example/aws/config.yaml을 참고하세요.
locals {
config = yamldecode(file("./config.yaml"))
}
module "vpc" {
source = "../../aws/vpc"
for_each = { for vpc in local.config.vpc : vpc.name => vpc }
config = each.value
}실제 사용 예제는 example/ 디렉토리에서 확인할 수 있습니다:
-
AWS 예제:
example/aws/- EKS 클러스터 구성
- VPC 및 보안 그룹 설정
- IRSA 및 Pod Identity 설정
- Parameter Store 사용
- ECR 리포지토리 생성
-
GCP 예제:
example/gcp/- GKE 클러스터 구성
- VPC 및 방화벽 설정
각 예제 디렉토리에는 config.yaml 파일과 main.tf 파일이 포함되어 있어 모듈 사용 방법을 참고할 수 있습니다.
암호화된 Parameter Store를 사용할 때는 비밀 키 파일 경로를 지정해야 합니다. 자세한 내용은 아래 링크를 참고하세요:
일부 모듈은 다른 모듈에 의존합니다:
eks모듈은vpc,security-group,iam_role모듈이 필요합니다irsa모듈은eks모듈이 필요합니다security-group모듈은vpc모듈이 필요합니다
모듈 사용 시 depends_on을 적절히 설정하세요:
module "eks" {
source = "../../aws/eks"
# ... 설정
depends_on = [module.vpc, module.security_group, module.iam_role]
}각 모듈은 다음 구조를 따릅니다:
module-name/
├── main.tf # 주요 리소스 정의
├── variables.tf # 입력 변수 정의
└── outputs.tf # 출력 값 정의 (선택적)
모듈 개선이나 새로운 모듈 추가를 환영합니다. Pull Request를 통해 기여해주세요.