자습서: Ansible을 사용하여 Azure Service Bus에서 큐 구성

중요합니다

이 문서의 샘플 플레이북을 실행하려면 Ansible 2.8 이상이 필요합니다.

Azure Service Bus 는 엔터프라이즈 통합 메시지 브로커입니다. Service Bus는 큐와 토픽이라는 두 가지 유형의 통신을 지원합니다.

큐는 애플리케이션 간의 비동기 통신을 지원합니다. 앱은 메시지를 저장하는 큐로 메시지를 보냅니다. 수신 애플리케이션은 큐에 연결하여 메시지를 읽습니다.

토픽은 메시지 생성자와 메시지 수신자 간에 일대다 관계를 가능하게 하는 게시-구독 패턴을 지원합니다.

이 문서에서는 다음 방법을 알아봅니다.

  • 큐 만들기
  • 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 정책 만들기

SAS(공유 액세스 서명)는 토큰을 사용하는 클레임 기반 권한 부여 메커니즘입니다.

샘플 플레이북 코드는 서로 다른 권한으로 Service Bus 큐에 대해 두 개의 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 사용자가 큐에 있는 권한을 나타냅니다. 다음 값 중 하나를 지정합니다managelistensendlisten_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

다음 단계