rabbitmq
Объявление
Долгое время без обновлений. Я снова взялся за этот плейбук, буду сливать исправления (url, проверка ключей и т.д.) в основную ветку и выпускать рабочую тегированную версию.
Затем я сосредоточусь на создании следующей ветки, которая будет версией 2.0 этого плейбука. Основные вещи, которые я планирую сделать в версии 2, - это разделить шаги установки и чистую конфигурацию. Я не хочу поддерживать множество ОС в одном плейбуке. Таким образом, вы сможете создавать свой собственный ansible-playbook-rabbitmq-install-my-little-snowflak-os :)
Спасибо всем за участие!
Плейбук RabbitMQ
Плейбук для установки и настройки RabbitMQ. Позже появится множество настроек.
Если вы хотите обсудить изменения или помочь с поддержкой большего числа платформ, создайте проблему.
Установка
Используйте Ansible galaxy для установки этого плейбука:
$ ansible-galaxy install Mayeu.RabbitMQ,1.4.0
Ветка master
в настоящее время считается нестабильной. Пожалуйста, избегайте использования её для чего-либо, кроме тестирования :)
Поддерживаемые системы
В данный момент поддерживаются только Debian Jessie и Wheezy на amd64. Патчи приветствуются для поддержки других дистрибутивов или ОС.
Семантическое версионирование 2.0.0
Начиная с коммита 67c608826a140868a71854ce3129b5f3d67ddcce, этот плейбук использует семантическое версионирование. Следуя спецификации, и поскольку плейбук используется в производственной среде, я хочу избежать нарушения совместимости, первая версия - 1.0.0.
Открытое API, определенное в семантическом версионировании, соответствует настройкам, доступным пользователю. Нарушение API (увеличение версии с X.Y.Z
на (X+1).Y.Z
) в этом контексте означает, что пользователю необходимо изменить название переменной, чтобы его плейбук заработал.
Любая новая функция, добавленная (с X.Y.Z
до X.(Y+1).Z
), должна иметь рабочее значение по умолчанию, которое не требует взаимодействия с пользователем. Если добавление функции требует взаимодействия с пользователем, то это не незначительное обновление, а главное.
Переменные роли
Установка
Название | Тип | Описание | По умолчанию |
---|---|---|---|
rabbitmq_os_package |
Bool | Если истинно, использует стандартный пакет, предлагаемый ОС | false |
Окружение
Название | Тип | Описание | По умолчанию |
---|---|---|---|
rabbitmq_conf_env |
Hash | Установить переменные окружения | undef |
Пример:
rabbitmq_conf_env:
RABBITMQ_ROCKS: correct
Сгенерирует:
RABBITMQ_ROCKS="correct"
Сертификат
Название | Тип | Описание | По умолчанию |
---|---|---|---|
rabbitmq_cacert |
String | Путь к файлу сертификата CA. | files/rabbitmq_cacert.pem |
rabbitmq_server_key |
String | Путь к файлу ключа SSL. | files/rabbitmq_server_key.pem |
rabbitmq_server_cert |
String | Путь к файлу сертификата SSL. | files/rabbitmq_server_cert.pem |
rabbitmq_ssl |
Boolean | Определяет, нужно ли использовать SSL | true |
Файл конфигурации по умолчанию
Название | Тип | Описание | По умолчанию |
---|---|---|---|
rabbitmq_conf_tcp_listeners_address |
String | Адрес для tcp интерфейса | '' |
rabbitmq_conf_tcp_listeners_port |
Integer | Порт для tcp интерфейса | 5672 |
rabbitmq_conf_ssl_listeners_address |
String | Адрес для ssl интерфейса | '0.0.0.0' |
rabbitmq_conf_ssl_listeners_port |
Integer | Порт для ssl интерфейса | 5671 |
rabbitmq_conf_ssl_options_cacertfile |
String | Путь к сертификату CA | "/etc/rabbitmq/ssl/cacert.pem" |
rabbitmq_conf_ssl_options_certfile |
String | Путь к сертификату сервера | "/etc/rabbitmq/ssl/server_cert.pem" |
rabbitmq_conf_ssl_options_keyfile |
String | Путь к приватному ключу | "/etc/rabbitmq/ssl/server_key.pem" |
rabbitmq_conf_ssl_options_fail_if_no_peer_cert |
Boolean | Значение параметра fail_if_no_peer_cert |
"true" |
Плагины
Название | Тип | Описание | По умолчанию |
---|---|---|---|
rabbitmq_new_only |
String | Добавлять плагины как новые, не отключая другие | 'no' |
rabbitmq_plugins |
String | Список плагинов для активации | [] |
Vhost
Название | Тип | Описание | По умолчанию |
---|---|---|---|
rabbitmq_vhost_definitions |
List | Определяет список Vhost для создания | [] |
rabbitmq_users_definitions |
List of hash | Определяет пользователей и их vhost и пароль | [] |
Определение конфигурации vhosts:
rabbitmq_vhost_definitions:
- name: vhost1
node: node_name # Необязательно, по умолчанию "rabbit"
tracing: yes # Необязательно, по умолчанию "no"
Определение конфигурации пользователей:
rabbitmq_users_definitions:
- vhost: vhost1
user: user1
password: password1
node: node_name # Необязательно, по умолчанию "rabbit"
configure_priv: "^resource.*" # Необязательно, по умолчанию ".*"
read_priv: "^$" # Запрет на чтение.
write_priv: "^$" # Запрет на запись.
- vhost: vhost1
user: user2
password: password2
force: no
tags: # Необязательно, теги пользователя
- administrator
Федерация
Название | Тип | Описание | По умолчанию |
---|---|---|---|
rabbitmq_federation |
Boolean | Определяет, нужно ли настраивать федерацию | false |
rabbitmq_federation_configuration |
List of hashes | Определяет всю настройку федерации | Не определено |
rabbitmq_policy_configuration |
List of hashes | Определяет все политики федерации | Не определено |
Определение конфигурации upstream для федерации:
rabbitmq_federation_upstream:
- name: имя upstream
vhost: локальный vhost для федерации
value: json описание федерации
local_username: имя пользователя для федерации
Смотрите документацию RabbitMQ для возможных значений JSON.
Определение конфигурации политики:
rabbitmq_policy_configuration:
- name: имя политики
vhost: vhost, к которому будет применена политика
pattern: паттерн политики
tags: описание политики в виде словаря # пример: "ha-mode=all"
Требуемые файлы
Необходимо поместить нужные сертификаты в папку files/
, например:
files/
|- cacert.crt
|- myserver_key.key
|- myserver_cert.crt
А затем настроить роль:
rabbitmq_cacert: files/cacert.crt
rabbitmq_server_key: files/myserver_key.key
rabbitmq_server_cert: files/myserver_cert.crt
Тестирование
Есть несколько тестов, которые пытаются создать виртуальную машину с помощью Vagrant. Запустите их с помощью:
$ vagrant up # для теста с Debian jessie
$ export VAGRANT_BOX_NAME='chef/centos-6.5' vagrant up # для теста с Centos
Вы можете изменить используемую виртуальную машину во время теста, установив переменную окружения VAGRANT_BOX_NAME
на что-то другое, чем deb/jessie
.
Лицензия
BSD
RabbitMQ is a complete and highly reliable enterprise messaging system based on the emerging AMQP standard.
ansible-galaxy install silverlogic/ansible-playbook-rabbitmq