다음을 통해 공유


자습서: Ansible을 사용하여 Azure 가상 네트워크 피어링 구성

Important

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

VNet(가상 네트워크) 피어링을 사용하여 두 개의 Azure Virtual Network를 원활하게 연결할 수 있습니다. 피어로 연결되면 두 가상 네트워크가 연결 용도로 하나로 표시됩니다.

트래픽은 개인 IP 주소를 통해 동일한 가상 네트워크의 VM 간에 라우팅됩니다. 마찬가지로 피어된 가상 네트워크의 VM 간 트래픽은 Microsoft 백본 인프라를 통해 라우팅됩니다. 따라서 서로 다른 가상 네트워크의 VM이 서로 통신할 수 있습니다.

이 문서에서는 다음 방법을 설명합니다.

  • 두 개의 가상 네트워크 만들기
  • 2개 가상 네트워크 피어링
  • 두 네트워크 간의 피어링 삭제

필수 조건

  • Azure 구독: Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

두 리소스 그룹 만들기

리소스 그룹은 Azure 리소스를 배포하고 관리하는 논리적 컨테이너입니다.

이 섹션의 샘플 플레이북 코드는 다음에 사용됩니다.

  • 두 리소스 그룹 만들기
  - name: Create a resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group }}"
      location: "{{ location }}"
  - name: Create secondary resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group_secondary }}"
      location: "{{ location }}"

첫 번째 가상 네트워크 만들기

이 섹션의 샘플 플레이북 코드는 다음에 사용됩니다.

  • 가상 네트워크 만들기
  • 가상 네트워크 내에서 서브넷 만들기
  - name: Create first virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefixes: "10.0.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefix: "10.0.0.0/24"
      virtual_network: "{{ vnet_name1 }}"

두 번째 가상 네트워크 만들기

이 섹션의 샘플 플레이북 코드는 다음에 사용됩니다.

  • 가상 네트워크 만들기
  • 가상 네트워크 내에서 서브넷 만들기
  - name: Create second virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ vnet_name2 }}"
      address_prefixes: "10.1.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name2 }}"
      address_prefix: "10.1.0.0/24"
      virtual_network: "{{ vnet_name2 }}"

2개 가상 네트워크 피어링

이 섹션의 샘플 플레이북 코드는 다음에 사용됩니다.

  • 가상 네트워크 피어링 초기화
  • 이전에 만든 두 가상 네트워크 피어링
  - name: Initial vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group_secondary }}"
        name: "{{ vnet_name2 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

  - name: Connect vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name2 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group }}"
        name: "{{ vnet_name1 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

가상 네트워크 피어링 삭제

이 섹션의 샘플 플레이북 코드는 다음에 사용됩니다.

  • 이전에 만든 두 가상 네트워크 간의 피어링을 삭제합니다.
  - name: Delete vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      state: absent

샘플 플레이북 가져오기

전체 샘플 플레이북을 가져오는 방법에는 두 가지가 있습니다.

  • 플레이북 을 다운로드하고 저장합니다 vnet_peering.yml.
  • 명명 vnet_peering.yml 된 새 파일을 만들고 다음 내용을 복사합니다.
- hosts: localhost
  tasks:
    - name: Prepare random postfix
      set_fact:
        rpfx: "{{ 1000 | random }}"
      run_once: yes

- name: Connect virtual networks with virtual network peering
  hosts: localhost
  connection: local
  vars:
    resource_group: "{{ resource_group_name }}"
    resource_group_secondary: "{{ resource_group_name }}2"
    vnet_name1: "myVnet{{ rpfx }}"
    vnet_name2: "myVnet{{ rpfx }}2"
    peering_name: peer1
    location: eastus2
  tasks:
  - name: Create a resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group }}"
      location: "{{ location }}"
  - name: Create secondary resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group_secondary }}"
      location: "{{ location }}"
  - name: Create first virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefixes: "10.0.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefix: "10.0.0.0/24"
      virtual_network: "{{ vnet_name1 }}"
  - name: Create second virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ vnet_name2 }}"
      address_prefixes: "10.1.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name2 }}"
      address_prefix: "10.1.0.0/24"
      virtual_network: "{{ vnet_name2 }}"
  - name: Initial vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group_secondary }}"
        name: "{{ vnet_name2 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

  - name: Connect vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name2 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group }}"
        name: "{{ vnet_name1 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

  - name: Delete vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      state: absent

샘플 플레이북 실행

이 섹션의 샘플 플레이북 코드는 이 자습서 전체에서 보여지는 다양한 기능을 테스트하는 데 사용됩니다.

샘플 플레이북을 사용할 때 고려해야 할 몇 가지 주요 참고 사항은 다음과 같습니다.

  • vars 섹션에서 자리 표시자를 리소스 그룹의 이름으로 바꿉 {{ resource_group_name }} 니다.

ansible-playbook 명령을 사용하여 플레이북을 실행합니다.

ansible-playbook vnet_peering.yml

플레이북을 실행한 후 다음 결과와 유사한 출력이 표시됩니다.

PLAY [localhost] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Prepare random postfix] 
ok: [localhost]

PLAY [Connect virtual networks with virtual network peering] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Create a resource group] 
changed: [localhost]

TASK [Create secondary resource group] 
changed: [localhost]

TASK [Create first virtual network] 
changed: [localhost]

TASK [Add subnet] 
changed: [localhost]

TASK [Create second virtual network] 
changed: [localhost]

TASK [Add subnet] 
changed: [localhost]

TASK [Initial vnet peering] 
changed: [localhost]

TASK [Connect vnet peering] 
changed: [localhost]

TASK [Delete vnet peering] 
changed: [localhost]

PLAY RECAP 
localhost                  : ok=12   changed=9    unreachable=0    failed=0    skipped=0   rescued=0    ignored=0

리소스 정리

더 이상 필요하지 않은 경우 이 문서에서 만든 리소스를 삭제합니다.

이 섹션의 샘플 플레이북 코드는 다음에 사용됩니다.

  • 이전에 만든 두 리소스 그룹을 삭제합니다.

다음 플레이북을 cleanup.yml로 저장합니다.

- hosts: localhost	
  vars:	
    resource_group: "{{ resource_group_name-1 }}"	
    resource_group_secondary: "{{ resource_group_name-2 }}"	
  tasks:	
    - name: Delete a resource group	
      azure_rm_resourcegroup:	
        name: "{{ resource_group }}"	
        force_delete_nonempty: yes	
        state: absent	
    - name: Delete a resource group	
      azure_rm_resourcegroup:	
        name: "{{ resource_group_secondary }}"	
        force_delete_nonempty: yes	
        state: absent	

샘플 플레이북을 사용할 때 고려해야 할 몇 가지 주요 참고 사항은 다음과 같습니다.

  • {{ resource_group_name-1 }} 자리 표시자를 만든 첫 번째 리소스 그룹의 이름으로 바꿉니다.
  • {{ resource_group_name-2 }} 자리 표시자를 만든 두 번째 리소스 그룹의 이름으로 바꿉니다.
  • 지정된 두 리소스 그룹 내의 모든 리소스가 삭제됩니다.

ansible-playbook 명령을 사용하여 플레이북을 실행합니다.

ansible-playbook cleanup.yml	

다음 단계