terraform-module-library
amurata/cc-tools
Infrastructure as Code(IaC) 모범 사례를 따르며, AWS, Azure, GCP 인프라용 재사용 가능한 Terraform 모듈을 구축합니다. 이 모듈은 인프라 모듈 생성, 클라우드 프로비저닝 표준화, 재사용 가능한 IaC 구성 요소 구현 시에 사용됩니다.
...모든 것을 확장하십시오소개 terraform-module-library
terraform-module-library 스킬은 AWS, Azure 및 GCP 전반에 걸쳐 프로덕션 환경에 바로 적용 가능한 인프라를 배포하기 위해 설계된, 재사용 가능한 Terraform 모듈의 체계적인 모음을 제공합니다. 이 스킬은 VPC, Kubernetes 클러스터, 데이터베이스 및 스토리지 서비스와 같은 일반적인 구성 요소에 대한 표준화된 패턴을 제공함으로써, 클라우드 인프라를 일관되게 관리하는 데 따르는 과제를 해결합니다. 이 스킬은 ‘인프라스트럭처 애즈 코드(Infrastructure as Code)’ 모범 사례를 따름으로써 클라우드 환경의 생성, 테스트 및 유지 관리를 간소화하고, 잘못된 구성의 위험을 줄이며, 여러 클라우드 공급자 전반에 걸쳐 반복 가능한 배포를 보장합니다.
주요 기능으로는 각 클라우드 제공업체별로 별도의 디렉터리를 두고, VPC, RDS, S3, AKS, GKE, Cloud SQL과 같은 개별 리소스를 위한 하위 디렉터리를 갖춘 체계적인 모듈 구조가 있습니다. 각 모듈은 주요 Terraform 리소스, 입력 변수, 출력, 예제, 버전 고정 및 테스트 파일로 구성된 일관된 패턴을 따릅니다. 모듈에는 신뢰성과 추적성을 유지하기 위한 입력 유효성 검사, 시맨틱 버저닝, Terratest 통합 및 태깅 표준이 포함되어 있습니다. 또한, 예제 구성을 통해 실제 구현 사례를 보여줌으로써 기존 인프라 파이프라인에 더 쉽게 도입하고 통합할 수 있도록 돕습니다.
이 스킬은 프로비저닝 프로세스를 표준화하고 재사용 가능하며 유지 관리가 용이한 Terraform 모듈을 구축하고자 하는 DevOps 엔지니어, 클라우드 아키텍트 및 인프라 팀에 이상적입니다. 이 스킬은 멀티 클라우드 배포, 조직 차원의 Terraform 표준 수립, 재사용 가능한 인프라 구성 요소 구축, 모범 사례 준수 보장 등의 시나리오를 지원합니다. 운영의 일관성을 유지하면서 클라우드 도입을 가속화하고자 하는 조직에게 이 스킬은 특히 유용할 것입니다.
자주 묻는 질문
terraform-module-library 는 어떤 클라우드 제공업체를 지원하나요?
이 스킬은 AWS, Azure 및 GCP용 재사용 가능한 Terraform 모듈을 제공하며, 각 공급자의 일반적인 인프라 구성 요소를 다룹니다.
이 모듈들을 프로덕션 환경에서 사용할 수 있나요?
예, 이 모듈들은 프로덕션 환경에서 바로 사용할 수 있도록 설계되었으며, 입력 검증, 태깅, 버전 고정, Terratest를 통한 테스트 등 모범 사례를 따릅니다.
모듈은 어떻게 구성되고 정리되어 있나요?
모듈은 클라우드 제공업체 및 리소스 유형별로 구성되어 있으며, main.tf, variables.tf, outputs.tf, versions.tf, README.md, 예제 및 테스트를 포함하는 표준 패턴을 따릅니다.
이 모듈들은 멀티 클라우드 배포를 지원하나요?
네, 이 스킬은 여러 클라우드 제공업체에 걸쳐 통합할 수 있는 재사용 가능한 구성 요소를 생성하기 위해 고안되었습니다.
이 모듈을 사용하기 위한 요구 사항이 있나요?
사용자는 Terraform 및 클라우드 제공업체 서비스에 대한 실무 지식을 갖추고 있어야 합니다. 모듈을 사용하려면 관련 클라우드 계정에 대한 접근 권한과 적절한 IAM 권한이 필요합니다.
English | 日本語
Terraformモジュールライブラリ
AWS、Azure、GCPインフラ用の本番環境対応Terraformモジュールパターン。
目的
複数のクラウドプロバイダーにまたがる一般的なクラウドインフラパターン用の再利用可能で、十分にテストされたTerraformモジュールを作成します。
使用タイミング
- 再利用可能なインフラコンポーネントの構築
- クラウドリソースプロビジョニングの標準化
- Infrastructure as Codeベストプラクティスの実装
- マルチクラウド互換モジュールの作成
- 組織のTerraform標準の確立
モジュール構造
terraform-modules/├── aws/│ ├── vpc/│ ├── eks/│ ├── rds/│ └── s3/├── azure/│ ├── vnet/│ ├── aks/│ └── storage/└── gcp/ ├── vpc/ ├── gke/ └── cloud-sql/標準モジュールパターン
module-name/├── main.tf # メインリソース├── variables.tf # 入力変数├── outputs.tf # 出力値├── versions.tf # プロバイダーバージョン├── README.md # ドキュメント├── examples/ # 使用例│ └── complete/│ ├── main.tf│ └── variables.tf└── tests/ # Terratestファイル └── module_test.goAWS VPCモジュール例
main.tf:
resource "aws_vpc" "main" { cidr_block = var.cidr_block enable_dns_hostnames = var.enable_dns_hostnames enable_dns_support = var.enable_dns_support tags = merge( { Name = var.name }, var.tags )}resource "aws_subnet" "private" { count = length(var.private_subnet_cidrs) vpc_id = aws_vpc.main.id cidr_block = var.private_subnet_cidrs[count.index] availability_zone = var.availability_zones[count.index] tags = merge( { Name = "${var.name}-private-${count.index + 1}" Tier = "private" }, var.tags )}resource "aws_internet_gateway" "main" { count = var.create_internet_gateway ? 1 : 0 vpc_id = aws_vpc.main.id tags = merge( { Name = "${var.name}-igw" }, var.tags )}
variables.tf:
variable "name" { description = "VPCの名前" type = string}variable "cidr_block" { description = "VPC用CIDRブロック" type = string validation { condition = can(regex("^([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}$", var.cidr_block)) error_message = "CIDRブロックは有効なIPv4 CIDR表記でなければなりません。" }}variable "availability_zones" { description = "アベイラビリティゾーンのリスト" type = list(string)}variable "private_subnet_cidrs" { description = "プライベートサブネット用CIDRブロック" type = list(string) default = []}variable "enable_dns_hostnames" { description = "VPCでDNSホスト名を有効化" type = bool default = true}variable "tags" { description = "追加タグ" type = map(string) default = {}}
outputs.tf:
output "vpc_id" { description = "VPCのID" value = aws_vpc.main.id}output "private_subnet_ids" { description = "プライベートサブネットのID" value = aws_subnet.private[*].id}output "vpc_cidr_block" { description = "VPCのCIDRブロック" value = aws_vpc.main.cidr_block}
ベストプラクティス
- モジュールにセマンティックバージョニングを使用
- 説明付きですべての変数を文書化
- examples/ディレクトリに例を提供
- 入力検証に検証ブロックを使用
- モジュール構成のために重要な属性を出力
- versions.tfでプロバイダーバージョンをピン
- 計算値にlocalsを使用
- count/for_eachで条件付きリソースを実装
- Terratestでモジュールをテスト
- すべてのリソースに一貫してタグ付け
モジュール構成
module "vpc" { source = "../../modules/aws/vpc" name = "production" cidr_block = "10.0.0.0/16" availability_zones = ["us-west-2a", "us-west-2b", "us-west-2c"] private_subnet_cidrs = [ "10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24" ] tags = { Environment = "production" ManagedBy = "terraform" }}module "rds" { source = "../../modules/aws/rds" identifier = "production-db" engine = "postgres" engine_version = "15.3" instance_class = "db.t3.large" vpc_id = module.vpc.vpc_id subnet_ids = module.vpc.private_subnet_ids tags = { Environment = "production" }}
参照ファイル
assets/vpc-module/- 完全なVPCモジュール例assets/rds-module/- RDSモジュール例references/aws-modules.md- AWSモジュールパターンreferences/azure-modules.md- Azureモジュールパターンreferences/gcp-modules.md- GCPモジュールパターン
テスト
// tests/vpc_test.gopackage testimport ( "testing" "github.com/gruntwork-io/terratest/modules/terraform" "github.com/stretchr/testify/assert")func TestVPCModule(t *testing.T) { terraformOptions := &terraform.Options{ TerraformDir: "../examples/complete", } defer terraform.Destroy(t, terraformOptions) terraform.InitAndApply(t, terraformOptions) vpcID := terraform.Output(t, terraformOptions, "vpc_id") assert.NotEmpty(t, vpcID)}
関連スキル
multi-cloud-architecture- アーキテクチャ決定用cost-optimization- コスト効率的な設計用
terraform-module-library 설치
스킬 파일을 다운로드하여 .claude/skills/ 디렉터리에 압축을 풀어주세요.
ZIP 다운로드저장소를 클론하고 스킬 파일을 프로젝트에 복사하세요.
git clone https://github.com/amurata/cc-tools/blob/main/i18n/ja/plugins/cloud-infrastructure/skills/terraform-module-library/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
복사





집
