rockandska.rabbitmq
ansible-role-rabbitmq
Rol de Ansible para instalar RabbitMQ desde el repositorio de RabbitMQ.
Disponible en Ansible Galaxy
Ansible Galaxy:
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
- agrega tu plantilla junto a tu libro de jugadas en
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
- instalar una versión específica de
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 RabbitMQpor 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
- agrega tu plantilla junto a tu libro de jugadas en
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
- agrega tu plantilla junto a tu libro de jugadas en un directorio
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
- instalar una versión específica de
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
- agrega tu plantilla junto a tu libro de jugadas en un directorio
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
- agrega tu plantilla junto a tu libro de jugadas en un directorio
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
- agrega tu plantilla junto a tu libro de jugadas en un directorio
- 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
- agrega tu plantilla junto a tu libro de jugadas en un directorio
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
- agrega tu plantilla junto a tu libro de jugadas en un directorio
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
oram
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 tareaejemplo:
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 tareaejemplo:
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 tareaejemplo:
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
ansible-galaxy install rockandska.rabbitmq