marcobellaccini.ansible_rabbitmq_minimalistic
ansible-rabbitmq-minimalista
Rol de Ansible para RabbitMQ minimalista, pero poderoso y habilitado para clustering.
Escrito para Debian 10 (también puede funcionar en otras versiones y distribuciones, si es así, por favor házmelo saber).
Variables del Rol
Aparte de los valores predeterminados del rol (a los que puedes referirte en este archivo), probablemente querrás desplegar tu archivo rabbitmq.conf personalizado en los servidores.
Puedes hacer que el rol genere y despliegue tu archivo rabbitmq.conf definiendo la variable rabbitmq_conf_template:
rabbitmq_conf_template: "ruta/a/rabbitmq.conf.j2"
La ruta es relativa al directorio del playbook.
De esta manera, también puedes desplegar un clúster de RabbitMQ simplemente aprovechando la variable cluster_formation.classic_config.nodes en rabbitmq.conf.
Por ejemplo, puedes usar una plantilla rabbitmq.conf.j2 como esta:
{% for host in ansible_play_hosts_all %}
cluster_formation.classic_config.nodes.{{ loop.index }} = rabbit@{{ hostvars[host]['inventory_hostname'] }}
{% endfor %}
Para habilitar el clustering, tendrás que configurar los hosts con la misma cookie de erlang.
Para esto, puedes usar la variable rabbitmq_erlang_cookie (se recomienda usar Ansible Vault para encriptar la cookie).
Cuando estés haciendo clustering, también tendrás que establecer serial: 1 en tu playbook (de lo contrario, los nodos pueden experimentar problemas al intentar formar el clúster).
Además, puedes habilitar plugins de RabbitMQ simplemente especificando y desplegando un archivo enabled_plugins de RabbitMQ desde una plantilla:
rabbitmq_enabled_plugins_template: "ruta/a/enabled_plugins.j2"
De nuevo, la ruta es relativa al directorio del playbook.
Para otras variables, consulta Valores Predeterminados del Rol.
Este rol tiene como objetivo ser minimalista: para realizar configuraciones avanzadas, puedes usar Módulos de RabbitMQ de Ansible.
Ejemplo de Playbook
- hosts: msgservers
serial: 1 # esto es requerido solo si despliegas un clúster de RabbitMQ
roles:
- ansible-rabbitmq-minimalista
vars:
rabbitmq_conf_template: "mi_rabbit_conf/rabbitmq.conf.j2" # esto es opcional
rabbitmq_enabled_plugins_template: "mi_rabbit_conf/enabled_plugins.j2" # esto es opcional
rabbitmq_erlang_cookie: "XXXXXXXXXXXXXXXXXXXX" # Requerido para el clustering. NOTA: este es solo un ejemplo: ¡por favor usa Ansible Vault!
Licencia
Licencia Apache 2.0
Información del Autor
Marco Bellaccini - marco.bellaccini[at!]gmail.com
Minimalistic, yet powerful and clustering-enabled RabbitMQ Ansible role.
ansible-galaxy install marcobellaccini.ansible_rabbitmq_minimalistic