rockandska.rabbitmq

ansible-role-rabbitmq

Rol de Ansible para instalar RabbitMQ desde el repositorio de RabbitMQ.
Disponible en Ansible Galaxy

Ansible Galaxy:
Puntuación Galaxy

Travis Build:
Estado de Construcción

Compatibilidad

RabbitMQ
3.6.x Descontinuado
3.7.x Descontinuado
3.8 OK
> 3.8 No probado
Distribución
CentOS 7 OK
CentOS > 7 No probado
Debian 9 OK
Debian > 9 No probado
Ubuntu bionic OK
Ubuntu > bionic No probado

Requisitos en hosts remotos

Todas las distribuciones

  • ansible-role-erlang aplicada (no olvides usar una versión de Erlang compatible con la versión de RabbitMQ que se instalará. Consulta la documentación de RabbitMQ)
  • socat
  • logrotate
  • python requests >= 1.0.0 (si usas enlaces, intercambios, gestión de colas proporcionada por este rol)
  • Para un clúster, los hosts que forman parte del clúster deben ser resolubles por sus nombres de host.

Debian / Ubuntu

  • apt-transport-https
  • gpg-agent
  • ca-certificates

CentOS / RedHat

  • gnupg2

Variables de Rol

Las variables por defecto están en defaults/main.yml

---
###########
# Instalar #
###########
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

#################
# Configuración personalizada #
#################
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: []

###########
# Clúster #
###########
rabbitmq_is_master:
rabbitmq_slave_of:
rabbitmq_peer_discovery_classic: true
rabbitmq_cluster_node_type: disc
rabbitmq_internode_ssl_config:

###########
# Plugins #
###########
rabbitmq_plugins_to_enable: []
rabbitmq_plugins_to_disable: []

#########
# Usuarios #
#########
rabbitmq_users_to_create: []
rabbitmq_users_to_delete: []

#####################
# Parámetros Globales #
#####################
rabbitmq_global_parameters_to_create: []
rabbitmq_global_parameters_to_delete: []

############
# Usuario 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:

##########
# Vhosts #
##########
rabbitmq_vhosts_to_create: []
rabbitmq_vhosts_to_delete: []

##########
# Colas #
##########
rabbitmq_queues_to_create: []
rabbitmq_queues_to_delete: []

############
# Intercambio #
############
rabbitmq_exchanges_to_create: []
rabbitmq_exchanges_to_delete: []

############
# Enlaces #
############
rabbitmq_bindings_to_create: []
rabbitmq_bindings_to_delete: []

############
# Políticas #
############
rabbitmq_policies_to_create: []
rabbitmq_policies_to_delete: []

##############
# Parámetros #
##############
rabbitmq_parameters_to_create: []
rabbitmq_parameters_to_delete: []

#########
# Depuración #
#########
rabbitmq_hide_log: true

