Partager via


Tutoriel : Configurer des rubriques dans Azure Service Bus à l’aide d’Ansible

Important

Ansible 2.8 (ou version ultérieure) est nécessaire pour exécuter les exemples de playbooks dans cet article.

Azure Service Bus est un répartiteur de messages d’intégration d’entreprise. Service Bus prend en charge deux types de communications : les files d’attente et les rubriques.

Les files d’attente prennent en charge les communications asynchrones entre les applications. Une application envoie des messages à une file d’attente qui stocke les messages. L’application de réception se connecte ensuite pour lire les messages à partir de la file d’attente.

Les rubriques prennent en charge le modèle de publication-abonnement, ce qui permet une relation de un-à-plusieurs entre l’expéditeur du message et le ou les récepteurs de ce message.

Dans cet article, vous apprendrez comment :

  • Créer une rubrique
  • Création d’un abonnement
  • Créer une stratégie SAP
  • Récupérer les informations de l’espace de noms
  • Récupérer les informations des rubriques et des abonnements
  • Révoquer une stratégie SAP

Prérequis

  • Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Créer la rubrique Service Bus

Le code de l’exemple de playbook crée les ressources suivantes :

  • Groupe de ressources Azure
  • Espace de noms Service Bus dans le groupe de ressources
  • Rubrique Service Bus avec l’espace de noms

Enregistrez le playbook suivant en tant que servicebus_topic.yml :

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      location: eastus
      namespace: servicebustestns
      topic: servicebustesttopic
  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 topic
      azure_rm_servicebustopic:
          name: "{{ topic }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
      register: topic
    - debug:
          var: topic

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook servicebus_topic.yml

Créer l’abonnement

Le code de l’exemple de playbook crée l’abonnement sous une rubrique Service Bus. Les rubriques Azure Service Bus peuvent comporter plusieurs abonnements. Un utilisateur abonné à une rubrique peut recevoir une copie de tous les messages envoyés à cette rubrique. Les abonnements sont des entités nommées créées pour durer, mais qui peuvent expirer sur option.

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      location: eastus
      namespace: servicebustestns
      topic: servicebustesttopic
      subscription: servicebustestsubs
  tasks:
    - name: Create a subscription
      azure_rm_servicebustopicsubscription:
          name: "{{ subscription }}"
          topic: "{{ topic }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
      register: subs
    - debug:
          var: subs

Enregistrez le playbook suivant en tant que servicebus_subscription.yml :

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook servicebus_subscription.yml

Créer la stratégie SAP

Une signature d’accès partagé (SAP) est un mécanisme d’autorisation basée sur les revendications qui utilise des jetons.

Le code de l’exemple de playbook crée deux stratégies SAP pour une file d’attente Service Bus avec différents privilèges.

Enregistrez le playbook suivant en tant que servicebus_topic_policy.yml :

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      namespace: servicebustestns
      topic: servicebustesttopic
  tasks:
    - name: Create a policy with send and listen privilege
      azure_rm_servicebussaspolicy:
          name: "{{ topic }}-{{ item }}"
          topic: "{{ topic }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
          rights: "{{ item }}"
      with_items:
        - send
        - listen
      register: policy
    - debug:
          var: policy

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook servicebus_topic_policy.yml

Récupérer les informations de l’espace de noms

Le code de l’exemple de playbook demande les informations de l’espace de noms.

Enregistrez le playbook suivant en tant que 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

Avant d’exécuter le playbook, consultez les notes suivantes :

  • La valeur show_sas_policies indique s’il faut afficher les stratégies SAP sous l’espace de noms spécifié. Par défaut, la valeur est False afin d’éviter toute surcharge réseau supplémentaire.

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook servicebus_namespace_info.yml

Récupérer les informations des rubriques et des abonnements

Le code de l’exemple de playbook demande les informations suivantes :

  • Informations sur la rubrique Service Bus
  • Liste des détails de l’abonnement de la rubrique

Enregistrez le playbook suivant en tant que servicebus_list.yml :

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      namespace: servicebustestns
      topic: servicebustesttopic
  tasks:
    - name: Get a topic's information
      azure_rm_servicebus_facts:
          type: topic
          name: "{{ topic }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
          show_sas_policies: yes
      register: topic_fact
    - name: "List subscriptions under topic {{ topic }}"
      azure_rm_servicebus_facts:
          type: subscription
          topic: "{{ topic }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
      register: subs_fact
    - debug:
          var: "{{ item }}"
      with_items:
        - topic_fact.servicebuses[0]
        - subs_fact.servicebuses

Avant d’exécuter le playbook, consultez les notes suivantes :

  • La valeur show_sas_policies indique s’il faut afficher les stratégies SAP sous la file d’attente spécifiée. Par défaut, cette valeur est False afin d’éviter toute surcharge réseau supplémentaire.

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook servicebus_list.yml

Révoquer la stratégie SAP de file d’attente

Le code de l’exemple de playbook supprime une stratégie SAP de file d’attente.

Enregistrez le playbook suivant en tant que servicebus_queue_policy_delete.yml :

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      namespace: servicebustestns
      topic: servicebustesttopic
  tasks:
    - name: Delete a policy
      azure_rm_servicebussaspolicy:
          name: "{{ topic }}-policy"
          topic: "{{ topic }}"
          namespace: "{{ namespace }}"
          resource_group: "{{ resource_group }}"
          state: absent

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook servicebus_topic_policy_delete.yml

Nettoyer les ressources

Lorsque vous n’en avez plus besoin, supprimez les ressources créées dans cet article.

Enregistrez le code suivant en tant que cleanup.yml :

---
- hosts: localhost
  vars:
      resource_group: servicebustest
      namespace: servicebustestns
      topic: servicebustesttopic
      subscription: servicebustestsubs
  tasks:
    - name: Delete subscription
      azure_rm_servicebustopicsubscription:
          name: "{{ subscription }}"
          topic: "{{ topic }}"
          resource_group: "{{ resource_group }}"
          namespace: "{{ namespace }}"
          state: absent
    - name: Delete topic
      azure_rm_servicebustopic:
          name: "{{ topic }}"
          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

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook cleanup.yml

Étapes suivantes