

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
<a name="automate-rabbitmq-configuration-in-amazon-mq"></a>

*Yogesh Bhatia et Afroz Khan, Amazon Web Services*

## Résumé
<a name="automate-rabbitmq-configuration-in-amazon-mq-summary"></a>

[Amazon MQ](https://docs.aws.amazon.com/amazon-mq/) est un service de messagerie géré qui assure la compatibilité avec de nombreux courtiers de messages populaires. L'utilisation d'Amazon MQ avec RabbitMQ fournit un cluster RabbitMQ robuste géré avec plusieurs courtiers et options de configuration. AWS Cloud 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
<a name="automate-rabbitmq-configuration-in-amazon-mq-prereqs"></a>

**Conditions préalables**
+ AWS Command Line Interface (AWS CLI) [installé et configuré](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html) pour pointer vers votre Compte AWS
+ 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)](https://www.rabbitmq.com/management-cli.html)
+ 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**
+ AWS CLI version 2.0
+ Version 2.9.13 d'Ansible
+ **rabbitmqadmin** version 3.9.13 (doit être identique à la version du serveur RabbitMQ)

## Architecture
<a name="automate-rabbitmq-configuration-in-amazon-mq-architecture"></a>

**Pile technologique source**
+ Un cluster RabbitMQ exécuté sur une machine virtuelle (VM) locale existante ou sur 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](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/294120b6-c95f-4cc5-bf85-5ad7e2abdad5/images/292e1284-5c9e-4c82-bb41-010fa84d8d74.png)


## Outils
<a name="automate-rabbitmq-configuration-in-amazon-mq-tools"></a>

**Services AWS**
+ [Amazon MQ](https://docs.aws.amazon.com/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 CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à configurer votre AWS infrastructure et à accélérer le provisionnement dans le cloud grâce à l'infrastructure sous forme de code.
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)vous permet d'interagir avec Services AWS en utilisant des commandes dans un shell de ligne de commande. 

**Autres outils**
+ [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) 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](https://www.ansible.com/) est un outil open source permettant d'automatiser les applications et l'infrastructure informatique.

**Référentiel de 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
<a name="automate-rabbitmq-configuration-in-amazon-mq-epics"></a>

### Créez votre AWS infrastructure
<a name="create-your-aws-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un cluster RabbitMQ sur. AWS | Si vous n'avez pas encore de cluster RabbitMQ, vous pouvez l'utiliser [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)pour créer le stack on. AWS Vous pouvez également utiliser le [CloudFormation module dans Ansible](https://docs.ansible.com/projects/ansible/latest/collections/amazon/aws/cloudformation_module.html) pour créer la pile. Avec cette dernière approche, vous pouvez utiliser Ansible pour les deux tâches : pour créer l'infrastructure RabbitMQ et pour gérer les configurations.  | Informations générales sur AWS, Ansible | 

### Création de la configuration Amazon MQ pour RabbitMQ
<a name="create-the-amqlong-for-rabbitmq-configuration"></a>


| Sous-tâche | Description | Compé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 :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-rabbitmq-configuration-in-amazon-mq.html)<br />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 pour l'infrastructure RabbitMQ sur : AWS[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-rabbitmq-configuration-in-amazon-mq.html)<br />Vous pouvez utiliser le AWS Management Console ou le AWS CLI pour récupérer ces informations. Ces informations permettent au playbook Ansible de se connecter à votre cluster RabbitMQ Compte AWS et d'utiliser le cluster RabbitMQ pour exécuter des commandes.L'ordinateur qui exécute le playbook Ansible doit être en mesure d'accéder à votre Compte AWS, et AWS CLI doit déjà être configuré, comme décrit dans la section *Conditions préalables*. | AWS général | 
| 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) :<pre>RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com"<br />RABBITMQ_VHOST: "/"<br />RABBITMQ_USERNAME: "admin"<br />RABBITMQ_PASSWORD: "*******"</pre> | 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. <br />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 | 

### Déploiement de la configuration
<a name="deploy-the-configuration"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez le playbook. | Lancez le playbook Ansible que vous avez créé dans l'épopée précédente.<pre>ansible-playbook ansible-rabbit-config.yaml</pre><br />Vous pouvez vérifier les nouvelles configurations sur la console RabbitMQ. | Informations générales sur AWS, RabbitMQ, Ansible | 

## Ressources connexes
<a name="automate-rabbitmq-configuration-in-amazon-mq-resources"></a>
+ [Migration de RabbitMQ vers Amazon MQ](https://aws.amazon.com/blogs/compute/migrating-from-rabbitmq-to-amazon-mq/) (article de blog)AWS 
+ [Outil de ligne de commande de gestion](https://www.rabbitmq.com/management-cli.html) (documentation RabbitMQ)
+ [Créer ou supprimer une AWS CloudFormation pile](https://docs.ansible.com/ansible/latest/collections/amazon/aws/cloudformation_module.html) (documentation Ansible)
+ [Migration d'applications basées sur des messages vers Amazon MQ pour AWS RabbitMQ](https://aws.amazon.com/blogs/compute/migrating-message-driven-applications-to-amazon-mq-for-rabbitmq/) (article de blog)

## Pièces jointes
<a name="attachments-294120b6-c95f-4cc5-bf85-5ad7e2abdad5"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/294120b6-c95f-4cc5-bf85-5ad7e2abdad5/attachments/attachment.zip)