

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Automatizza la configurazione di RabbitMQ in Amazon MQ
<a name="automate-rabbitmq-configuration-in-amazon-mq"></a>

*Yogesh Bhatia e Afroz Khan, Amazon Web Services*

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

[Amazon MQ](https://docs.aws.amazon.com/amazon-mq/) è un servizio di broker di messaggi gestito che offre compatibilità con molti broker di messaggi popolari. L'uso di Amazon MQ con RabbitMQ fornisce un robusto cluster RabbitMQ gestito nel cloud Amazon Web Services (AWS) con più broker e opzioni di configurazione. Amazon MQ fornisce un'infrastruttura altamente disponibile, sicura e scalabile e può elaborare un gran numero di messaggi al secondo con facilità. Più applicazioni possono utilizzare l'infrastruttura con diversi host virtuali, code e scambi. Tuttavia, la gestione di queste opzioni di configurazione o la creazione manuale dell'infrastruttura possono richiedere tempo e impegno. Questo modello descrive un modo per gestire le configurazioni per RabbitMQ in un unico passaggio, tramite un singolo file. È possibile incorporare il codice fornito con questo pattern in qualsiasi strumento di integrazione continua (CI) come Jenkins o Bamboo. 

È possibile utilizzare questo modello per configurare qualsiasi cluster RabbitMQ. Tutto ciò che serve è la connettività al cluster. Sebbene esistano molti altri modi per gestire le configurazioni di RabbitMQ, questa soluzione crea intere configurazioni di applicazioni in un unico passaggio, in modo da poter gestire facilmente code e altri dettagli.

## Prerequisiti e limitazioni
<a name="automate-rabbitmq-configuration-in-amazon-mq-prereqs"></a>

**Prerequisiti**
+ AWS Command Line Interface (AWS CLI) installata e configurata in modo che punti al tuo account AWS (per istruzioni, consulta la documentazione [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html))
+ Ansible è installato, quindi puoi eseguire i playbook per creare la configurazione
+ **rabbitmqadmin** [installato (per istruzioni, consultate la documentazione di RabbitMQ)](https://www.rabbitmq.com/management-cli.html)
+ Un cluster RabbitMQ in Amazon MQ, creato con parametri Amazon affidabili CloudWatch 

**Requisiti aggiuntivi**
+ Assicurati di creare le configurazioni per gli host e gli utenti virtuali separatamente e non come parte di JSON.
+ Assicurati che la configurazione JSON faccia parte del repository e sia controllata dalla versione.
+ La versione della CLI di **rabbitmqadmin** deve essere la stessa del server RabbitMQ, quindi l'opzione migliore è scaricare la CLI dalla console RabbitMQ.
+ Come parte della pipeline, assicurati che la sintassi JSON sia convalidata prima di ogni esecuzione.

**Versioni del prodotto**
+ AWS CLI versione 2.0
+ Ansible versione 2.9.13
+ **rabbitmqadmin** versione 3.9.13 (deve essere la stessa della versione del server RabbitMQ)

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

**Stack tecnologico di origine**
+ Un cluster RabbitMQ in esecuzione su una macchina virtuale (VM) locale esistente o su un cluster Kubernetes (in locale o nel cloud)

**Stack tecnologico Target**
+ Configurazioni RabbitMQ automatizzate su Amazon MQ per RabbitMQ

**Architettura Target**

Esistono molti modi per configurare RabbitMQ. Questo modello utilizza la funzionalità di importazione di configurazione, in cui un singolo file JSON contiene tutte le configurazioni. Questo file applica tutte le impostazioni e può essere gestito da un sistema di controllo delle versioni come Bitbucket o Git. Questo modello utilizza Ansible per implementare la configurazione tramite la CLI **rabbitmqadmin**.

![\[Automazione della configurazione di RabbitMQ in Amazon MQ\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/294120b6-c95f-4cc5-bf85-5ad7e2abdad5/images/292e1284-5c9e-4c82-bb41-010fa84d8d74.png)


## Tools (Strumenti)
<a name="automate-rabbitmq-configuration-in-amazon-mq-tools"></a>

**Strumenti**
+ [rabbitmqadmin è uno strumento a riga di comando per l'](https://www.rabbitmq.com/management-cli.html)API basata su HTTP di RabbitMQ. Viene utilizzato per gestire e monitorare i nodi e i cluster RabbitMQ.
+ [Ansible](https://www.ansible.com/) è uno strumento open source per l'automazione delle applicazioni e dell'infrastruttura IT.
+ L'interfaccia a [riga di comando di AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) consente di interagire con i servizi AWS utilizzando i comandi in una shell a riga di comando. 

**Servizi AWS**
+ [Amazon MQ](https://docs.aws.amazon.com/amazon-mq/) è un servizio di broker di messaggi gestito che semplifica la configurazione e la gestione di broker di messaggi nel cloud.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ti CloudFormation aiuta a configurare la tua infrastruttura AWS e ad accelerare il provisioning del cloud con l'infrastruttura come codice.

**Codice**

Il file di configurazione JSON utilizzato in questo modello e un esempio di playbook Ansible sono forniti in allegato.

## Epiche
<a name="automate-rabbitmq-configuration-in-amazon-mq-epics"></a>

### Crea la tua infrastruttura AWS
<a name="create-your-aws-infrastructure"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un cluster RabbitMQ su AWS. | Se non disponi già di un cluster RabbitMQ, puoi utilizzare [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) per creare lo stack su AWS. In alternativa, puoi utilizzare il [modulo Cloudformation in Ansible](https://docs.ansible.com/ansible/latest/collections/amazon/aws/cloudformation_module.html) per creare lo stack. Con quest'ultimo approccio, puoi utilizzare Ansible per entrambe le attività: creare l'infrastruttura RabbitMQ e gestire le configurazioni.  | AWS CloudFormation, Ansible | 

### Creare la configurazione Amazon MQ per RabbitMQ
<a name="create-the-amazon-mq-for-rabbitmq-configuration"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Creare un file delle proprietà. | Scarica il file di configurazione JSON (`rabbitmqconfig.json`) nell'allegato o esportalo dalla console RabbitMQ.  Modificalo per configurare code, scambi e associazioni. Questo file di configurazione dimostra quanto segue:- Crea due code: e `sample-queue1` `sample-queue2` - Crea due scambi: `sample-exchange1` e `sample-exchange2`- Implementa l'associazione tra le code e gli scambi**Queste configurazioni vengono eseguite sull'host virtuale root (/), come richiesto da rabbitmqadmin.**  | JSON | 
| Recupera i dettagli dell'infrastruttura Amazon MQ for RabbitMQ. | Recupera i seguenti dettagli per l'infrastruttura RabbitMQ su AWS:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-rabbitmq-configuration-in-amazon-mq.html)Puoi utilizzare la Console di gestione AWS o la CLI AWS per recuperare queste informazioni. Questi dettagli consentono al playbook Ansible di connettersi al tuo account AWS e utilizzare il cluster RabbitMQ per eseguire comandi.*Il computer che esegue il playbook Ansible deve essere in grado di accedere al tuo account AWS e la CLI AWS deve essere già configurata, come descritto nella sezione Prerequisiti.* | CLI AWS, Amazon MQ | 
| Crea il file hosts\$1var. | Crea il `hosts_var` file per Ansible e assicurati che tutte le variabili siano definite nel file. Prendi in considerazione l'utilizzo di Ansible Vault per memorizzare la password. Puoi configurare il `hosts_var` file come segue (sostituisci gli asterischi con le tue informazioni):<pre>RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com"<br />RABBITMQ_VHOST: "/"<br />RABBITMQ_USERNAME: "admin"<br />RABBITMQ_PASSWORD: "*******"</pre> | Ansible | 
| Crea un playbook Ansible. | Per un playbook di esempio, vedi `ansible-rabbit-config.yaml` in allegato. Scarica e salva questo file. Il playbook Ansible importa e gestisce tutte le configurazioni di RabbitMQ, come code, scambi e associazioni, richieste dalle applicazioni. Segui le migliori pratiche per i playbook Ansible, come la protezione delle password. Usa Ansible Vault per la crittografia delle password e recupera la password di RabbitMQ dal file crittografato. | Ansible | 

### Distribuzione della configurazione
<a name="deploy-the-configuration"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Esegui il playbook. | Esegui il playbook Ansible che hai creato nell'epopea precedente.<pre>ansible-playbook ansible-rabbit-config.yaml</pre>Puoi verificare le nuove configurazioni sulla console RabbitMQ. | RabbitMQ, Amazon MQ, Ansible | 

## Risorse correlate
<a name="automate-rabbitmq-configuration-in-amazon-mq-resources"></a>
+ [Migrazione da RabbitMQ ad Amazon MQ (post sul blog AWS)](https://aws.amazon.com/blogs/compute/migrating-from-rabbitmq-to-amazon-mq/)
+ [Strumento a riga di comando di gestione](https://www.rabbitmq.com/management-cli.html) (documentazione RabbitMQ)
+ [Creare o eliminare uno CloudFormation stack AWS](https://docs.ansible.com/ansible/latest/collections/amazon/aws/cloudformation_module.html) (documentazione Ansible)
+ [Migrazione di applicazioni basate su messaggi su Amazon MQ for RabbitMQ (post sul blog AWS)](https://aws.amazon.com/blogs/compute/migrating-message-driven-applications-to-amazon-mq-for-rabbitmq/)

## Allegati
<a name="attachments-294120b6-c95f-4cc5-bf85-5ad7e2abdad5"></a>

[Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/294120b6-c95f-4cc5-bf85-5ad7e2abdad5/attachments/attachment.zip)