重要
この記事のサンプル プレイブックを実行するには、Ansible 2.8 (以降) が必要です。
Azure Service Bus は、エンタープライズ統合メッセージ ブローカーです。 Service Bus は、キューとトピックの 2 種類の通信をサポートしています。
キューは、アプリケーション間の非同期通信をサポートします。 あるアプリが、メッセージを格納するキューにメッセージを送信します。 次に受信側アプリケーションがキューに接続し、メッセージを読み取ります。
トピックでは発行-サブスクライブ パターンがサポートされ、メッセージ送信側とメッセージ受信側の一対多の関係を有効にできます。
この記事では、次のことについて説明します。
- キューの作成
- SAS ポリシーを作成する
- 名前空間情報を取得する
- キュー情報を取得する
- キューの SAS ポリシーを取り消す
前提条件
- Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
Ansible のインストール: 次のいずれかのオプションを実行します。
- Linux 仮想マシンに Ansible をインストールして構成する
- Azure Cloud Shell の構成 - アクセスできる Linux 仮想マシンがない場合は、Ansible で仮想マシンを作成できます。
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
値は、ユーザーがキューに対して持っている特権を表します。manage
、listen
、send
、または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