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
.
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
- Configuração de múltiplos ambientes (
preprod
eprod
) 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.
- 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.
- Terraform instalado na máquina.
- Arquivos de configuração YAML para o Alertmanager disponíveis nos diretórios
environments/preprod/config
eenvironments/prod/config
.
-
Clone o repositório:
git clone https://github.com/Tech-Preta/terraform-mimirtool.git cd terraform-mimirtool
-
Configure os arquivos YAML: Certifique-se de que os arquivos
alertmanager_rules.yaml
ealertmanager_config.yaml
estão presentes nos diretóriosenvironments/preprod/config
eenvironments/prod/config
. -
Inicialize o Terraform:
terraform init
-
Valide a configuração:
terraform validate
-
Planeje a aplicação:
terraform plan
-
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
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
Este projeto utiliza o Terratest para validar as configurações do Terraform.
-
Inicialize um módulo Go no diretório do projeto: No terminal, navegue até o diretório do projeto e execute:
go mod tidy
-
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
-
Execute os testes: Agora, execute os testes para verificar se o projeto está funcionando corretamente:
go test -v
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE
para mais informações.