rockandska.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_mastertrue / 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_createrabbitmq_exchanges_to_deleterabbitmq_bindings_to_createrabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_passwordпароль для пользователя, используемого плагином rabbitmq_management
Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_createrabbitmq_exchanges_to_deleterabbitmq_bindings_to_createrabbitmq_bindings_to_delete
Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_host- по умолчанию: localhost
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_createrabbitmq_exchanges_to_deleterabbitmq_bindings_to_createrabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_port- по умолчанию: 15672
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_createrabbitmq_exchanges_to_deleterabbitmq_bindings_to_createrabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_protocol- по умолчанию: http
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_createrabbitmq_exchanges_to_deleterabbitmq_bindings_to_createrabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_ca_cert- Сертификат CA для проверки SSL соединения с API управления
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_createrabbitmq_exchanges_to_deleterabbitmq_bindings_to_createrabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_client_cert- Клиентский сертификат для отправки на SSL-соединения с API управления.
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_createrabbitmq_exchanges_to_deleterabbitmq_bindings_to_createrabbitmq_bindings_to_delete
- Не забудьте настроить rabbitmq_management, чтобы разрешить подключение только с локального хоста, если это необходимо
rabbitmq_management_client_key- Приватный ключ, соответствующий клиентскому сертификату.
- Используется, если установлена одна или несколько из следующих конфигураций:
rabbitmq_exchanges_to_createrabbitmq_exchanges_to_deleterabbitmq_bindings_to_createrabbitmq_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.rabbitmq
