Automatisez la configuration de RabbitMQ dans Amazon MQ - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Automatisez la configuration de RabbitMQ dans Amazon MQ

Créée par Yogesh Bhatia (AWS) et Afroz Khan (AWS)

Environnement : PoC ou pilote

Technologies : messagerie et communications DevOps ; infrastructure

Services AWS : Amazon MQ ; AWS CloudFormation

Récapitulatif

Amazon MQ est un service géré de courtage de messages compatible avec de nombreux courtiers de messages populaires. L'utilisation d'Amazon MQ avec RabbitMQ fournit un cluster RabbitMQ robuste géré dans le cloud Amazon Web Services (AWS) avec plusieurs courtiers et options de configuration. Amazon MQ fournit une infrastructure hautement disponible, sécurisée et évolutive, et peut traiter facilement un grand nombre de messages par seconde. Plusieurs applications peuvent utiliser l'infrastructure avec différents hôtes virtuels, files d'attente et échanges. Cependant, la gestion de ces options de configuration ou la création manuelle de l'infrastructure peuvent demander du temps et des efforts. Ce modèle décrit un moyen de gérer les configurations de RabbitMQ en une seule étape, via un seul fichier. Vous pouvez intégrer le code fourni avec ce modèle dans n'importe quel outil d'intégration continue (CI) tel que Jenkins ou Bamboo. 

Vous pouvez utiliser ce modèle pour configurer n'importe quel cluster RabbitMQ. Tout ce dont elle a besoin, c'est d'une connectivité au cluster. Bien qu'il existe de nombreuses autres manières de gérer les configurations de RabbitMQ, cette solution crée des configurations d'applications complètes en une seule étape, ce qui vous permet de gérer facilement les files d'attente et autres détails.

Conditions préalables et limitations

Prérequis

  • Interface de ligne de commande AWS (AWS CLI) installée et configurée pour pointer vers votre compte AWS (pour obtenir des instructions, consultez la documentation de l'AWS CLI)

  • Ansible est installé, vous pouvez donc exécuter des playbooks pour créer la configuration

  • rabbitmqadmin installé (pour les instructions, consultez la documentation de RabbitMQ)

  • Un cluster RabbitMQ dans Amazon MQ, créé à partir de statistiques Amazon saines CloudWatch

Exigences supplémentaires

  • Assurez-vous de créer les configurations pour les hôtes virtuels et les utilisateurs séparément et non dans le cadre de JSON.

  • Assurez-vous que le JSON de configuration fait partie du référentiel et qu'il est contrôlé par version.

  • La version de la CLI rabbitmqadmin doit être identique à celle du serveur RabbitMQ. La meilleure option est donc de télécharger la CLI depuis la console RabbitMQ.

  • Dans le cadre du pipeline, assurez-vous que la syntaxe JSON est validée avant chaque exécution.

Versions du produit

  • Version 2.0 de l'interface de ligne de commande AWS

  • Version 2.9.13 d'Ansible

  • rabbitmqadmin version 3.9.13 (doit être identique à la version du serveur RabbitMQ)

Architecture

Pile technologique source

  • Un cluster RabbitMQ exécuté sur une machine virtuelle (VM) locale existante ou un cluster Kubernetes (sur site ou dans le cloud)

Pile technologique cible

  • Configurations automatisées de RabbitMQ sur Amazon MQ pour RabbitMQ

Architecture cible

Il existe de nombreuses façons de configurer RabbitMQ. Ce modèle utilise la fonctionnalité de configuration d'importation, dans laquelle un seul fichier JSON contient toutes les configurations. Ce fichier applique tous les paramètres et peut être géré par un système de contrôle de version tel que Bitbucket ou Git. Ce modèle utilise Ansible pour implémenter la configuration via la CLI rabbitmqadmin.

Automatisation de la configuration de RabbitMQ dans Amazon MQ

Outils

Outils

  • rabbitmqadmin est un outil de ligne de commande pour l'API HTTP de RabbitMQ. Il est utilisé pour gérer et surveiller les nœuds et les clusters RabbitMQ.

  • Ansible est un outil open source permettant d'automatiser les applications et l'infrastructure informatique.

  • L'AWS CLI vous permet d'interagir avec les services AWS à l'aide de commandes dans un shell de ligne de commande. 

Services AWS

  • Amazon MQ est un service géré de courtage de messages qui facilite la configuration et le fonctionnement des courtiers de messages dans le cloud.

  • AWS vous CloudFormation aide à configurer votre infrastructure AWS et à accélérer le provisionnement du cloud grâce à l'infrastructure sous forme de code.

Code

Le fichier de configuration JSON utilisé dans ce modèle et un exemple de playbook Ansible sont fournis en pièce jointe.

Épopées

TâcheDescriptionCompétences requises

Créez un cluster RabbitMQ sur AWS.

Si vous ne possédez pas encore de cluster RabbitMQ, vous pouvez utiliser AWS CloudFormation pour créer la pile sur AWS. Vous pouvez également utiliser le module Cloudformation d'Ansible pour créer la pile. Avec cette dernière approche, vous pouvez utiliser Ansible pour les deux tâches : créer l'infrastructure RabbitMQ et gérer les configurations. 

AWS CloudFormation, Ansible
TâcheDescriptionCompétences requises

Créez un fichier de propriétés.

Téléchargez le fichier de configuration JSON (rabbitmqconfig.json) dans la pièce jointe ou exportez-le depuis la console RabbitMQ.  Modifiez-le pour configurer les files d'attente, les échanges et les liaisons. Ce fichier de configuration illustre les éléments suivants :

- Crée deux files d'attente : sample-queue1 et sample-queue2 

- Crée deux échanges : sample-exchange1 et sample-exchange2

- Implémente la liaison entre les files d'attente et les échanges

Ces configurations sont effectuées sous l'hôte virtuel root (/), comme l'exige rabbitmqadmin

JSON

Récupérez les détails de l'infrastructure Amazon MQ pour RabbitMQ.

Récupérez les informations suivantes concernant l'infrastructure RabbitMQ sur AWS :

  • Nom de l'agent

  • Hôte RabbitMQ

  • Nom d'utilisateur RabbitMQ (l'utilisateur administrateur créé lors de la création du cluster)

  • Mot de passe RabbitMQ

