Tutorial: Como configurar filas no Barramento de Serviço do Azure usando o Ansible

Importante

O Ansible 2.8 (ou posterior) é necessário para executar os guias estratégicos de exemplo neste artigo.

O Barramento de Serviço do Azure é um agente de mensagens de integração empresarial. O barramento de serviço é compatível com dois tipos de comunicação: filas e tópicos.

As filas dão suporte a comunicações assíncronas entre aplicativos. Um aplicativo envia mensagens para uma fila, que armazena as mensagens. Em seguida, o aplicativo receptor se conecta e lê as mensagens da fila.

Os tópicos dão suporte ao padrão publicar-assinar, que habilita uma relação um-para-muitos entre o originador da mensagem e o(s) receptor(es) da mensagem.

Neste artigo, você aprenderá a:

  • Criar uma fila
  • Criar uma política de SAS
  • Recuperar informações do namespace
  • Recuperar informações da fila
  • Revogar a política de SAS de fila

Pré-requisitos

  • assinatura do Azure: se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Criar a fila do Service Bus

O código do guia estratégico de exemplo cria os seguintes recursos:

  • Grupo de recursos do Azure
  • O namespace do Barramento de Serviço no grupo de recursos
  • Fila do Barramento de Serviço com o namespace

Salve o guia estratégico a seguir 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

Executar o guia estratégico usando ansible-playbook

ansible-playbook servicebus_queue.yml

Criar a política de SAS

Uma SAS (Assinatura de Acesso Compartilhado) é um mecanismo de autorização baseado em declarações usando tokens.

O código do guia estratégico de exemplo cria duas políticas de SAS para uma fila do Barramento de Serviço com privilégios diferentes.

Salve o guia estratégico a seguir 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 executar o guia estratégico, confira as seguintes anotações:

  • O valor rights representa o privilégio que um usuário tem com a fila. Especifique um dos seguintes valores: manage, listen, sendou listen_send.

Executar o guia estratégico usando ansible-playbook

ansible-playbook servicebus_queue_policy.yml

Recuperar informações do namespace

O código do guia estratégico de exemplo consulta as informações do namespace.

Salve o guia estratégico a seguir 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 executar o guia estratégico, confira as seguintes anotações:

  • O valor show_sas_policies indica se as políticas SAS devem ser mostradas no namespace especificado. Por padrão, o valor é False para evitar sobrecarga de rede adicional.

Executar o guia estratégico usando ansible-playbook

ansible-playbook servicebus_namespace_info.yml

Recuperar informações da fila

O código do guia estratégico de exemplo consulta as informações de fila.

Salve o guia estratégico a seguir 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 executar o guia estratégico, confira as seguintes anotações:

  • O valor show_sas_policies indica se as políticas SAS devem ser mostradas na fila especificada. Por padrão, esse valor é definido como False para evitar sobrecarga de rede adicional.

Executar o guia estratégico usando ansible-playbook

ansible-playbook servicebus_queue_info.yml

Revogar a política de SAS de fila

O código do guia estratégico de exemplo exclui uma política de SAS de fila.

Salve o guia estratégico a seguir 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

Executar o guia estratégico usando ansible-playbook

ansible-playbook servicebus_queue_policy_delete.yml

Limpar recursos

Quando não for mais necessário, exclua os recursos criados neste artigo.

Salve o seguinte código 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

Executar o guia estratégico usando ansible-playbook

ansible-playbook cleanup.yml

Próximas etapas