Detalles

  • rabbitmq_series

    • debe ser un número decimal (3.8 disponible a partir del 07.07.2021)
  • rabbitmq_rpm_repo_url

    • URL base del repositorio utilizada para la plantilla yum
  • rabbitmq_rpm_gpg_url

    • clave gpg utilizada para la plantilla yum
  • rabbitmq_rpm_repo_tpl

    • ruta a la plantilla del repositorio yum
    • si deseas usar tu propia plantilla
      • agrega tu plantilla junto a tu libro de jugadas en templates
      • usa una ruta diferente de la predeterminada
      • mantén el nombre del repositorio como rabbitmq
  • rabbitmq_series_rpm_version

    • instalar una versión específica de rabbitmq_series para sistemas CentOS / Redhat
    • ejemplo:
      3.8.11-1.el7
      3.8.10-1.el7
      3.8.9-1.el7
      3.8.8-1.el7
      
  • rabbitmq_rpm_disable_repo

    • se utiliza si deseas desactivar algunos repositorios al instalar RabbitMQ

    • por defecto: ""

    • ejemplo:

      rabbitmq_rpm_disable_repo: "*"
      
  • rabbitmq_rpm_enable_repo

    • se utiliza si deseas habilitar solo algunos repositorios en caso de que uses rabbitmq_rpm_disable_repo: "*" al instalar RabbitMQ

    • por defecto: ""

    • ejemplo:

      rabbitmq_rpm_enable_repo: "rabbitmq"
      
  • rabbitmq_deb_repo_url

    • URL base del repositorio utilizada para la plantilla apt
  • rabbitmq_deb_gpg_url

    • clave gpg utilizada para la plantilla apt
  • rabbitmq_deb_repo_tpl

    • ruta a la plantilla del repositorio apt
    • si deseas usar tu propia plantilla
      • agrega tu plantilla junto a tu libro de jugadas en templates
      • usa una ruta diferente de la predeterminada
  • rabbitmq_deb_pinning_tpl

    • ruta a la plantilla de fijación de apt
    • si deseas usar tu propia plantilla
      • agrega tu plantilla junto a tu libro de jugadas en un directorio templates
      • usa una ruta diferente de la predeterminada
  • rabbitmq_series_deb_version

    • instalar una versión específica de rabbitmq_series para sistemas Debian
    • ejemplo:
      3.8.11-1
      3.8.10-1
      3.8.9-1
      3.8.8-1
      
  • rabbitmq_vars_files

    • lista de archivos de variables utilizados para anular las variables por defecto si es necesario
    • si usas una ruta relativa, coloca esos archivos junto a tu libro de jugadas en el directorio vars
    • ejemplo:
      rabbitmq_vars_files:
        - settings.yml
      
  • rabbitmq_sysctl_tpl

    • ruta a la plantilla de configuración sysctl de RabbitMQ
    • solo se aplica a versiones >= 3.7 (Ver docs de RabbitMQ)
    • si deseas usar tu propia plantilla
      • agrega tu plantilla junto a tu libro de jugadas en un directorio templates
      • usa una ruta diferente de la predeterminada
  • rabbitmq_sysctl_config

    • un diccionario que representa la configuración sysctl personalizada de RabbitMQ a aplicar
    • cada nivel del diccionario se concatenará con un punto.
    • pon variables especiales entre comillas dobles (ejemplo: "true")
    • ejemplos:
      rabbitmq_sysctl_config:
        listeners:
          tcp:
            default: 5673
        tcp_listen_options:
          linger:
            on: "true"
       # Resultará en rabbitmq.conf como:
       # tcp_listen_options.linger.on = true
       # listeners.tcp.default = 5673
      
  • rabbitmq_erlang_tpl

    • ruta a la plantilla de configuración erlang de RabbitMQ
    • si deseas usar tu propia plantilla
      • agrega tu plantilla junto a tu libro de jugadas en un directorio templates
      • usa una ruta diferente de la predeterminada
  • rabbitmq_erlang_config

    • una cadena de varias líneas con la configuración de RabbitMQ en formato erlang a aplicar
    • se utilizará como rabbitmq.config para versiones <=3.6
    • se utilizará como advanced.conf para versiones >=3.7
    • no cierres la configuración con [ y ]., esto se hace dentro de la plantilla
    • ejemplo:
    rabbitmq_erlang_config: |
      {rabbit, [
          {tcp_listeners, [{"127.0.0.1", 5672}]}
        ]
      }
    
  • rabbitmq_env_tpl

    • ruta a la plantilla de configuración de entorno de RabbitMQ
    • si deseas usar tu propia plantilla
      • agrega tu plantilla junto a tu libro de jugadas en un directorio templates
      • usa una ruta diferente de la predeterminada
    • algunas variables de entorno se establecen automáticamente si SSL internode está activado
      • ERL_SSL_PATH
      • SERVER_ADDITIONAL_ERL_ARGS
      • RABBITMQ_CTL_ERL_ARGS
  • rabbitmq_env_config:

    • un diccionario que representa la configuración del entorno
    • la clave debe ser el nombre de la variable de entorno
    • el valor debe ser el contenido de la variable
    • ejemplo:
      rabbitmq_env_config:
        NODENAME: "bunny@mi_host"
      
  • rabbitmq_node_name:

    • una cadena que representa el nombre del nodo a utilizar
    • utilízalo si cambias el nombre del nodo a través de rabbitmq_env_config
    • ejemplo:
      rabbitmq_node_name: "bunny@mi_host"
      
  • rabbitmq_systemd_override_tpl

    • ruta a la plantilla de anulación del sistema RabbitMQ
    • si deseas usar tu propia plantilla
      • agrega tu plantilla junto a tu libro de jugadas en un directorio templates
      • usa una ruta diferente de la predeterminada
  • rabbitmq_systemd_override

    • un diccionario que representa la configuración de anulación del sistema
    • el primer nivel se usa para la sección ini
    • el segundo nivel se usa para la clave / valor
    • ejemplo:
      rabbitmq_systemd_override:
        Service:
          LimitNOFILE: 30000
      # Resultará en el archivo de anulación del sistema como:
      # [Service]
      # LimitNOFILE=30000
      
  • rabbitmq_custom_logrotate_tpl

    • ruta a la plantilla de logrotate personalizada de RabbitMQ
    • si deseas usar tu propia plantilla
      • agrega tu plantilla junto a tu libro de jugadas en un directorio templates
      • usa una ruta diferente de la predeterminada
  • rabbitmq_custom_logrotate

    • una cadena de varias líneas con las opciones de logrotate para los logs de RabbitMQ

    • borrará la configuración predeterminada

    • /!\ Ten en cuenta que si reemplazas la configuración predeterminada de logrotate por una personalizada, la configuración aplicada persistirá incluso si eliminas esta variable

    • ejemplo:

      rabbitmq_custom_logrotate: |
        semanal
        missingok
        rotate 40
        compress
        notifempty
      # Resultará en el archivo de configuración de logrotate como:
      # /var/log/rabbitmq/*.log {
      #   semanal
      #   missingok
      #   rotate 40
      #   compress
      #   notifempty
      # }
      
  • rabbitmq_users_groups

    • una lista de usuarios y argumentos del módulo de usuario (nombre, grupos, anexo)

    • Usado para establecer/agregar usuario a grupos después de la instalación de RabbitMQ

    • ejemplo:

      rabbitmq_users_groups:
        - name: rabbitmq
          groups: ssl-cert
          append: true
      
  • rabbitmq_is_master

    • verdadero / falso

    • etiqueta el host como un maestro

    • no es obligatorio en instalaciones independientes

    • se utiliza para saber en qué nodo se realizarán las llamadas y comandos de la API y dónde obtener la cookie para propagar.

    • Ejemplo:

      rabbitmq_is_master: true
      
  • rabbitmq_slave_of

    • nombre del inventario del maestro al que unirse

    • etiqueta el host como un esclavo

    • no es obligatorio en instalaciones independientes

    • debe ser un nombre de host/IP/alias que exista en el inventario

    • Ejemplo:

      rabbitmq_slave_of: rabbitmq-master.internal
      
  • rabbitmq_peer_discovery_classic

    • por defecto: verdadero
    • la configuración del clúster se generará automáticamente y se añadirá al archivo de configuración en función de los nombres del inventario (depende de rabbitmq_is_master, rabbitmq_slave_of variables de rol).
  • rabbitmq_cluster_node_type

    • por defecto: disc
    • indica si el nodo es de tipo disc o ram
  • rabbitmq_internode_ssl_config

    • se utiliza para escribir una configuración dedicadada internode (ver Documentación de RabbitMQ)
    • si se establece, la parte que necesita ser añadida a /etc/rabbitmq/rabbitmq-env.conf se hará automáticamente.
    • Ejemplo:
      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

    • lista de diccionarios para la creación de usuarios

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • Ejemplo:

      rabbitmq_users_to_create:
        - user: admin
          password: admin
          vhost: vhost_test
          configure_priv: .*
          read_priv: .*
          write_priv: .*
          tags: administrator
      
  • rabbitmq_users_to_delete

    • lista de usuarios a eliminar

    • Ejemplo:

      rabbitmq_users_to_delete:
        - guest
      
  • rabbitmq_global_parameters_to_create

    • lista de parámetros globales a crear

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • el valor se convertirá a json en la tarea

    • ejemplo:

       rabbitmq_global_parameters_to_create:
         - name: cluster_name
           value: mq-cluster
      
  • rabbitmq_global_parameters_to_delete

    • lista de parámetros globales a eliminar

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • el valor se convertirá a json en la tarea

    • ejemplo:

      rabbitmq_global_parameters_to_delete:
        - name: cluster_name
      
  • rabbitmq_management_user

    • Usuario utilizado por el plugin rabbitmq_management
    • Usado si se configura una o más de las siguientes configuraciones:
      • rabbitmq_exchanges_to_create
      • rabbitmq_exchanges_to_delete
      • rabbitmq_bindings_to_create
      • rabbitmq_bindings_to_delete
    • No olvides configurar rabbitmq_management para permitir conexiones solo desde localhost si es necesario
  • rabbitmq_management_password

    • contraseña para el usuario utilizado por el plugin rabbitmq_management

    • Usado si se configura una o más de las siguientes configuraciones:

      • rabbitmq_exchanges_to_create
      • rabbitmq_exchanges_to_delete
      • rabbitmq_bindings_to_create
      • rabbitmq_bindings_to_delete
    • No olvides configurar rabbitmq_management para permitir conexiones solo desde localhost si es necesario

  • rabbitmq_management_host

    • por defecto: localhost
    • Usado si se configura una o más de las siguientes configuraciones:
      • rabbitmq_exchanges_to_create
      • rabbitmq_exchanges_to_delete
      • rabbitmq_bindings_to_create
      • rabbitmq_bindings_to_delete
    • No olvides configurar rabbitmq_management para permitir conexiones solo desde localhost si es necesario
  • rabbitmq_management_port

    • por defecto: 15672
    • Usado si se configura una o más de las siguientes configuraciones:
      • rabbitmq_exchanges_to_create
      • rabbitmq_exchanges_to_delete
      • rabbitmq_bindings_to_create
      • rabbitmq_bindings_to_delete
    • No olvides configurar rabbitmq_management para permitir conexiones solo desde localhost si es necesario
  • rabbitmq_management_protocol

    • por defecto: http
    • Usado si se configura una o más de las siguientes configuraciones:
      • rabbitmq_exchanges_to_create
      • rabbitmq_exchanges_to_delete
      • rabbitmq_bindings_to_create
      • rabbitmq_bindings_to_delete
    • No olvides configurar rabbitmq_management para permitir conexiones solo desde localhost si es necesario
  • rabbitmq_management_ca_cert

    • certificado CA para verificar la conexión SSL a la API de gestión
    • Usado si se configura una o más de las siguientes configuraciones:
      • rabbitmq_exchanges_to_create
      • rabbitmq_exchanges_to_delete
      • rabbitmq_bindings_to_create
      • rabbitmq_bindings_to_delete
    • No olvides configurar rabbitmq_management para permitir conexiones solo desde localhost si es necesario
  • rabbitmq_management_client_cert

    • Certificado del cliente para enviar en conexiones SSL a la API de gestión.
    • Usado si se configura una o más de las siguientes configuraciones:
      • rabbitmq_exchanges_to_create
      • rabbitmq_exchanges_to_delete
      • rabbitmq_bindings_to_create
      • rabbitmq_bindings_to_delete
    • No olvides configurar rabbitmq_management para permitir conexiones solo desde localhost si es necesario
  • rabbitmq_management_client_key

    • Clave privada que coincide con el certificado del cliente.
    • Usado si se configura una o más de las siguientes configuraciones:
      • rabbitmq_exchanges_to_create
      • rabbitmq_exchanges_to_delete
      • rabbitmq_bindings_to_create
      • rabbitmq_bindings_to_delete
    • No olvides configurar rabbitmq_management para permitir conexiones solo desde localhost si es necesario
  • rabbitmq_plugins_to_enable

    • lista de plugins a habilitar

    • ejemplo:

      rabbitmq_plugins_to_enable:
        - rabbitmq_management
        - rabbitmq_shovel
      
  • rabbitmq_plugins_to_disable

    • lista de plugins a deshabilitar

    • ejemplo:

      rabbitmq_plugins_to_disable:
        - rabbitmq_shovel
      
  • rabbitmq_vhosts_to_create

    • lista de diccionarios para la creación de vhosts

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • Ejemplo:

      rabbitmq_vhosts_to_create:
        - name: vhost_test
          tracing: yes
      
  • rabbitmq_vhosts_to_delete

    • lista de vhosts a eliminar

    • Ejemplo:

      rabbitmq_vhosts_to_delete:
        - /
      
  • rabbitmq_queues_to_create

    • lista de colas a crear

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • ejemplo:

      rabbitmq_queues_to_create:
        - name: queue_test
          vhost: vhost_test
      
  • rabbitmq_queues_to_delete

    • lista de colas a eliminar

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • ejemplo:

      rabbitmq_queues_to_delete:
        - name: queue_test
          vhost: vhost_test
      
  • rabbitmq_exchanges_to_create

    • lista de intercambios a crear

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • ejemplo:

      rabbitmq_exchanges_to_create:
        - name: exchange_test
          vhost: vhost_test
      
  • rabbitmq_exchanges_to_delete

    • lista de intercambios a eliminar

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • ejemplo:

      rabbitmq_exchanges_to_delete:
        - name: exchange_test
          vhost: vhost_test
      
  • rabbitmq_bindings_to_create

    • lista de enlaces a crear

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • ejemplo:

      rabbitmq_bindings_to_create:
        - name: exchange_test
          destination: queue_test
          destination_type: queue
          vhost: vhost_test
      
  • rabbitmq_bindings_to_delete

    • lista de enlaces a eliminar

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • ejemplo:

      rabbitmq_bindings_to_delete:
        - name: exchange_test
          destination: queue_test
          destination_type: queue
          vhost: vhost_test
      
  • rabbitmq_policies_to_create

    • lista de políticas a crear

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • ejemplo:

       rabbitmq_policies_to_create:
         - name: HA
           vhost: vhost_test
           pattern: .*
           tags:
             ha-mode: all
      
  • rabbitmq_policies_to_delete

    • lista de políticas a eliminar

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • ejemplo:

      rabbitmq_policies_to_delete:
        - name: HA
          vhost: vhost_test
      
  • rabbitmq_parameters_to_create

    • lista de parámetros a crear

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • valor se convertirá a json en la tarea

    • ejemplo:

       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

    • lista de parámetros a eliminar

    • consulta la documentación de ansible para las opciones obligatorias y la compatibilidad de versiones

    • ejemplo:

      rabbitmq_parameters_to_delete:
        - component: federation
          name: local-username
      
  • rabbitmq_hide_log

    • por defecto: true
    • no mostrar el log de llamadas a la API para evitar la filtración de información sensible
    • establece en falso para depurar

Ejemplo de Playbook

Independiente

- hosts: rabbitmq
  roles:
    - rockandska.erlang
    - rockandska.rabbitmq

Clúster

Dado que se requiere que el nodo maestro se inicie antes de que los esclavos se unan, realiza el despliegue del clúster en dos pasos.

- 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

Pruebas Locales

Requisitos

python3 <3.8
docker

Ejecutar pruebas

$ make test

Después de la primera ejecución, deberían estar disponibles objetivos adicionales para cada entorno tox / escenario molecule mediante autocompletar.

Para depurar y ejecutar un comando molecule personalizado en un entorno personalizado solo con el escenario de prueba predeterminado:

$ source tmp/bin/activate
$ tox -e py3-ansible27 -- molecule test -s default

Para más información sobre molecule, consulta su documentación.

Si deseas ejecutar pruebas en un host docker remoto, solo especifica la variable DOCKER_HOST antes de ejecutar las pruebas de tox.

Licencia

BSD

Acerca del proyecto

RabbitMQ (HA compatible)

Instalar
ansible-galaxy install rockandska.rabbitmq
Licencia
Unknown
Descargas
12.1k
Propietario