{"id":28356468,"url":"https://github.com/chcdc/cluster-rabbitmq-example","last_synced_at":"2026-05-04T19:40:29.239Z","repository":{"id":287992164,"uuid":"950311367","full_name":"chcdc/cluster-rabbitmq-example","owner":"chcdc","description":"A simple example repository for creating a rabbitmq cluster with three nodes.","archived":false,"fork":false,"pushed_at":"2025-06-14T20:35:07.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-14T21:34:42.673Z","etag":null,"topics":["ansible","chcdc","devops","hacktoberfest","rabbitmq","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chcdc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-18T00:55:13.000Z","updated_at":"2025-06-14T20:36:26.000Z","dependencies_parsed_at":"2025-04-15T02:34:01.873Z","dependency_job_id":null,"html_url":"https://github.com/chcdc/cluster-rabbitmq-example","commit_stats":null,"previous_names":["chcdc/cluster-rabbitmq-example"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chcdc/cluster-rabbitmq-example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chcdc%2Fcluster-rabbitmq-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chcdc%2Fcluster-rabbitmq-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chcdc%2Fcluster-rabbitmq-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chcdc%2Fcluster-rabbitmq-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chcdc","download_url":"https://codeload.github.com/chcdc/cluster-rabbitmq-example/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chcdc%2Fcluster-rabbitmq-example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32622724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","chcdc","devops","hacktoberfest","rabbitmq","terraform"],"created_at":"2025-05-28T06:41:09.099Z","updated_at":"2026-05-04T19:40:29.234Z","avatar_url":"https://github.com/chcdc.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cluster RabbitMQ na AWS\n\nEste projeto automatiza a criação e configuração de um cluster RabbitMQ na AWS usando **Terraform** para provisionar a infraestrutura e **Ansible** para configurar os serviços.\n\n## 📋 Visão Geral\n\nO projeto cria um cluster RabbitMQ altamente disponível com:\n- **1 nó master** para coordenação do cluster\n- **2 nós worker** para distribuição de carga\n- **Spot Instances** para redução de custos\n- **Configuração automática** do cluster\n- **Interface web** do RabbitMQ habilitada\n\n## 🏗️ Arquitetura\n\n```\n┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐\n│  RabbitMQ       │    │  RabbitMQ       │    │  RabbitMQ       │\n│  Master Node    │◄──►│  Worker Node 1  │◄──►│  Worker Node 2  │\n│  (t3.small)     │    │  (t3.small)     │    │  (t3.small)     │\n└─────────────────┘    └─────────────────┘    └─────────────────┘\n         │                       │                       │\n         └───────────────────────┼───────────────────────┘\n                                 │\n                    ┌─────────────────────┐\n                    │    AWS VPC          │\n                    │  Security Groups    │\n                    │  Multiple Subnets   │\n                    └─────────────────────┘\n```\n\n## 🚀 Pré-requisitos\n\n### Ferramentas Necessárias\n- **Terraform** \u003e= 1.0\n- **Ansible** \u003e= 2.9\n- **AWS CLI** configurado\n- **Chave SSH** (`~/.ssh/id_rsa.pub`)\n\n### Configuração AWS\n```bash\n# Configure suas credenciais AWS\naws configure\n```\n\n### Variáveis Obrigatórias\nVocê precisa definir as seguintes variáveis no Terraform:\n- `vpc_id`: ID da VPC onde as instâncias serão criadas\n- `subnet_ids`: Lista de IDs das subnets\n\n## 📁 Estrutura do Projeto\n\n```\ncluster-rabbitmq-example/\n├── terraform/                  # Infraestrutura como código\n│   ├── main.tf                # Recursos principais\n│   ├── variables.tf           # Variáveis configuráveis\n│   ├── outputs.tf             # Outputs do Terraform\n│   ├── providers.tf           # Configuração de provedores\n│   └── modules/\n│       └── spot-instance/     # Módulo para spot instances\n├── ansible/                   # Configuração e automação\n│   ├── main.yml              # Playbook principal\n│   ├── aws_ec2.yml           # Inventário dinâmico AWS\n│   ├── ansible.cfg           # Configurações do Ansible\n│   ├── group_vars/           # Variáveis por grupo\n│   │   └── debian.yml        # Configurações específicas do Debian\n│   └── roles/\n│       └── rabbitmq/         # Role do RabbitMQ\n│           ├── tasks/        # Tarefas de configuração\n│           ├── templates/    # Templates de configuração\n│           ├── handlers/     # Handlers para restart de serviços\n│           └── vars/         # Variáveis do role\n└── README.md                 # Este arquivo\n```\n\n## 🛠️ Instalação e Uso\n\n### 1. Provisionar Infraestrutura\n\n```bash\ncd terraform/\n\n# Inicializar Terraform\nterraform init\n\n# Revisar o plano de execução\nterraform plan\n\n# Aplicar as mudanças\nterraform apply\n```\n\n### 2. Configurar Cluster RabbitMQ\n\n```bash\ncd ../ansible/\n\n# Verificar inventário de hosts\nansible-inventory -i aws_ec2.yml --graph\n\n# [Opcional] Gerar inventário estático\nansible-playbook -i aws_ec2.yml generate_inventory.yml\n\n# Aplicar configurações do RabbitMQ\nansible-playbook main.yml\n```\n\n## ⚙️ Configurações\n\n### Terraform - Variáveis Principais\n\n| Variável | Descrição | Padrão | Obrigatório |\n|----------|-----------|--------|-------------|\n| `vpc_id` | ID da VPC | - | ✅ |\n| `subnet_ids` | Lista de IDs das subnets | - | ✅ |\n| `debian_instance_count` | Número de nós worker | 2 | ❌ |\n| `debian_instance_master_count` | Número de nós master | 1 | ❌ |\n| `debian_instance_type` | Tipo de instância | t3.small | ❌ |\n| `spot_price` | Preço máximo spot | 0.016 | ❌ |\n| `key_name` | Nome da chave SSH | ssh-key | ❌ |\n| `allowed_ssh_cidr` | CIDRs permitidos para SSH | [\"0.0.0.0/0\"] | ❌ |\n\n### Exemplo de arquivo `terraform.tfvars`:\n\n```hcl\nvpc_id = \"vpc-12345678\"\nsubnet_ids = [\"subnet-12345678\", \"subnet-87654321\"]\ndebian_instance_count = 2\ndebian_instance_master_count = 1\nspot_price = \"0.020\"\nallowed_ssh_cidr = [\"10.0.0.0/8\", \"172.16.0.0/12\"]\n```\n\n## 🌐 Acesso ao RabbitMQ\n\nApós a instalação, você pode acessar:\n\n- **Interface Web**: `http://\u003cip-master\u003e:15672`\n- **Usuário padrão**: Configurado pelo Ansible\n- **Porta AMQP**: 5672\n- **Porta Management**: 15672\n\n## 🔧 Troubleshooting\n\n### Problemas Comuns\n\n**1. Erro de credenciais AWS**\n```bash\naws configure list\naws sts get-caller-identity\n```\n\n**2. Instâncias spot não disponíveis**\n- Aumente o `spot_price` no `variables.tf`\n- Considere usar instâncias on-demand\n\n**3. Falha na configuração do cluster**\n```bash\n# Verificar logs do Ansible\nansible-playbook main.yml -vvv\n\n# Verificar conectividade\nansible all -i aws_ec2.yml -m ping\n```\n\n**4. Chave SSH não encontrada**\n```bash\n# Verificar se a chave existe\nls -la ~/.ssh/id_rsa.pub\n\n# Gerar nova chave se necessário\nssh-keygen -t rsa -b 4096 -C \"your_email@example.com\"\n```\n\n## 🔐 Segurança\n\n### Recomendações de Segurança\n- ✅ Use CIDRs específicos em `allowed_ssh_cidr`\n- ✅ Configure usuários específicos do RabbitMQ\n- ✅ Use SSL/TLS em produção\n- ✅ Implemente backup regulares\n- ✅ Monitore logs de acesso\n\n### Security Groups\nO projeto cria security groups com as seguintes regras:\n- **SSH (22)**: Acesso restrito por CIDR\n- **RabbitMQ Management (15672)**: Interface web\n- **RabbitMQ AMQP (5672)**: Comunicação entre aplicações\n- **Tráfego interno**: Comunicação entre nós do cluster\n\n## 📊 Monitoramento\n\nO RabbitMQ Management Plugin é habilitado automaticamente e fornece:\n- Dashboard com métricas em tempo real\n- Monitoramento de filas\n- Gestão de usuários e permissões\n- Visualização da topologia do cluster\n\n## 🤝 Contribuindo\n\n1. Fork o projeto\n2. Crie uma branch para sua feature (`git checkout -b feature/AmazingFeature`)\n3. Commit suas mudanças (`git commit -m 'Add some AmazingFeature'`)\n4. Push para a branch (`git push origin feature/AmazingFeature`)\n5. Abra um Pull Request\n\n\n## 🆘 Suporte\n\nPara problemas e dúvidas:\n1. Verifique a seção de [Troubleshooting](#🔧-troubleshooting)\n2. Abra uma issue neste repositório\n\n---\n\n**⚠️ Aviso**: Este projeto usa spot instances para reduzir custos, mas elas podem ser interrompidas pela AWS. Para ambientes de produção, considere usar instâncias on-demand ou reserved instances.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchcdc%2Fcluster-rabbitmq-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchcdc%2Fcluster-rabbitmq-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchcdc%2Fcluster-rabbitmq-example/lists"}