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

Importante

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

O Barramento de Serviço do Azure é um broker de mensagens de integração empresarial. O barramento de serviço suporta dois tipos de comunicação: filas e tópicos.

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

Os tópicos suportam o padrão publish-subscribe, que permite uma relação um-para-muitos entre o publicador da mensagem e o(s) destinatário(s).

Neste artigo, você aprenderá a:

  • Criar uma fila
  • Criar uma política SAS
  • Recuperar informações de namespace
  • Recuperar informações da fila
  • Revogar a política 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 playbook de exemplo cria os seguintes recursos:

  • Grupo de recursos do Azure
  • Namespace do Barramento de Serviço dentro do grupo de recursos
  • Fila da Fila do Serviço com o namespace

Salve o seguinte playbook 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

Execute o livro de estratégias usando ansible-playbook

ansible-playbook servicebus_queue.yml

Criar a política SAS

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

O código do playbook de exemplo cria duas políticas SAS para uma fila do Service Bus com privilégios diferentes.

Salve o seguinte playbook 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 playbook, consulte as seguintes notas:

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

Execute o livro de estratégias usando ansible-playbook

ansible-playbook servicebus_queue_policy.yml

Recuperar informações de namespace

O código do playbook de exemplo consulta as informações do namespace.

Salve o seguinte playbook 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 playbook, consulte as seguintes notas:

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

Execute o livro de estratégias usando ansible-playbook

ansible-playbook servicebus_namespace_info.yml

Recuperar informações da fila

O código de exemplo do playbook consulta informações da fila.

Salve o seguinte playbook 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 playbook, consulte as seguintes notas:

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

Execute o livro de estratégias usando ansible-playbook

ansible-playbook servicebus_queue_info.yml

Revogar a política SAS da fila

O código de exemplo do manual exclui uma política SAS de fila.

Salve o seguinte playbook 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

Execute o livro de estratégias usando ansible-playbook

ansible-playbook servicebus_queue_policy_delete.yml

Limpeza de 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

Execute o livro de estratégias usando ansible-playbook

ansible-playbook cleanup.yml

Próximos passos