rockandska.rabbitmq
ansible-role-rabbitmq
Rôle Ansible pour installer RabbitMQ à partir du dépôt RabbitMQ.
Disponible sur Ansible Galaxy
Ansible Galaxy :
Compatibilité
RabbitMQ | |
---|---|
3.6.x | Déprécié |
3.7.x | Déprécié |
3.8 | OK |
> 3.8 | Non testé |
Distribution | |
CentOS 7 | OK |
CentOS > 7 | Non testé |
Debian 9 | OK |
Debian > 9 | Non testé |
Ubuntu bionic | OK |
Ubuntu > bionic | Non testé |
Conditions requises sur les hôtes distants
Toutes les distributions
- ansible-role-erlang appliqué (n'oubliez pas d'utiliser une série Erlang compatible avec la version de RabbitMQ qui sera installée. Voir documentation de RabbitMQ)
- socat
- logrotate
- python requests >= 1.0.0 ( si utilisation des liaisons, échanges, gestion des files d'attente fournis par ce rôle )
- Pour un cluster, les hôtes faisant partie du cluster doivent être résolvables par leurs noms d'hôtes
Debian / Ubuntu
- apt-transport-https
- gpg-agent
- ca-certificates
CentOS / RedHat
- gnupg2
Variables de rôle
Les variables par défaut se trouvent dans defaults/main.yml
---
###########
# Installer #
###########
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
#################
# Configuration personnalisée #
#################
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: []
###########
# Cluster #
###########
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: []
#########
# Utilisateurs #
#########
rabbitmq_users_to_create: []
rabbitmq_users_to_delete: []
#####################
# Paramètres globaux #
#####################
rabbitmq_global_parameters_to_create: []
rabbitmq_global_parameters_to_delete: []
############
# Utilisateur 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: []
##########
# Files d'attente #
##########
rabbitmq_queues_to_create: []
rabbitmq_queues_to_delete: []
############
# Échanges #
############
rabbitmq_exchanges_to_create: []
rabbitmq_exchanges_to_delete: []
############
# Liaisons #
############
rabbitmq_bindings_to_create: []
rabbitmq_bindings_to_delete: []
############
# Politiques #
############
rabbitmq_policies_to_create: []
rabbitmq_policies_to_delete: []
##############
# Paramètres #
##############
rabbitmq_parameters_to_create: []
rabbitmq_parameters_to_delete: []
#########
# Débogage #
#########
rabbitmq_hide_log: true
Détails
rabbitmq_series
: doit être un nombre décimal (3.8 disponible depuis le 07.07.2021)rabbitmq_rpm_repo_url
: URL de base du dépôt utilisé pour le modèle yumrabbitmq_rpm_gpg_url
: clé gpg à utiliser pour le modèle yumrabbitmq_rpm_repo_tpl
: chemin vers le modèle de dépôt yum
Si vous souhaitez utiliser votre propre modèle :- ajoutez votre modèle à côté de votre playbook dans
templates
- utilisez un chemin différent de celui par défaut
- conservez le nom du dépôt comme
rabbitmq
- ajoutez votre modèle à côté de votre playbook dans
rabbitmq_series_rpm_version
: installe une version spécifique derabbitmq_series
pour les systèmes CentOS / RedHat
Exemple :3.8.11-1.el7 3.8.10-1.el7 3.8.9-1.el7 3.8.8-1.el7
rabbitmq_rpm_disable_repo
: utilisé pour désactiver certains dépôts lors de l'installation de RabbitMQrabbitmq_rpm_enable_repo
: utilisé pour activer uniquement certains dépôts lors de l'installation de RabbitMQrabbitmq_deb_repo_url
: URL de base du dépôt utilisé pour le modèle aptrabbitmq_deb_gpg_url
: clé gpg à utiliser pour le modèle aptrabbitmq_deb_repo_tpl
: chemin vers le modèle de dépôt apt
Si vous souhaitez utiliser votre propre modèle, procédez comme pour yum.rabbitmq_deb_pinning_tpl
: chemin vers le modèle de pinning apt
Si vous souhaitez utiliser votre propre modèle, procédez comme pour yum.rabbitmq_series_deb_version
: installe une version spécifique derabbitmq_series
pour les systèmes Debian
Exemple :3.8.11-1 3.8.10-1 3.8.9-1 3.8.8-1
rabbitmq_vars_files
: liste de fichiers de variables utilisés pour remplacer les variables par défaut si nécessaire.
Exemple :rabbitmq_vars_files: - settings.yml
rabbitmq_sysctl_tpl
: chemin vers le modèle de configuration sysctl de RabbitMQ
S'applique uniquement aux versions >= 3.7.rabbitmq_sysctl_config
: un dictionnaire représentant la configuration sysctl personnalisée à appliquer.
Exemple :rabbitmq_sysctl_config: listeners: tcp: default: 5673 tcp_listen_options: linger: on: "true"
rabbitmq_erlang_tpl
: chemin vers le modèle de configuration Erlang de RabbitMQ
Si vous souhaitez utiliser votre propre modèle, procédez comme pour yum.rabbitmq_erlang_config
: une chaîne multilignes avec la configuration RabbitMQ au format Erlang à appliquer.
Exemple :rabbitmq_erlang_config: | {rabbit, [ {tcp_listeners, [{"127.0.0.1", 5672}]} ] }
rabbitmq_env_tpl
: chemin vers le modèle de configuration d'environnement RabbitMQ
Si vous souhaitez utiliser votre propre modèle, procédez comme pour yum.rabbitmq_env_config
: un dictionnaire représentant la configuration d'environnement.
Exemple :rabbitmq_env_config: NODENAME: "bunny@monhote"
rabbitmq_node_name
: une chaîne représentant le nom du nœud à utiliser.
Exemple :rabbitmq_node_name: "bunny@monhote"
rabbitmq_systemd_override_tpl
: chemin vers le modèle de remplacement systemd de RabbitMQ.
Si vous souhaitez utiliser votre propre modèle, procédez comme pour yum.rabbitmq_systemd_override
: un dictionnaire représentant la configuration de remplacement systemd.
Exemple :rabbitmq_systemd_override: Service: LimitNOFILE: 30000
rabbitmq_custom_logrotate_tpl
: chemin vers le modèle de logrotate personnalisé de RabbitMQ.
Si vous souhaitez utiliser votre propre modèle, procédez comme pour yum.rabbitmq_custom_logrotate
: une chaîne multilignes avec les options de logrotate pour les journaux de RabbitMQ.
Exemple :rabbitmq_custom_logrotate: | weekly missingok rotate 40 compress notifempty
rabbitmq_users_groups
: une liste d'utilisateurs et d'arguments du module d'utilisateur (nom, groupes, ajout) pour ajouter des utilisateurs à des groupes après l'installation de RabbitMQ.
Exemple :rabbitmq_users_groups: - name: rabbitmq groups: ssl-cert append: true
rabbitmq_is_master
: vrai / faux pour marquer l'hôte comme maître.rabbitmq_slave_of
: nom d'inventaire du maître à rejoindre.rabbitmq_peer_discovery_classic
: par défaut : vrai.
La configuration du cluster sera générée automatiquement.rabbitmq_cluster_node_type
: par défaut : disc.
Type du nœud, soitdisc
, soitram
.rabbitmq_internode_ssl_config
: utilisé pour écrire la configuration SSL dédiée pour les nœuds.
Exemple :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
: liste de dictionnaires pour la création d'utilisateurs.rabbitmq_users_to_delete
: liste d'utilisateurs à supprimer.
Exemple :rabbitmq_users_to_delete: - guest
rabbitmq_global_parameters_to_create
: liste de paramètres globaux à créer.
Exemple :rabbitmq_global_parameters_to_create: - name: cluster_name value: mq-cluster
rabbitmq_global_parameters_to_delete
: liste de paramètres globaux à supprimer.rabbitmq_management_user
: utilisateur utilisé par le plugin rabbitmq_management.rabbitmq_management_password
: mot de passe pour l'utilisateur du plugin rabbitmq_management.rabbitmq_management_host
: par défaut : localhost.rabbitmq_management_port
: par défaut : 15672.rabbitmq_management_protocol
: par défaut : http.rabbitmq_management_ca_cert
: certificat CA pour vérifier la connexion SSL avec l'API de gestion.rabbitmq_management_client_cert
: certificat client à envoyer sur les connexions SSL à l'API de gestion.rabbitmq_management_client_key
: clé privée correspondant au certificat client.rabbitmq_plugins_to_enable
: liste des plugins à activer.
Exemple :rabbitmq_plugins_to_enable: - rabbitmq_management - rabbitmq_shovel
rabbitmq_plugins_to_disable
: liste des plugins à désactiver.
Exemple :rabbitmq_plugins_to_disable: - rabbitmq_shovel
rabbitmq_vhosts_to_create
: liste de dictionnaires pour la création de vhosts.
Exemple :rabbitmq_vhosts_to_create: - name: vhost_test tracing: yes
rabbitmq_vhosts_to_delete
: liste de vhosts à supprimer.
Exemple :rabbitmq_vhosts_to_delete: - /
rabbitmq_queues_to_create
: liste de files d'attente à créer.
Exemple :rabbitmq_queues_to_create: - name: queue_test vhost: vhost_test
rabbitmq_queues_to_delete
: liste de files d'attente à supprimer.
Exemple :rabbitmq_queues_to_delete: - name: queue_test vhost: vhost_test
rabbitmq_exchanges_to_create
: liste d'échanges à créer.
Exemple :rabbitmq_exchanges_to_create: - name: exchange_test vhost: vhost_test
rabbitmq_exchanges_to_delete
: liste d'échanges à supprimer.
Exemple :rabbitmq_exchanges_to_delete: - name: exchange_test vhost: vhost_test
rabbitmq_bindings_to_create
: liste de liaisons à créer.rabbitmq_bindings_to_delete
: liste de liaisons à supprimer.rabbitmq_policies_to_create
: liste de politiques à créer.
Exemple :rabbitmq_policies_to_create: - name: HA vhost: vhost_test pattern: .* tags: ha-mode: all
rabbitmq_policies_to_delete
: liste de politiques à supprimer.
Exemple :rabbitmq_policies_to_delete: - name: HA vhost: vhost_test
rabbitmq_parameters_to_create
: liste de paramètres à créer.
Exemple :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
: liste de paramètres à supprimer.
Exemple :rabbitmq_parameters_to_delete: - component: federation name: local-username
rabbitmq_hide_log
: par défaut : true.
N'affiche pas le journal des appels d'API pour éviter de divulguer des informations sensibles.
À définir sur false pour déboguer.
Exemple de Playbook
Autonome
- hosts: rabbitmq
roles:
- rockandska.erlang
- rockandska.rabbitmq
Cluster
Comme il est nécessaire d'avoir le nœud master démarré avant de faire rejoindre les esclaves, déployez le cluster en deux étapes.
- 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
Tests locaux
Exigences
python3 <3.8
docker
Exécuter les tests
$ make test
Après un premier passage, des cibles supplémentaires pour chaque environnement toxique / scénario de molécule devraient être disponibles via l'auto-complétion.
Pour déboguer et exécuter une commande molécule personnalisée dans un environnement personnalisé avec uniquement le scénario de test par défaut :
$ source tmp/bin/activate
$ tox -e py3-ansible27 -- molecule test -s default
Pour plus d'informations sur Molecule, consultez leur documentation.
Si vous souhaitez exécuter des tests sur un hôte Docker distant, spécifiez simplement la variable DOCKER_HOST
avant d'exécuter les tests toxiques.
Licence
BSD
ansible-galaxy install rockandska.rabbitmq