terraform-module-library
amurata/cc-tools
В соответствии с передовыми практиками «Инфраструктура как код» (IaC) мы создаем многократно используемые модули Terraform для инфраструктуры AWS, Azure и GCP. Их используют при создании инфраструктурных модулей, стандартизации развертывания облачных ресурсов и внедрении многократно используемых компонентов IaC.
...Расширить всеО terraform-module-library
Набор навыков « terraform-module-library » представляет собой структурированную коллекцию готовых к повторному использованию модулей Terraform, предназначенных для развертывания инфраструктуры, готовой к производственному использованию, в AWS, Azure и GCP. Он решает проблемы, связанные с последовательным управлением облачной инфраструктурой, предлагая стандартизированные шаблоны для таких распространенных компонентов, как виртуальные частные сети (VPC), кластеры Kubernetes, базы данных и службы хранения данных. Следуя лучшим практикам «инфраструктуры как кода», этот набор упрощает создание, тестирование и обслуживание облачных сред, снижая риск ошибок в настройке и обеспечивая воспроизводимость развертываний у различных облачных провайдеров.
Ключевые особенности включают хорошо организованную структуру модулей с отдельными каталогами для каждого облачного провайдера и подкаталогами для отдельных ресурсов, таких как VPC, RDS, S3, AKS, GKE и Cloud SQL. Каждый модуль следует единому шаблону, включающему основные ресурсы Terraform, входные переменные, выходные данные, примеры, фиксацию версий и файлы тестирования. Модули включают проверку входных данных, семантическое управление версиями, интеграцию с Terratest и стандарты тегирования для обеспечения надёжности и отслеживаемости. Кроме того, примеры конфигураций демонстрируют практические реализации, что упрощает внедрение и интеграцию в существующие инфраструктурные конвейеры.
Этот навык идеально подходит для инженеров DevOps, облачных архитекторов и инфраструктурных команд, стремящихся стандартизировать процессы развертывания и создавать многократно используемые и удобные в обслуживании модули Terraform. Он поддерживает такие сценарии, как мультиоблачные развертывания, установление организационных стандартов Terraform, создание многократно используемых компонентов инфраструктуры и обеспечение соответствия лучшим практикам. Этот навык будет особенно полезен организациям, стремящимся ускорить переход на облачные технологии при одновременном обеспечении операционной согласованности.
Часто задаваемые вопросы
Какие облачные провайдеры поддерживаются набором навыков « terraform-module-library »?
Этот набор навыков предоставляет многократно используемые модули Terraform для AWS, Azure и GCP, охватывающие общие компоненты инфраструктуры для каждого провайдера.
Можно ли использовать эти модули в производственных средах?
Да, модули разработаны с учетом требований производственной среды и соответствуют передовым практикам, включая проверку входных данных, тегирование, фиксацию версий и тестирование с помощью 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
Копировать





Дом
