rabbitmq
ansible-role-rabbitmq
Роль Ansible для установки RabbitMQ из репозитория RabbitMQ. Доступно на Ansible Galaxy
Ansible Galaxy:
Совместимость
RabbitMQ | |
---|---|
3.6.x | Устарело |
3.7.x | Устарело |
3.8 | ОК |
> 3.8 | Не тестировалось |
Дистрибутив | |
CentOS 7 | ОК |
CentOS > 7 | Не тестировалось |
Debian 9 | ОК |
Debian > 9 | Не тестировалось |
Ubuntu bionic | ОК |
Ubuntu > bionic | Не тестировалось |
Требования к удалённым хостам
Все дистрибутивы
- ansible-role-erlang применена (не забудьте использовать совместимую с версией rabbitmq версию erlang. См. документацию rabbitmq)
- socat
- logrotate
- python requests >= 1.0.0 (если используются привязки, управление обменами и очередями, предоставляемое этой ролью)
- Для кластера, хосты, входящие в кластер, должны разрешаться по их именам хостов
Debian / Ubuntu
- apt-transport-https
- gpg-agent
- ca-certificates
CentOS / RedHat
- gnupg2
Переменные роли
Переменные по умолчанию находятся в defaults/main.yml
---
###########
# Установка #
###########
rabbitmq_series: 3.8
rabbitmq_series_rpm_version:
rabbitmq_series_deb_version:
rabbitmq_rpm_repo_url: https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el
rabbitmq_rpm_gpg_url: https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key
rabbitmq_rpm_repo_tpl: etc/yum.repos.d/rabbitmq.repo.j2
rabbitmq_rpm_disable_repo:
rabbitmq_rpm_enable_repo:
rabbitmq_deb_repo_url: https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb
rabbitmq_deb_gpg_url: https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key
rabbitmq_deb_repo_tpl: etc/apt/sources.list.d/rabbitmq.list.j2
rabbitmq_deb_pinning_tpl: etc/apt/preferences.d/rabbitmq.j2
#################
# Настройки #
#################
rabbitmq_vars_files: []
rabbitmq_sysctl_tpl: etc/rabbitmq/sysctl.conf.j2
rabbitmq_sysctl_config: {}
rabbitmq_erlang_tpl: etc/rabbitmq/erlang.config.j2
rabbitmq_erlang_config:
rabbitmq_env_tpl: etc/rabbitmq/rabbitmq-env.conf.j2
rabbitmq_env_config: {}
rabbitmq_node_name:
rabbitmq_systemd_override_tpl: etc/systemd/system/rabbitmq-server.service.d/override.conf.j2
rabbitmq_systemd_override: {}
rabbitmq_custom_logrotate_tpl: etc/logrotate.d/rabbitmq-server.j2
rabbitmq_custom_logrotate:
rabbitmq_users_groups: []
###########
# Кластер #
###########
rabbitmq_is_master:
rabbitmq_slave_of:
rabbitmq_peer_discovery_classic: true
rabbitmq_cluster_node_type: disc
rabbitmq_internode_ssl_config:
###########
# Плагины #
###########
rabbitmq_plugins_to_enable: []
rabbitmq_plugins_to_disable: []
#########
# Пользователи #
#########
rabbitmq_users_to_create: []
rabbitmq_users_to_delete: []
#####################
# Глобальные параметры #
#####################
rabbitmq_global_parameters_to_create: []
rabbitmq_global_parameters_to_delete: []
############
# API пользователь #
############
rabbitmq_management_user:
rabbitmq_management_password:
rabbitmq_management_host:
rabbitmq_management_port:
rabbitmq_management_protocol:
rabbitmq_management_ca_cert:
rabbitmq_management_client_cert:
rabbitmq_management_client_key:
##########
# Виртуальные хосты #
##########
rabbitmq_vhosts_to_create: []
rabbitmq_vhosts_to_delete: []
##########
# Очереди #
##########
rabbitmq_queues_to_create: []
rabbitmq_queues_to_delete: []
############
# Обмены #
############
rabbitmq_exchanges_to_create: []
rabbitmq_exchanges_to_delete: []
############
# Привязки #
############
rabbitmq_bindings_to_create: []
rabbitmq_bindings_to_delete: []
############
# Политики #
############
rabbitmq_policies_to_create: []
rabbitmq_policies_to_delete: []
##############
# Параметры #
##############
rabbitmq_parameters_to_create: []
rabbitmq_parameters_to_delete: []
#########
# Отладка #
#########
rabbitmq_hide_log: true
Подробности
rabbitmq_series
- должна быть дробной (3.8 доступен с 07.07.2021)
rabbitmq_rpm_repo_url
- базовый URL репозитория для шаблона yum
rabbitmq_rpm_gpg_url
- gpg ключ, использованный для шаблона yum
rabbitmq_rpm_repo_tpl
- путь к шаблону yum репозитория
- если вы хотите использовать свой собственный шаблон
- добавьте ваш шаблон рядом с вашим плейбуком в
templates
- используйте другой путь, чем по умолчанию
- сохраните название репозитория как
rabbitmq
- добавьте ваш шаблон рядом с вашим плейбуком в
rabbitmq_series_rpm_version
- установить конкретную версию
rabbitmq_series
для систем Centos / Redhat - пример:
3.8.11-1.el7 3.8.10-1.el7 3.8.9-1.el7 3.8.8-1.el7
- установить конкретную версию
rabbitmq_rpm_disable_repo
используется, если вы хотите отключить некоторые репозитории при установке rabbitmq
по умолчанию: ""
пример:
rabbitmq_rpm_disable_repo: "*"
rabbitmq_rpm_enable_repo
используется, если вы хотите включить только некоторые репозитории, если вы используете
rabbitmq_rpm_disable_repo: "*"
при установке rabbitmqпо умолчанию: ""
пример:
rabbitmq_rpm_enable_repo: "rabbitmq"
rabbitmq_deb_repo_url
- базовый URL репозитория для шаблона apt
rabbitmq_deb_gpg_url
- gpg ключ, использованный для шаблона apt
rabbitmq_deb_repo_tpl
- путь к шаблону apt репозитория
- если вы хотите использовать свой собственный шаблон
- добавьте ваш шаблон рядом с вашим плейбуком в
templates
- используйте другой путь, чем по умолчанию
- добавьте ваш шаблон рядом с вашим плейбуком в
rabbitmq_deb_pinning_tpl
- путь к шаблону pinning для apt
- если вы хотите использовать свой собственный шаблон
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
templates
- используйте другой путь, чем по умолчанию
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
rabbitmq_series_deb_version
- установить конкретную версию
rabbitmq_series
для систем Debian - пример:
3.8.11-1 3.8.10-1 3.8.9-1 3.8.8-1
- установить конкретную версию
rabbitmq_vars_files
- список файлов переменных, используемых для переопределения переменных по умолчанию, если это необходимо
- если используете относительный путь, положите эти файлы рядом с вашим плейбуком в каталоге
vars
- пример:
rabbitmq_vars_files: - settings.yml
rabbitmq_sysctl_tpl
- путь к шаблону конфигурации sysctl для rabbitmq
- применяется только к версиям >= 3.7 (См. документацию RabbitMQ)
- если вы хотите использовать свой собственный шаблон
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
templates
- используйте другой путь, чем по умолчанию
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
rabbitmq_sysctl_config
- словарь, представляющий пользовательскую конфигурацию sysctl для rabbitmq
- каждый уровень словаря будет конкатенироваться через точку .
- специальные переменные помещать в двойные кавычки (пример: "true")
- примеры:
rabbitmq_sysctl_config: listeners: tcp: default: 5673 tcp_listen_options: linger: on: "true" # Это будет отображено в rabbitmq.conf как: # tcp_listen_options.linger.on = true # listeners.tcp.default = 5673
rabbitmq_erlang_tpl
- путь к шаблону конфигурации erlang для rabbitmq
- если вы хотите использовать свой собственный шаблон
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
templates
- используйте другой путь, чем по умолчанию
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
rabbitmq_erlang_config
- многострочная строка с конфигурацией rabbitmq в формате erlang для применения
- будет использоваться как rabbitmq.config для версий <=3.6
- будет использоваться как advanced.conf для версий >=3.7
- не заключайте конфигурацию в
[
и].
, это делается внутри шаблона - пример:
rabbitmq_erlang_config: | {rabbit, [ {tcp_listeners, [{"127.0.0.1", 5672}]} ] }
rabbitmq_env_tpl
- путь к шаблону конфигурации окружения rabbitmq
- если вы хотите использовать свой собственный шаблон
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
templates
- используйте другой путь, чем по умолчанию
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
- некоторые переменные среды устанавливаются автоматически, если активирован SSL для внутренних узлов
- ERL_SSL_PATH
- SERVER_ADDITIONAL_ERL_ARGS
- RABBITMQ_CTL_ERL_ARGS
rabbitmq_env_config
:- словарь, представляющий конфигурацию окружения
- ключ должен быть именем переменной среды
- значение должно быть содержимым переменной
- пример:
rabbitmq_env_config: NODENAME: "bunny@myhost"
rabbitmq_node_name
:- строка, представляющая имя узла для использования
- используйте его, если вы изменяете имя узла через rabbitmq_env_config
- пример:
rabbitmq_node_name: "bunny@myhost"
rabbitmq_systemd_override_tpl
- путь к шаблону переопределения systemd для rabbitmq
- если вы хотите использовать свой собственный шаблон
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
templates
- используйте другой путь, чем по умолчанию
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
rabbitmq_systemd_override
- словарь, представляющий конфигурацию переопределения systemd
- первый уровень используется для секции ini
- второй уровень используется для ключа / значения
- пример:
rabbitmq_systemd_override: Service: LimitNOFILE: 30000 # Это будет отображено в файле переопределения systemd как: # [Service] # LimitNOFILE=30000
rabbitmq_custom_logrotate_tpl
- путь к шаблону пользовательского logrotate для rabbitmq
- если вы хотите использовать свой собственный шаблон
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
templates
- используйте другой путь, чем по умолчанию
- добавьте ваш шаблон рядом с вашим плейбуком в каталоге
rabbitmq_custom_logrotate
многострочная строка с параметрами logrotate для логов rabbitmq
заменит конфигурацию по умолчанию
/!\ Обратите внимание, что если вы замените конфигурацию logrotate по умолчанию на собственную, применённая конфигурация сохранится, даже если вы снимете эту переменную
пример:
rabbitmq_custom_logrotate: | weekly missingok rotate 40 compress notifempty # Это будет отображено в конфигурационном файле logrotate как: # /var/log/rabbitmq/*.log { # weekly # missingok # rotate 40 # compress # notifempty # }
rabbitmq_users_groups
список пользователей и аргументов модуля пользователя (имя, группы, append)
Используется для установки/добавления пользователя в группы после установки RabbitMQ
пример:
rabbitmq_users_groups: - name: rabbitmq groups: ssl-cert append: true
rabbitmq_is_master
true / false
помечает хост как мастер
не обязательно в установке по одному
используется, чтобы знать, на каком узле будут выполняться вызовы API и команды, и где взять cookie для распространения.
Пример:
rabbitmq_is_master: true
rabbitmq_slave_of
имя мастера из инвентаря, к которому необходимо присоединиться
помечает хост как слейв
не обязательно в установке по одному
должно быть именем хоста/IP/псевдонимом, который существует в инвентаре
Пример:
rabbitmq_slave_of: rabbitmq-master.internal
rabbitmq_peer_discovery_classic
- по умолчанию: true
- конфигурация кластера будет автоматически сгенерирована и добавлена в конфигурационный файл на основе имен инвентаря (зависит от переменных
rabbitmq_is_master
,rabbitmq_slave_of
).
rabbitmq_cluster_node_type
- по умолчанию: disc
- определяет, является ли узел типа
disc
илиram
rabbitmq_internode_ssl_config
- используется для записи специализированной внутренней конфигурации (см. Документацию RabbitMQ)
- если установлено, часть, которая должна быть добавлена в
/etc/rabbitmq/rabbitmq-env.conf
, будет сделана автоматически. - Пример:
rabbitmq_internode_ssl_config: | [ {server, [ {cacertfile, "/etc/ssl/private/Custom_Bundle-CA.pem"}, {certfile, "/usr/local/share/ca-certificates/{{ ansible_hostname }}.crt"}, {keyfile, "/etc/ssl/private/{{ ansible_hostname }}.key"}, {secure_renegotiate, true} ]}, {client, [ {cacertfile, "/etc/ssl/private/Custom_Bundle-CA.pem"}, {certfile, "/usr/local/share/ca-certificates/{{ ansible_hostname }}.crt"}, {keyfile, "/etc/ssl/private/{{ ansible_hostname }}.key"}, {secure_renegotiate, true} ]} ].
rabbitmq_users_to_create
список словарей для создания пользователей
обратитесь к документации ansible для обязательных опций и совместимости версий
Пример:
rabbitmq_users_to_create: - user: admin password: admin vhost: vhost_test configure_priv: .* read_priv: .* write_priv: .* tags: administrator
rabbitmq_users_to_delete
список пользователей для удаления
Пример:
rabbitmq_users_to_delete: - guest
rabbitmq_global_parameters_to_create
список глобальных параметров для создания
обратитесь к документации ansible для обязательных опций и совместимости версий
value
будет преобразован в json в задачепример:
rabbitmq_global_parameters_to_create: - name: cluster_name value: mq-cluster
rabbitmq_global_parameters_to_delete
список глобальных параметров для удаления
обратитесь к документации ansible для обязательных опций и совместимости версий
value
будет преобразован в json в задачепример:
rabbitmq_global_parameters_to_delete: - name: cluster_name
rabbitmq_management_user
- Пользователь, используемый плагином rabbitmq_management
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_password
пароль для пользователя, используемого плагином rabbitmq_management
Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_host
- по умолчанию: localhost
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_port
- по умолчанию: 15672
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_protocol
- по умолчанию: http
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_ca_cert
- Сертификат CA для проверки SSL соединения с API управления
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_client_cert
- Клиентский сертификат для отправки на SSL-соединения с API управления.
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_client_key
- Приватный ключ, соответствующий клиентскому сертификату.
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_plugins_to_enable
список плагинов для включения
пример:
rabbitmq_plugins_to_enable: - rabbitmq_management - rabbitmq_shovel
rabbitmq_plugins_to_disable
список плагинов для отключения
пример:
rabbitmq_plugins_to_disable: - rabbitmq_shovel
rabbitmq_vhosts_to_create
список словарей для создания виртуальных хостов
обратитесь к документации ansible для обязательных опций и совместимости версий
Пример:
rabbitmq_vhosts_to_create: - name: vhost_test tracing: yes
rabbitmq_vhosts_to_delete
список виртуальных хостов для удаления
Пример:
rabbitmq_vhosts_to_delete: - /
rabbitmq_queues_to_create
список очередей для создания
обратитесь к документации ansible для обязательных опций и совместимости версий
пример:
rabbitmq_queues_to_create: - name: queue_test vhost: vhost_test
rabbitmq_queues_to_delete
список очередей для удаления
обратитесь к документации ansible для обязательных опций и совместимости версий
пример:
rabbitmq_queues_to_delete: - name: queue_test vhost: vhost_test
rabbitmq_exchanges_to_create
список обменов для создания
обратитесь к документации ansible для обязательных опций и совместимости версий
пример:
rabbitmq_exchanges_to_create: - name: exchange_test vhost: vhost_test
rabbitmq_exchanges_to_delete
список обменов для удаления
обратитесь к документации ansible для обязательных опций и совместимости версий
пример:
rabbitmq_exchanges_to_delete: - name: exchange_test vhost: vhost_test
rabbitmq_bindings_to_create
список привязок для создания
обратитесь к документации ansible для обязательных опций и совместимости версий
пример:
rabbitmq_bindings_to_create: - name: exchange_test destination: queue_test destination_type: queue vhost: vhost_test
rabbitmq_bindings_to_delete
список привязок для удаления
обратитесь к документации ansible для обязательных опций и совместимости версий
пример:
rabbitmq_bindings_to_delete: - name: exchange_test destination: queue_test destination_type: queue vhost: vhost_test
rabbitmq_policies_to_create
список политик для создания
обратитесь к документации ansible для обязательных опций и совместимости версий
пример:
rabbitmq_policies_to_create: - name: HA vhost: vhost_test pattern: .* tags: ha-mode: all
rabbitmq_policies_to_delete
список политик для удаления
обратитесь к документации ansible для обязательных опций и совместимости версий
пример:
rabbitmq_policies_to_delete: - name: HA vhost: vhost_test
rabbitmq_parameters_to_create
список параметров для создания
обратитесь к документации ansible для обязательных опций и совместимости версий
value
будет преобразован в json в задачепример:
rabbitmq_parameters_to_create: - name: federation-test component: federation-upstream value: uri: amqp://admin:admin@localhost prefetch-count: 1 vhost: vhost_test
rabbitmq_parameters_to_delete
список параметров для удаления
обратитесь к документации ansible для обязательных опций и совместимости версий
пример:
rabbitmq_parameters_to_delete: - component: federation name: local-username
rabbitmq_hide_log
- по умолчанию: true
- не отображать журнал для вызовов API, чтобы избежать утечки конфиденциальной информации
- установите в false для отладки
Пример плейбука
В одиночку
- hosts: rabbitmq
roles:
- rockandska.erlang
- rockandska.rabbitmq
Кластер
Так как требуется, чтобы мастер-узел был запущен перед тем, как присоединиться слейвам, выполнение кластера должно происходить в два шага.
- hosts: rabbitmq-master
roles:
- role: rockandska.erlang
- role: rockandska.rabbitmq
vars:
rabbitmq_is_master: true
- hosts: rabbitmq-slave
roles:
- role: rockandska.erlang
- role: rockandska.rabbitmq
vars:
rabbitmq_slave_of: rabbitmq-master
Локальное тестирование
Требования
python3 <3.8 docker
Запуск тестов
$ make test
После первого запуска дополнительные цели для каждого tox окружения / сценария молекулы должны быть доступны через автозаполнение.
Чтобы отладить и запустить кастомную команду молекулы в кастомном окружении только с тестовым сценарием по умолчанию:
$ source tmp/bin/activate
$ tox -e py3-ansible27 -- molecule test -s default
Для получения дополнительной информации о молекуле перейдите на документацию.
Если вы хотите запустить тесты на удаленном docker-хосте, просто укажите переменную DOCKER_HOST
перед запуском тестов tox.
Лицензия
BSD
ansible-galaxy install rockandska/ansible-role-rabbitmq