Pular para o conteúdo
Skillpedia
Deploy e nuvem (DevOps)41 mil · #4831

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

https://github.com/wshobson/agents/blob/main/plugins/cloud-infrastructure/skills/terraform-module-library/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/cloud-infrastructure/skills/terraform-module-library/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-library

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/cloud-infrastructure/skills/terraform-module-library/SKILL.md -o SKILL.md
Conteú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

  1. Use versionamento semântico para módulos
  2. Documente todas as variáveis com descrições
  3. Forneça exemplos no diretório examples/
  4. Use blocos de validação para validação de entrada
  5. Exiba atributos importantes para composição de módulos
  6. Fixe versões de provedores em versions.tf
  7. Use locals para valores computados
  8. Implemente recursos condicionais com count/for_each
  9. Teste módulos com Terratest
  10. 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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas