Esercitazione: Configurare le code nel bus di servizio di Azure usando Ansible

Importante

Ansible 2.8 (o versione successiva) è necessario per eseguire i playbook di esempio in questo articolo.

Il bus di servizio di Azure è un broker di messaggi di integrazione aziendale. Il bus di servizio supporta due tipi di comunicazione: code e argomenti.

Le code supportano comunicazioni asincrone tra applicazioni. Un'app invia messaggi a una coda, che archivia i messaggi. L'applicazione ricevente si connette quindi e legge i messaggi dalla coda.

Gli argomenti supportano il modello publish-subscribe, che consente una relazione uno-a-molti tra l'originatore del messaggio e i ricevitori del messaggio.

In questo articolo vengono illustrate le operazioni seguenti:

  • Creare una coda
  • Creare criteri di firma di accesso condiviso
  • Recupera le informazioni sullo spazio dei nomi
  • Recuperare le informazioni sulla coda
  • Revocare la politica SAS della coda

Prerequisiti

  • Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Creare la coda del bus di servizio

Il codice del playbook di esempio crea le risorse seguenti:

  • Gruppo di risorse di Azure
  • Lo spazio dei nomi del Service Bus all'interno del gruppo di risorse
  • Coda del bus di servizio con lo spazio dei nomi

Salva il playbook seguente come servicebus_queue.yml:

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      location: eastus
      namespace: servicebustestns
      queue: servicebustestqueue
  tasks:
    - name: Ensure resource group exist
      azure_rm_resourcegroup:
          name: "{{ resource_group }}"
          location: "{{ location }}"
    - name: Create a namespace
      azure_rm_servicebus:
          name: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
    - name: Create a queue
      azure_rm_servicebusqueue:
          name: "{{ queue }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
      register: queue
    - debug:
          var: queue

Eseguire il playbook usando ansible-playbook

ansible-playbook servicebus_queue.yml

Creare la policy di SAS

Una Shared Access Signature (SAS) è un meccanismo di autorizzazione basato sulle attestazioni che utilizza i token.

Il codice del playbook di esempio crea due criteri SAS per una coda di Service Bus con privilegi diversi.

Salva il playbook seguente come servicebus_queue_policy.yml:

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      namespace: servicebustestns
      queue: servicebustestqueue
  tasks:
    - name: Create a policy with send and listen privilege
      azure_rm_servicebussaspolicy:
          name: "{{ queue }}-policy"
          queue: "{{ queue }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
          rights: listen_send
      register: policy
    - debug:
          var: policy

Prima di eseguire il playbook, vedere le note seguenti:

  • Il rights valore rappresenta il privilegio che un utente ha nella coda. Specificare uno dei valori seguenti: manage, listen, sendo listen_send.

Eseguire il playbook usando ansible-playbook

ansible-playbook servicebus_queue_policy.yml

Recuperare le informazioni sullo spazio dei nomi

Il codice del playbook di esempio esegue una query sulle informazioni sullo spazio dei nomi.

Salva il playbook seguente come servicebus_namespace_info.yml:

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      namespace: servicebustestns
  tasks:
    - name: Get a namespace's information
      azure_rm_servicebus_facts:
          type: namespace
          name: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
          show_sas_policies: yes
      register: ns
    - debug:
          var: ns

Prima di eseguire il playbook, vedere le note seguenti:

  • Il show_sas_policies valore indica se visualizzare i criteri SAS nello spazio dei nomi specificato. Per impostazione predefinita, il valore è False per evitare un sovraccarico di rete aggiuntivo.

Eseguire il playbook usando ansible-playbook

ansible-playbook servicebus_namespace_info.yml

Recuperare le informazioni sulla coda

Il codice del playbook di esempio esegue query sulle informazioni sulla coda.

Salva il playbook seguente come servicebus_queue_info.yml:

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      namespace: servicebustestns
      queue: servicebustestqueue
  tasks:
    - name: Get a queue's information
      azure_rm_servicebus_facts:
          type: queue
          name: "{{ queue }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
          show_sas_policies: yes
      register: queue
    - debug:
          var: queue

Prima di eseguire il playbook, vedere le note seguenti:

  • Il valore show_sas_policies indica se i criteri SAS devono essere visualizzati per la coda specificata. Per impostazione predefinita, questo valore è impostato su False per evitare un sovraccarico di rete aggiuntivo.

Eseguire il playbook usando ansible-playbook

ansible-playbook servicebus_queue_info.yml

Revocare i criteri di SAS (firma di accesso condiviso) della coda

Il codice del playbook di esempio elimina una politica SAS della coda.

Salva il playbook seguente come servicebus_queue_policy_delete.yml:

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      namespace: servicebustestns
      queue: servicebustestqueue
  tasks:
    - name: Create a policy with send and listen privilege
      azure_rm_servicebussaspolicy:
          name: "{{ queue }}-policy"
          queue: "{{ queue }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
          state: absent

Eseguire il playbook usando ansible-playbook

ansible-playbook servicebus_queue_policy_delete.yml

Pulire le risorse

Quando non sono più necessarie, eliminare le risorse create in questo articolo.

Salvare il codice seguente come cleanup.yml:

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      namespace: servicebustestns
      queue: servicebustestqueue
  tasks:
    - name: Delete queue
      azure_rm_servicebusqueue:
          name: "{{ queue }}"
          resource_group: "{{ resource_group }}"
          namespace: "{{ namespace }}"
          state: absent
    - name: Delete namespace
      azure_rm_servicebus:
          name: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
          state: absent
    - name: Delete resource group
      azure_rm_resourcegroup:
          name: "{{ resource_group }}"
          state: absent
          force_delete_nonempty: yes

Eseguire il playbook usando ansible-playbook

ansible-playbook cleanup.yml

Passaggi successivi