rabbitmq

ansible-role-rabbitmq

Роль Ansible для установки RabbitMQ из репозитория RabbitMQ. Доступно на Ansible Galaxy

Ansible Galaxy: Оценка Galaxy

Travis Build: Статус сборки

Совместимость

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

О проекте

RabbitMQ (HA compatible)

Установить
ansible-galaxy install rockandska/ansible-role-rabbitmq
Лицензия
Unknown
Загрузки
10996
Владелец