terraform-module-library
Ajuda seu agente a criar blocos de código reutilizáveis para gerenciar infraestrutura na nuvem. Isso torna mais fácil e rápido configurar servidores e serviços em plataformas como AWS, Azure ou Google Cloud.
O que ela faz
Esta ferramenta ajuda a criar blocos de código reutilizáveis (chamados módulos) para configurar infraestrutura na nuvem (como servidores, redes) de forma padronizada e eficiente. Ela segue as melhores práticas para garantir que seus módulos funcionem bem e possam ser usados em diferentes provedores de nuvem.
Quando usar
- ✓Ao criar componentes de infraestrutura que você usará várias vezes.
- ✓Para garantir que a configuração da sua nuvem seja sempre igual.
- ✓Ao querer usar código para gerenciar sua infraestrutura de forma organizada.
Exemplo do que pedir para a IA
“Crie um módulo Terraform para configurar uma rede virtual na AWS.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta fornece modelos e exemplos de código que você pode adaptar. Ela organiza esses módulos de forma estruturada, com arquivos para definir recursos, variáveis de entrada, saídas e documentação, facilitando o reuso e a manutenção.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add wshobson/agents --skill terraform-module-libraryOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/cloud-infrastructure/skills/terraform-module-library/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Biblioteca de Módulos Terraform
Padrões de módulos Terraform prontos para produção para infraestrutura AWS, Azure, GCP e OCI.
Propósito
Criar módulos Terraform reutilizáveis e bem testados para padrões comuns de infraestrutura em nuvem em vários provedores de nuvem.
Quando Usar
- Construir componentes de infraestrutura reutilizáveis
- Padronizar o provisionamento de recursos em nuvem
- Implementar as melhores práticas de infraestrutura como código
- Criar módulos compatíveis com multi-cloud
- Estabelecer padrões organizacionais de Terraform
Estrutura do Módulo
terraform-modules/
├── aws/
│ ├── vpc/
│ ├── eks/
│ ├── rds/
│ └── s3/
├── azure/
│ ├── vnet/
│ ├── aks/
│ └── storage/
├── gcp/
│ ├── vpc/
│ ├── gke/
│ └── cloud-sql/
└── oci/
├── vcn/
├── oke/
└── object-storage/
Padrão de Módulo Padrão
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.go
Exemplo de Módulo VPC AWS
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
}
Melhores Práticas
- Use versionamento semântico para módulos
- Documente todas as variáveis com descrições
- Forneça exemplos no diretório examples/
- Use blocos de validação para validação de entrada
- Exiba atributos importantes para composição de módulos
- Fixe versões de provedores em versions.tf
- Use locals para valores computados
- Implemente recursos condicionais com count/for_each
- Teste módulos com Terratest
- Marque todos os recursos de forma consistente
Referência: Veja references/aws-modules.md e references/oci-modules.md
Composição de Módulos
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"
}
}
Testes
…
Perguntas frequentes
O que é um módulo Terraform?
É um conjunto de arquivos Terraform que formam uma unidade lógica de infraestrutura, como uma rede ou um banco de dados, que pode ser reutilizado em diferentes projetos.
Quais provedores de nuvem são suportados?
AWS, Azure, GCP e OCI (Oracle Cloud Infrastructure).
O que são 'melhores práticas' neste contexto?
São recomendações para escrever código de infraestrutura de alta qualidade, como documentar tudo, validar entradas e testar o código.
Detalhes
Descrição original do autor
Build reusable Terraform modules for AWS, Azure, GCP, and OCI infrastructure following infrastructure-as-code best practices. Use when creating infrastructure modules, standardizing cloud provisioning, or implementing reusable IaC components.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4831
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
bun-runtime
Faz seu agente usar o Bun para rodar, organizar e testar código. Ajuda a escolher o Bun em vez de outras ferramentas e a migrar projetos existentes.
affaan-m/ECC
database-migrations
Ajuda seu agente a fazer mudanças seguras em bancos de dados. Ele garante que as alterações possam ser desfeitas e minimiza o tempo de inatividade.
affaan-m/ECC
deployment-patterns
Configura fluxos de implantação e CI/CD, containerização e estratégias de rollback para garantir lançamentos seguros.
affaan-m/ECC