次の方法で共有


チュートリアル: Ansible を使用して Azure Service Bus のキューを構成する

重要

この記事のサンプル プレイブックを実行するには、Ansible 2.8 (以降) が必要です。

Azure Service Bus は、エンタープライズ統合メッセージ ブローカーです。 Service Bus は、キューとトピックの 2 種類の通信をサポートしています。

キューは、アプリケーション間の非同期通信をサポートします。 あるアプリが、メッセージを格納するキューにメッセージを送信します。 次に受信側アプリケーションがキューに接続し、メッセージを読み取ります。

トピックでは発行-サブスクライブ パターンがサポートされ、メッセージ送信側とメッセージ受信側の一対多の関係を有効にできます。

この記事では、次のことについて説明します。

  • キューの作成
  • SAS ポリシーを作成する
  • 名前空間情報を取得する
  • キュー情報を取得する
  • キューの SAS ポリシーを取り消す

前提条件

  • Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

Service Bus キューを作成する

サンプル プレイブック コードは、次のリソースを作成します。

  • Azure リソース グループ
  • リソース グループ内の Service Bus 名前空間
  • 名前空間を持つ Service Bus キュー

次のプレイブックを 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

ansible-playbook を使用してプレイブックを実行します

ansible-playbook servicebus_queue.yml

SAS ポリシーを作成する

Shared Access Signature (SAS) は、トークンを使う要求ベースの承認メカニズムです。

サンプル プレイブック コードは、異なる特権を持つ Service Bus キューの 2 つの SAS ポリシーを作成します。

次のプレイブックを 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

プレイブックを実行する前に、次の注意事項を参照してください。

  • rights 値は、ユーザーがキューに対して持っている特権を表します。 managelistensend、または listen_send の値のいずれかを指定します。

ansible-playbook を使用してプレイブックを実行します

ansible-playbook servicebus_queue_policy.yml

名前空間情報を取得する

サンプル プレイブック コードは、名前空間情報のクエリを実行します。

次のプレイブックを 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

プレイブックを実行する前に、次の注意事項を参照してください。

  • show_sas_policies 値は、指定した名前空間下に SAS ポリシーを表示するかどうかを示します。 既定では、値は False になり、ネットワークのオーバーヘッドが追加されないようにします。

ansible-playbook を使用してプレイブックを実行します

ansible-playbook servicebus_namespace_info.yml

キュー情報を取得する

プレイブックのサンプル コードは、キュー情報をクエリします。

次のプレイブックを 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

プレイブックを実行する前に、次の注意事項を参照してください。

  • show_sas_policies の値は、指定したキューの下に SAS ポリシーを表示するかどうかを示します。 既定では、この値は False に設定され、ネットワークのオーバーヘッドが追加されないようにします。

ansible-playbook を使用してプレイブックを実行します

ansible-playbook servicebus_queue_info.yml

キューの SAS ポリシーを取り消す

サンプル プレイブック コードは、キューの SAS ポリシーを削除します。

次のプレイブックを 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

ansible-playbook を使用してプレイブックを実行します

ansible-playbook servicebus_queue_policy_delete.yml

リソースをクリーンアップする

この記事で作成したリソースが不要になったら、削除してください。

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

ansible-playbook を使用してプレイブックを実行します

ansible-playbook cleanup.yml

次のステップ