Skip to content

Utilizando o Terraform para gerenciar configurações e regras de alertas para o Alertmanager do Mimir.

License

Notifications You must be signed in to change notification settings

Tech-Preta/terraform-mimirtool

Terraform Mimirtool

Este projeto utiliza o Terraform para gerenciar configurações e regras de alertas para o Alertmanager do Mimir. Ele foi projetado para ser genérico e reutilizável, permitindo a configuração de múltiplos ambientes, como preprod e prod.

Estrutura do Projeto

A estrutura do projeto está organizada da seguinte forma:

terraform-mimirtool/
├── main.tf                # Arquivo principal para configuração dos módulos e providers
├── variables.tf           # Variáveis globais para configuração dos ambientes
├── versions.tf            # Declaração dos providers e suas versões
├── modules/
│   └── mimirtool/         # Módulo genérico para configuração do Alertmanager
│       ├── main.tf        # Configuração do recurso mimirtool_alertmanager
│       ├── variables.tf   # Variáveis específicas do módulo
│       └── versions.tf    # Declaração dos providers no módulo
├── environments/          # Diretório contendo arquivos de configuração específicos de cada ambiente
│   ├── preprod/
│   │   └── config/
│   │       ├── alertmanager_rules.yaml
│   │       └── alertmanager_config.yaml
│   └── prod/
│       └── config/
│           ├── alertmanager_rules.yaml
│           └── alertmanager_config.yaml
└── README.md              # Documentação do projeto

Funcionalidades

  • Configuração de múltiplos ambientes (preprod e prod) para o Alertmanager do Mimir.
  • Gerenciamento de regras de alertas e configurações do Alertmanager.
  • Modularização para facilitar a reutilização e manutenção.

Objetivos

  • Automatizar a configuração do Alertmanager do Mimir usando Terraform.
  • Tornar o projeto genérico e reutilizável para diferentes ambientes.
  • Facilitar a manutenção e a escalabilidade das configurações.

Pré-requisitos

  • Terraform instalado na máquina.
  • Arquivos de configuração YAML para o Alertmanager disponíveis nos diretórios environments/preprod/config e environments/prod/config.

Como usar

  1. Clone o repositório:

    git clone https://github.com/Tech-Preta/terraform-mimirtool.git
    cd terraform-mimirtool
  2. Configure os arquivos YAML: Certifique-se de que os arquivos alertmanager_rules.yaml e alertmanager_config.yaml estão presentes nos diretórios environments/preprod/config e environments/prod/config.

  3. Inicialize o Terraform:

    terraform init
  4. Valide a configuração:

    terraform validate
  5. Planeje a aplicação:

    terraform plan
  6. Aplique a configuração:

    terraform apply
sequenceDiagram
  participant Dev as Desenvolvedor
  participant GH as GitHub
  participant WF as Workflow (terraform.yml)
  participant TF as Terraform
  Dev->>GH: Push para a branch "main"
  GH->>WF: Aciona workflow de CI
  WF->>WF: Checkout do código com actions/checkout@v3
  WF->>WF: Setup do Terraform (v1.4.6) com hashicorp/setup-terraform@v2
  WF->>TF: Executa "terraform init"
  WF->>TF: Executa "terraform validate"
  WF->>TF: Executa "terraform plan"
  WF-->>GH: Reporta status do CI
Loading
sequenceDiagram
  participant S as Script (alerts.sh)
  participant FS as Sistema de Arquivos
  participant TF as Arquivo terraform.tfvars
  S->>FS: Executa comando "find" para localizar arquivos YAML
  FS-->>S: Retorna lista de arquivos YAML de regras
  S->>TF: Atualiza variável "alertmanager_rules_files" em terraform.tfvars
Loading

Testes

Este projeto utiliza o Terratest para validar as configurações do Terraform.

Para executar os testes:

  1. Inicialize um módulo Go no diretório do projeto: No terminal, navegue até o diretório do projeto e execute:

    go mod tidy
  2. Adicione o pacote necessário: Após inicializar o módulo, execute o comando para adicionar o pacote:

    go get github.com/gruntwork-io/terratest/modules/terraform
  3. Execute os testes: Agora, execute os testes para verificar se o projeto está funcionando corretamente:

    go test -v

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.

Licença

Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais informações.