Kurz: Konfigurace front ve službě Azure Service Bus pomocí Ansible

Důležité

K spuštění ukázkových playbooků v tomto článku se vyžaduje Ansible 2.8 (nebo novější).

Azure Service Bus je zprostředkovatel zpráv podnikové integrace . Service Bus podporuje dva typy komunikace: fronty a témata.

Fronty podporují asynchronní komunikaci mezi aplikacemi. Aplikace odesílá zprávy do fronty, do které se zprávy ukládají. Nejprve se přijímající aplikace připojí ke frontě a poté přečte zprávy.

Témata podporují model publikování a odběru, který umožňuje vztah 1:N mezi původcem zprávy a příjemcem zpráv.

V tomto článku se naučíte:

  • Vytvořte frontu
  • Vytvořte zásadu SAS
  • Načíst informace o oboru názvů
  • Načtení informací o frontě
  • Zrušte zásady SAS fronty

Požadavky

  • Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

Vytvoření fronty služby Service Bus

Ukázkový kód playbooku vytvoří následující prostředky:

  • Skupina zdrojů Azure
  • Obor názvů "Service Bus" v rámci skupiny prostředků
  • Fronta služby Service Bus s oborem názvů

Uložte následující playbook 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

Spusťte playbook pomocí ansible-playbook

ansible-playbook servicebus_queue.yml

Vytvoření zásady SAS

Sdílený přístupový podpis (SAS) je mechanismus autorizace na základě deklarací identity pomocí tokenů.

Ukázkový kód playbooku vytvoří dvě zásady SAS pro frontu Service Bus s různými oprávněními.

Uložte následující playbook 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

Před spuštěním playbooku si přečtěte následující poznámky:

  • Hodnota rights představuje privilegium, které má uživatel ve frontě. Zadejte jednu z následujících hodnot: manage, listen, sendnebo listen_send.

Spusťte playbook pomocí ansible-playbook

ansible-playbook servicebus_queue_policy.yml

Načtení informací o oboru názvů

Vzorový kód playbooku dotazuje se na informace o namespace.

Uložte následující playbook 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

Před spuštěním playbooku si přečtěte následující poznámky:

  • Hodnota show_sas_policies určuje, zda se mají zobrazit zásady SAS v zadaném oboru názvů. Ve výchozím nastavení je hodnota False, aby se zabránilo další síťové režii.

Spusťte playbook pomocí ansible-playbook

ansible-playbook servicebus_namespace_info.yml

Načtení informací o frontě

Ukázkový playbookový kód dotazuje informace o frontě.

Uložte následující playbook 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

Před spuštěním playbooku si přečtěte následující poznámky:

  • Hodnota show_sas_policies určuje, jestli se mají zobrazit zásady SAS v zadané frontě. Ve výchozím nastavení je tato hodnota nastavena na False, aby se předešlo dalším síťovým režijním nákladům.

Spusťte playbook pomocí ansible-playbook

ansible-playbook servicebus_queue_info.yml

Zrušit zásadu SAS pro frontu

Ukázkový kód skriptu pro playbook odstraní zásadu SAS fronty.

Uložte následující playbook 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

Spusťte playbook pomocí ansible-playbook

ansible-playbook servicebus_queue_policy_delete.yml

Vyčistěte zdroje

Pokud už prostředky vytvořené v tomto článku nepotřebujete, odstraňte je.

Uložte následující kód 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

Spusťte playbook pomocí ansible-playbook

ansible-playbook cleanup.yml

Další kroky