Tutorial: Configuración de colas en Azure Service Bus mediante Ansible

Importante

Se requiere Ansible 2.8 (o posterior) para ejecutar los cuadernos de estrategias de ejemplo de este artículo.

Azure Service Bus es un agente de mensajes de integración empresarial. Service Bus admite dos tipos de comunicación: colas y temas.

Las colas admiten comunicaciones asincrónicas entre aplicaciones. Una aplicación envía mensajes a una cola, que almacena los mensajes. La aplicación receptora se conecta a y lee los mensajes de la cola.

Los temas admiten el patrón publicar-suscribirse, que permite una relación de uno a varios entre el emisor de mensajes y los receptores de mensajes.

En este artículo aprenderá a:

  • Creación de una cola
  • Creación de una directiva de SAS
  • Recuperación de la información del espacio de nombres
  • Obtener información de la cola
  • Revocar la política SAS de la cola

Prerrequisitos

  • Suscripción de Azure: si no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.

Crear la cola de Service Bus

El código del cuaderno de estrategias de ejemplo crea los siguientes recursos:

  • Grupo de recursos de Azure
  • Espacio de nombres de Service Bus en el grupo de recursos
  • Cola de Service Bus con el espacio de nombres

Guarde el siguiente cuaderno de estrategias como 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

Ejecutar el playbook utilizando ansible-playbook

ansible-playbook servicebus_queue.yml

Cree la directiva de SAS

Una firma de acceso compartido (SAS) es un mecanismo de autorización basado en reclamaciones mediante tokens.

El código del cuaderno de estrategias de ejemplo crea dos directivas SAS para una cola de Service Bus con privilegios diferentes.

Guarde el siguiente cuaderno de estrategias como 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

Antes de ejecutar el cuaderno de estrategias, consulte las notas siguientes:

  • rights El valor representa el privilegio que tiene un usuario en la cola. Especifique uno de los siguientes valores: manage, listen, sendo listen_send.

Ejecutar el playbook utilizando ansible-playbook

ansible-playbook servicebus_queue_policy.yml

Recuperación de la información del espacio de nombres

El código del cuaderno de estrategias de ejemplo consulta la información del espacio de nombres.

Guarde el siguiente cuaderno de estrategias como 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

Antes de ejecutar el cuaderno de estrategias, consulte las notas siguientes:

  • El show_sas_policies valor indica si se muestran las directivas de SAS en el espacio de nombres especificado. De forma predeterminada, el valor es False evitar una sobrecarga de red adicional.

Ejecutar el playbook utilizando ansible-playbook

ansible-playbook servicebus_namespace_info.yml

Obtener información de la cola

El código del playbook de ejemplo consulta la información de la cola.

Guarde el siguiente cuaderno de estrategias como 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

Antes de ejecutar el cuaderno de estrategias, consulte las notas siguientes:

  • El valor show_sas_policies indica si mostrar las directivas de SAS en la cola especificada. De forma predeterminada, este valor se establece en False para evitar una sobrecarga de red adicional.

Ejecutar el playbook utilizando ansible-playbook

ansible-playbook servicebus_queue_info.yml

Revocar la política SAS de la cola

El código de ejemplo del playbook elimina una política SAS de cola.

Guarde el siguiente cuaderno de estrategias como 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

Ejecutar el playbook utilizando ansible-playbook

ansible-playbook servicebus_queue_policy_delete.yml

Limpieza de recursos

Cuando ya no sea necesario, elimine los recursos creados en este artículo.

Guarde el código siguiente como 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

Ejecuta el playbook mediante ansible-playbook

ansible-playbook cleanup.yml

Pasos siguientes