terraform-module-library
amurata/cc-tools
Conformément aux meilleures pratiques en matière d'« Infrastructure as Code », nous développons des modules Terraform réutilisables pour les infrastructures AWS, Azure et GCP. Ces modules sont utilisés pour la création de modules d'infrastructure, la standardisation de l'approvisionnement dans le cloud et la mise en œuvre de composants IaC réutilisables.
...Développer toutÀ propos terraform-module-library
La compétence « terraform-module-library » fournit un ensemble structuré de modules Terraform réutilisables, conçus pour déployer des infrastructures prêtes à la production sur AWS, Azure et GCP. Elle répond aux défis liés à la gestion cohérente des infrastructures cloud en proposant des modèles standardisés pour des composants courants tels que les VPC, les clusters Kubernetes, les bases de données et les services de stockage. En suivant les meilleures pratiques de l’« Infrastructure as Code », cette compétence simplifie la création, les tests et la maintenance des environnements cloud, réduisant ainsi le risque d’erreurs de configuration et garantissant des déploiements reproductibles chez plusieurs fournisseurs de cloud.
Parmi les principales fonctionnalités, on trouve des structures de modules bien organisées, avec des répertoires distincts pour chaque fournisseur de cloud et des sous-répertoires pour les ressources individuelles telles que les VPC, RDS, S3, AKS, GKE et Cloud SQL. Chaque module suit un modèle cohérent comprenant les principales ressources Terraform, les variables d’entrée, les sorties, des exemples, le verrouillage de version et des fichiers de test. Les modules intègrent la validation des entrées, la gestion sémantique des versions, l’intégration de Terratest et des normes de balisage afin de garantir la fiabilité et la traçabilité. De plus, des exemples de configurations illustrent des implémentations concrètes, facilitant ainsi l’adoption et l’intégration dans les pipelines d’infrastructure existants.
Cette compétence est idéale pour les ingénieurs DevOps, les architectes cloud et les équipes d’infrastructure qui souhaitent standardiser les processus de provisionnement et créer des modules Terraform réutilisables et faciles à maintenir. Elle prend en charge des scénarios tels que les déploiements multicloud, la mise en place de normes Terraform au sein de l’organisation, la création de composants d’infrastructure réutilisables et la garantie de la conformité aux meilleures pratiques. Les organisations cherchant à accélérer leur adoption du cloud tout en préservant la cohérence opérationnelle trouveront cette compétence particulièrement utile.
FAQ
Quels fournisseurs de cloud sont pris en charge par l’ terraform-module-library?
Cette compétence fournit des modules Terraform réutilisables pour AWS, Azure et GCP, couvrant les composants d’infrastructure courants pour chaque fournisseur.
Ces modules peuvent-ils être utilisés dans des environnements de production ?
Oui, les modules sont conçus pour être prêts à l’emploi en production et respectent les meilleures pratiques, notamment la validation des entrées, le balisage, le verrouillage de version et les tests avec Terratest.
Comment les modules sont-ils structurés et organisés ?
Les modules sont organisés par fournisseur de cloud et par type de ressource, selon un modèle standard comprenant les fichiers main.tf, variables.tf, outputs.tf, versions.tf, README.md, ainsi que des exemples et des tests.
Ces modules prennent-ils en charge les déploiements multicloud ?
Oui, cette compétence est destinée à la création de composants réutilisables pouvant être intégrés chez plusieurs fournisseurs de cloud.
Y a-t-il des prérequis pour utiliser ces modules ?
Les utilisateurs doivent disposer de connaissances pratiques de Terraform et des services des fournisseurs de cloud. Les modules supposent un accès aux comptes cloud concernés et des autorisations IAM appropriées.
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- コスト効率的な設計用
Installer terraform-module-library
Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez le dépôt et copiez les fichiers de compétence dans votre projet.
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
Copier





Maison
