ansible_rabbitmq_minimalistic
ansible-rabbitmq-minimalistic
Минималистичная, но мощная роль Ansible для RabbitMQ с поддержкой кластеризации.
Написано для Debian 10 (может работать и на других версиях и дистрибутивах - если это так, пожалуйста, дайте мне знать).
Переменные роли
Кроме настроек по умолчанию (для которых вы можете обратиться к этому файлу), вам, вероятно, нужно будет развернуть ваш собственный файл rabbitmq.conf на серверах.
Вы можете заставить роль создать и развернуть ваш файл rabbitmq.conf, задав переменную rabbitmq_conf_template:
rabbitmq_conf_template: "path/to/rabbitmq.conf.j2"
Путь указывается относительно директории плейбука.
Таким образом, вы также можете развернуть кластер RabbitMQ, просто используя серверную переменную cluster_formation.classic_config.nodes в rabbitmq.conf.
Например, вы можете использовать шаблон rabbitmq.conf.j2 следующим образом:
{% for host in ansible_play_hosts_all %}
cluster_formation.classic_config.nodes.{{ loop.index }} = rabbit@{{ hostvars[host]['inventory_hostname'] }}
{% endfor %}
Чтобы включить кластеризацию, вам нужно настроить хосты с одинаковым erlang cookie.
Для этого вы можете использовать переменную rabbitmq_erlang_cookie (пожалуйста, рассмотрите возможность использования Ansible Vault для шифрования cookie).
При создании кластера также необходимо установить serial: 1 в вашем плейбуке (в противном случае узлы могут столкнуться с проблемами при попытке сформировать кластер).
Вы также можете включать плагины RabbitMQ, просто указав и развернув файл RabbitMQ enabled_plugins из шаблона:
rabbitmq_enabled_plugins_template: "path/to/enabled_plugins.j2"
Снова, путь указывается относительно директории плейбука.
Для других переменных смотрите Настройки роли.
Эта роль нацелена на минимализм: для выполнения более сложных конфигураций вы можете использовать Модули RabbitMQ Ansible.
Пример плейбука
- hosts: msgservers
serial: 1 # это нужно только если вы разворачиваете кластер RabbitMQ
roles:
- ansible-rabbitmq-minimalistic
vars:
rabbitmq_conf_template: "my_rabbit_conf/rabbitmq.conf.j2" # это необязательно
rabbitmq_enabled_plugins_template: "my_rabbit_conf/enabled_plugins.j2" # это необязательно
rabbitmq_erlang_cookie: "XXXXXXXXXXXXXXXXXXXX" # Требуется для кластеризации. ПРИМЕЧАНИЕ: это только пример, пожалуйста, используйте Ansible Vault!
Лицензия
Лицензия Apache 2.0
Информация об авторе
Марко Беллачи́ни - marco.bellaccini[at!]gmail.com
Minimalistic, yet powerful and clustering-enabled RabbitMQ Ansible role.
ansible-galaxy install marcobellaccini/ansible-rabbitmq-minimalistic