Vous pouvez utiliser la console de gestion AWS ou l'interface de ligne de commande AWS pour récupérer ces informations. Ces informations permettent au playbook Ansible de se connecter à votre compte AWS et d'utiliser le cluster RabbitMQ pour exécuter des commandes.

Important : L'ordinateur qui exécute le playbook Ansible doit être en mesure d'accéder à votre compte AWS, et la CLI AWS doit déjà être configurée, comme décrit dans la section Conditions préalables.

CLI AWS, Amazon MQ

Créez le fichier hosts_var.

Créez le hosts_var fichier pour Ansible et assurez-vous que toutes les variables sont définies dans le fichier. Envisagez d'utiliser Ansible Vault pour stocker le mot de passe. Vous pouvez configurer le hosts_var fichier comme suit (remplacez les astérisques par vos informations) :

RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com" RABBITMQ_VHOST: "/" RABBITMQ_USERNAME: "admin" RABBITMQ_PASSWORD: "*******"
Ansible

Créez un playbook Ansible.

Pour un exemple de playbook, voir ansible-rabbit-config.yaml la pièce jointe. Téléchargez et enregistrez ce fichier. Le playbook Ansible importe et gère toutes les configurations RabbitMQ, telles que les files d'attente, les échanges et les liaisons, dont les applications ont besoin. 

Suivez les meilleures pratiques relatives aux playbooks Ansible, telles que la sécurisation des mots de passe. Utilisez Ansible Vault pour le chiffrement du mot de passe et récupérez le mot de passe RabbitMQ dans le fichier chiffré.

Ansible
TâcheDescriptionCompétences requises

Lancez le playbook.

Lancez le playbook Ansible que vous avez créé dans l'épopée précédente.

ansible-playbook ansible-rabbit-config.yaml

Vous pouvez vérifier les nouvelles configurations sur la console RabbitMQ.

RabbitMQ, Amazon MQ, Ansible

Ressources connexes

Pièces jointes

Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip