rockandska.rabbitmq

ansible-role-rabbitmq

Rôle Ansible pour installer RabbitMQ à partir du dépôt RabbitMQ.
Disponible sur Ansible Galaxy

Ansible Galaxy :
Score Galaxy

Build Travis :
État de la Build

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 yum

  • rabbitmq_rpm_gpg_url: clé gpg à utiliser pour le modèle yum

  • rabbitmq_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
  • rabbitmq_series_rpm_version: installe une version spécifique de rabbitmq_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 RabbitMQ

  • rabbitmq_rpm_enable_repo: utilisé pour activer uniquement certains dépôts lors de l'installation de RabbitMQ

  • rabbitmq_deb_repo_url: URL de base du dépôt utilisé pour le modèle apt

  • rabbitmq_deb_gpg_url: clé gpg à utiliser pour le modèle apt

  • rabbitmq_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 de rabbitmq_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, soit disc, soit ram.

  • 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

À propos du projet

RabbitMQ (HA compatible)

Installer
ansible-galaxy install rockandska.rabbitmq
Licence
Unknown
Téléchargements
12.1k
Propriétaire