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_seriespour 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.el7rabbitmq_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_seriespour les systèmes Debian
Exemple :3.8.11-1 3.8.10-1 3.8.9-1 3.8.8-1rabbitmq_vars_files: liste de fichiers de variables utilisés pour remplacer les variables par défaut si nécessaire.
Exemple :rabbitmq_vars_files: - settings.ymlrabbitmq_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: 30000rabbitmq_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 notifemptyrabbitmq_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: truerabbitmq_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: - guestrabbitmq_global_parameters_to_create: liste de paramètres globaux à créer.
Exemple :rabbitmq_global_parameters_to_create: - name: cluster_name value: mq-clusterrabbitmq_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_shovelrabbitmq_plugins_to_disable: liste des plugins à désactiver.
Exemple :rabbitmq_plugins_to_disable: - rabbitmq_shovelrabbitmq_vhosts_to_create: liste de dictionnaires pour la création de vhosts.
Exemple :rabbitmq_vhosts_to_create: - name: vhost_test tracing: yesrabbitmq_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_testrabbitmq_queues_to_delete: liste de files d'attente à supprimer.
Exemple :rabbitmq_queues_to_delete: - name: queue_test vhost: vhost_testrabbitmq_exchanges_to_create: liste d'échanges à créer.
Exemple :rabbitmq_exchanges_to_create: - name: exchange_test vhost: vhost_testrabbitmq_exchanges_to_delete: liste d'échanges à supprimer.
Exemple :rabbitmq_exchanges_to_delete: - name: exchange_test vhost: vhost_testrabbitmq_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: allrabbitmq_policies_to_delete: liste de politiques à supprimer.
Exemple :rabbitmq_policies_to_delete: - name: HA vhost: vhost_testrabbitmq_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_testrabbitmq_parameters_to_delete: liste de paramètres à supprimer.
Exemple :rabbitmq_parameters_to_delete: - component: federation name: local-usernamerabbitmq_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
