Samouczek: konfigurowanie kolejek w usłudze Azure Service Bus przy użyciu rozwiązania Ansible

Ważne

Rozwiązanie Ansible w wersji 2.8 (lub nowszej) jest wymagane do uruchomienia przykładowych podręczników w tym artykule.

Azure Service Bus jest brokerem komunikatów do integracji przedsiębiorstw. Usługa Service Bus obsługuje dwa typy komunikacji: kolejki i tematy.

Kolejki obsługują asynchroniczną komunikację między aplikacjami. Aplikacja wysyła komunikaty do kolejki, która przechowuje komunikaty. Następnie aplikacja odbierający nawiązuje połączenie z kolejką i odczytuje komunikaty z kolejki.

Tematy obsługują wzorzec publikowania-subskrybowania, który umożliwia relację jeden do wielu między inicjatorem komunikatów a odbiornikami komunikatów.

W tym artykule dowiesz się, jak:

  • Utwórz kolejkę
  • Utwórz politykę SAS
  • Pobieranie informacji o przestrzeni nazw
  • Pobieranie informacji o kolejce
  • Odwołaj zasady SAS dostępu współdzielonego kolejki

Wymagania wstępne

  • Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Utwórz kolejkę usługi Service Bus

Przykładowy kod podręcznika tworzy następujące zasoby:

  • Grupa zasobów platformy Azure
  • Przestrzeń nazw usługi Service Bus w grupie zasobów
  • Kolejka usługi Service Bus z przestrzenią nazw

Zapisz następujący podręcznik jako 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

Uruchom podręcznik przy użyciu ansible-playbook

ansible-playbook servicebus_queue.yml

Tworzenie polityki SAS

Sygnatura dostępu współdzielonego (SAS) to mechanizm autoryzacji oparty na oświadczeniach korzystający z tokenów.

Przykładowy kod podręcznika tworzy dwie zasady dostępu współdzielonego SAS dla kolejki usługi Service Bus z różnymi uprawnieniami.

Zapisz następujący podręcznik jako 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

Przed uruchomieniem podręcznika zapoznaj się z następującymi uwagami:

  • Wartość rights reprezentuje uprawnienia użytkownika względem kolejki. Określ jedną z następujących wartości: manage, listen, sendlub listen_send.

Uruchom podręcznik przy użyciu ansible-playbook

ansible-playbook servicebus_queue_policy.yml

Pobieranie informacji o przestrzeni nazw

Przykładowy kod podręcznika wysyła zapytanie do informacji o przestrzeni nazw.

Zapisz następujący podręcznik jako 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

Przed uruchomieniem podręcznika zapoznaj się z następującymi uwagami:

  • Wartość show_sas_policies wskazuje, czy zasady SAS mają być wyświetlane w podanej przestrzeni nazw. Domyślnie wartością jest False, aby uniknąć dodatkowego obciążenia sieci.

Uruchom podręcznik przy użyciu ansible-playbook

ansible-playbook servicebus_namespace_info.yml

Pobieranie informacji o kolejce

Przykładowy kod podręcznika wysyła zapytania do informacji o kolejce.

Zapisz następujący podręcznik jako 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

Przed uruchomieniem podręcznika zapoznaj się z następującymi uwagami:

  • Wartość show_sas_policies wskazuje, czy zasady sygnatury dostępu współdzielonego mają być wyświetlane w określonej kolejce. Domyślnie ta wartość jest ustawiona na False, aby uniknąć dodatkowych obciążeń związanych z siecią.

Uruchom podręcznik przy użyciu ansible-playbook

ansible-playbook servicebus_queue_info.yml

Odwołaj zasady SAS dostępu współdzielonego kolejki

Przykładowy kod podręcznika usuwa politykę SAS kolejki.

Zapisz następujący podręcznik jako 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

Uruchom podręcznik przy użyciu ansible-playbook

ansible-playbook servicebus_queue_policy_delete.yml

Uprzątnij zasoby

Gdy zasoby utworzone w tym artykule nie będą już potrzebne, usuń je.

Zapisz następujący kod jako 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

Uruchom podręcznik przy użyciu ansible-playbook

ansible-playbook cleanup.yml

Dalsze kroki