title | description | keywords | ms.topic | ms.date | ms.custom |
---|---|---|---|---|---|
Tutorial - Configure queues in Azure Service Bus using Ansible |
Learn how to use Ansible to create an Azure Service Bus queue |
ansible, azure, devops, bash, playbook, service bus, queue |
tutorial |
04/30/2019 |
devx-track-ansible |
[!INCLUDE ansible-28-note.md]
[!INCLUDE open-source-devops-intro-servicebus.md]
In this article, you learn how to:
[!div class="checklist"]
- Create a queue
- Create a SAS plicy
- Retrieve namespace information
- Retrieve queue information
- Revoke the queue SAS policy
[!INCLUDE open-source-devops-prereqs-azure-subscription.md] [!INCLUDE ansible-prereqs-cloudshell-use-or-vm-creation2.md]
The sample playbook code creates the following resources:
- Azure resource group
- Service Bus namespace within the resource group
- Service Bus queue with the namespace
Save the following playbook as 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
Run the playbook using ansible-playbook
ansible-playbook servicebus_queue.yml
A Shared Access Signature (SAS) is a claims-based authorization mechanism using tokens.
The sample playbook code creates two SAS policies for a Service Bus queue with different privileges.
Save the following playbook as 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
Before running the playbook, see the following notes:
- The
rights
value represents the privilege a user has with the queue. Specify one of the following values:manage
,listen
,send
, orlisten_send
.
Run the playbook using ansible-playbook
ansible-playbook servicebus_queue_policy.yml
The sample playbook code queries the namespace information.
Save the following playbook as 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
Before running the playbook, see the following notes:
- The
show_sas_policies
value indicates whether to show the SAS policies under the specified namespace. By default, the value isFalse
to avoid additional network overhead.
Run the playbook using ansible-playbook
ansible-playbook servicebus_namespace_info.yml
The sample playbook code queries queue information.
Save the following playbook as 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
Before running the playbook, see the following notes:
- The
show_sas_policies
value indicates whether to show the SAS policies under the specified queue. By default, this value is set toFalse
to avoid additional network overhead.
Run the playbook using ansible-playbook
ansible-playbook servicebus_queue_info.yml
The sample playbook code deletes a queue SAS policy.
Save the following playbook as 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
Run the playbook using ansible-playbook
ansible-playbook servicebus_queue_policy_delete.yml
When no longer needed, delete the resources created in this article.
Save the following code as 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
Run the playbook using ansible-playbook
ansible-playbook cleanup.yml
[!div class="nextstepaction"] Tutorial: Configure a topic in Azure Service Bus using Ansible