Skip to content

terraform-mgc-modules/mgc-container-registry

Terraform Magalu Cloud Container Registry Module

Módulo Terraform para criação e gerenciamento de Container Registries na Magalu Cloud com funcionalidades completas para DevOps e CI/CD.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Terraform
    participant MagaluCloud

    User->>Terraform: Fornece variáveis (API Key, region, nomes)
    Terraform->>MagaluCloud: Provisiona Container Registry
    Terraform->>MagaluCloud: (Opcional) Consulta registries, repositórios, imagens, credenciais
    MagaluCloud-->>Terraform: Retorna dados dos recursos
    Terraform-->>User: Exibe outputs (IDs, credenciais, análises, alertas)
Loading

🚀 Início Rápido

Uso Básico

module "container_registry" {
  source =  "https://github.com/terraform-mgc-modules/mgc-container-registry?ref=v1.0.0"
  
  container_registry_name = "meu-registry-app"
}

output "registry_id" {
  value = module.container_registry.container_registry_id
}

Uso Avançado com Credenciais

module "container_registry" {
  source = "https://github.com/terraform-mgc-modules/mgc-container-registry?ref=v1.0.0"
  
  container_registry_name     = "producao-apps"
  enable_credentials_output   = true
  enable_repositories_data   = true
}

output "registry_credentials" {
  value     = module.container_registry.container_credentials
  sensitive = true
}

📚 Exemplos Completos

Este módulo inclui exemplos práticos prontos para uso:

  • Exemplo Simples - Registry básico para desenvolvimento.
  • Exemplo Completo - Configuração avançada com 3 registries demonstrando todas as funcionalidades.

Como usar os exemplos:

# Exemplo simples
cd examples/simple
terraform init
terraform plan
terraform apply

# Exemplo completo  
cd examples/complete
terraform init
terraform plan
terraform apply

📋 Referência Técnica

📦 Requirements & Providers

Requirements

Name Version
mgc 0.33.0

Providers

Name Version
mgc 0.33.0

Resources

Name Type
mgc_container_registries.registry resource
mgc_container_credentials.creds data source
mgc_container_images.images data source
mgc_container_registries.all_registries data source
mgc_container_repositories.repositories data source
🔧 Inputs
Name Description Type Default Required
container_registry_name The name of the container registry to create. string "my-container-registry" no
enable_credentials_output Whether to output container registry credentials. Set to true if you need access credentials. bool false no
enable_images_data Whether to fetch images data from the specified repository. Requires repository_name to be set. bool false no
enable_registries_list Whether to fetch a list of all container registries. Useful for reference or comparison. bool false no
enable_repositories_data Whether to fetch repositories data from the created registry. bool false no
mgc_api_key API Key da Magalu Cloud para testes string n/a yes
mgc_region Região da Magalu Cloud (ex: br-se1) string "br-se1" no
repository_name Name of a specific repository to fetch images data from. Leave null if not needed. string null no
📤 Outputs
Name Description Availability
all_registries List of all container registries in the account When enable_registries_list = true
container_credentials Container registry authentication credentials When enable_credentials_output = true
container_registry_created_at The timestamp when the registry was created When enable_registries_list = true
container_registry_id The unique identifier of the created container registry Always
container_registry_name The name of the created container registry Always
container_registry_storage_usage_bytes The storage usage in bytes of the registry When enable_registries_list = true
container_registry_updated_at The timestamp when the registry was last updated When enable_registries_list = true
images List of images in the specified repository When enable_images_data = true and repository_name set
repositories List of repositories in the created registry When enable_repositories_data = true

📖 Documentação

🔧 Configuração

📚 Guias

📦 Estruturas de Dados

Credenciais (container_credentials)

{
  username = "string"
  email    = "string" 
  password = "string" # sensível
}

Registry (all_registries)

[
  {
    id                   = "string"
    name                = "string"
    created_at          = "string"
    updated_at          = "string"
    storage_usage_bytes = number
  }
]

💡 Casos de Uso Comuns

1. CI/CD Integration

module "ci_registry" {
  source = "github.com/nataliagranato/mgc-container-registry"
  
  container_registry_name   = "ci-cd-apps"
  enable_credentials_output = true
}

# Configure GitHub Actions
resource "github_actions_secret" "registry_username" {
  repository      = "meu-repo"
  secret_name     = "REGISTRY_USERNAME"
  plaintext_value = module.ci_registry.container_credentials.username
}

2. Multi-Environment Setup

module "dev_registry" {
  source = "github.com/nataliagranato/mgc-container-registry"
  container_registry_name = "dev-apps"
}

module "prod_registry" {
  source = "github.com/nataliagranato/mgc-container-registry"
  container_registry_name = "prod-apps"
  enable_credentials_output = true
}

🛠️ Requisitos

  • Terraform >= 0.14
  • Provider MGC >= 0.33.0
  • API Key da Magalu Cloud com permissões Container Registry
terraform {
  required_providers {
    mgc = {
      source  = "magalucloud/mgc"
      version = "~> 0.33.0"
    }
  }
}

provider "mgc" {
  api_key = var.mgc_api_key
  region  = "br-se1"
}

🤝 Contribuição

Consulte CONTRIBUTING.md para diretrizes de contribuição.

🔒 Segurança

Para reportar vulnerabilidades, veja SECURITY.md.

📄 Licença

Este projeto está sob a licença especificada no arquivo LICENSE.


Feito com ❤️ por Natália Granato