terraform-module-library – skill DevOps & Hạ tầng cho agent AI
Xây dựng module Terraform tái sử dụng cho AWS, Azure, GCP và OCI theo các thực hành tốt nhất về hạ tầng dưới dạng code (IaC). Dùng khi tạo module hạ tầng, chuẩn hóa việc cấp phát cloud, hoặc triển khai các thành phần IaC tái sử dụng.
Cài skill terraform-module-library bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/terraform-module-library-f3d8f.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /terraform-module-library – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/terraform-module-library-f3d8f.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $terraform-module-library – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/terraform-module-library-f3d8f.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /terraform-module-library – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/terraform-module-library-f3d8f.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /terraform-module-library – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Terraform Module Library
Production-ready Terraform module patterns for AWS, Azure, GCP, and OCI infrastructure.
Purpose
Create reusable, well-tested Terraform modules for common cloud infrastructure patterns across multiple cloud providers.
When to Use
- Build reusable infrastructure components
- Standardize cloud resource provisioning
- Implement infrastructure as code best practices
- Create multi-cloud compatible modules
- Establish organizational Terraform standards
Module Structure
terraform-modules/
├── aws/
│ ├── vpc/
│ ├── eks/
│ ├── rds/
│ └── s3/
├── azure/
│ ├── vnet/
│ ├── aks/
│ └── storage/
├── gcp/
│ ├── vpc/
│ ├── gke/
│ └── cloud-sql/
└── oci/
├── vcn/
├── oke/
└── object-storage/Standard Module Pattern
module-name/
├── main.tf # Main resources
├── variables.tf # Input variables
├── outputs.tf # Output values
├── versions.tf # Provider versions
├── README.md # Documentation
├── examples/ # Usage examples
│ └── complete/
│ ├── main.tf
│ └── variables.tf
└── tests/ # Terratest files
└── module_test.goAWS VPC Module Example
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 = "Name of the VPC"
type = string
}
variable "cidr_block" {
description = "CIDR block for VPC"
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 block must be valid IPv4 CIDR notation."
}
}
variable "availability_zones" {
description = "List of availability zones"
type = list(string)
}
variable "private_subnet_cidrs" {
description = "CIDR blocks for private subnets"
type = list(string)
default = []
}
variable "enable_dns_hostnames" {
description = "Enable DNS hostnames in VPC"
type = bool
default = true
}
variable "tags" {
description = "Additional tags"
type = map(string)
default = {}
}outputs.tf:
output "vpc_id" {
description = "ID of the VPC"
value = aws_vpc.main.id
}
output "private_subnet_ids" {
description = "IDs of private subnets"
value = aws_subnet.private[*].id
}
output "vpc_cidr_block" {
description = "CIDR block of VPC"
value = aws_vpc.main.cidr_block
}Best Practices
1. Use semantic versioning for modules
2. Document all variables with descriptions
3. Provide examples in examples/ directory
4. Use validation blocks for input validation
5. Output important attributes for module composition
6. Pin provider versions in versions.tf
7. Use locals for computed values
8. Implement conditional resources with count/for_each
9. Test modules with Terratest
10. Tag all resources consistently
Reference: See references/aws-modules.md and references/oci-modules.md
Module Composition
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"
}
}Testing
// tests/vpc_test.go
package test
import (
"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)
}Related Skills
multi-cloud-architecture- For architectural decisionscost-optimization- For cost-effective designs
Skill liên quan
- elk-stack – Triển khai và quản lý ELK Stack (Elasticsearch, Logstash, Kibana) để tổng hợp và phân…
- quality-manager-qmr – Quality Manager Responsible Person (QMR) cấp cao cho công ty HealthTech và MedTech. Cung…
- error-diagnostics-error-trace – Bạn là chuyên gia theo dõi lỗi và observability, chuyên triển khai giải pháp giám sát…
- vector-index-tuning – Tối ưu hiệu năng chỉ mục vector về độ trễ, recall và bộ nhớ. Dùng khi tinh chỉnh tham số…
- expo-cicd-workflows – Giúp hiểu và viết file YAML workflow của EAS cho dự án Expo. Dùng skill này khi người…
- expo-deployment – Triển khai ứng dụng Expo với EAS: build và submit bản phát hành iOS và Android, cấu hình…
- watchers – Thăm dò RSS, API JSON và GitHub với cơ chế loại bỏ trùng lặp bằng watermark.
- runbook-generator – Tạo runbook vận hành từ tên dịch vụ: quy trình triển khai, ứng phó sự cố, bảo trì và…