자습서: Ansible을 사용하여 Azure 가상 네트워크 피어링 구성
Important
이 문서의 샘플 플레이북을 실행하려면 Ansible 2.8 이상이 필요합니다.
VNet(가상 네트워크) 피어링을 사용하여 두 개의 Azure Virtual Network를 원활하게 연결할 수 있습니다. 피어로 연결되면 두 가상 네트워크가 연결 용도로 하나로 표시됩니다.
트래픽은 개인 IP 주소를 통해 동일한 가상 네트워크의 VM 간에 라우팅됩니다. 마찬가지로 피어된 가상 네트워크의 VM 간 트래픽은 Microsoft 백본 인프라를 통해 라우팅됩니다. 따라서 서로 다른 가상 네트워크의 VM이 서로 통신할 수 있습니다.
이 문서에서는 다음 방법을 설명합니다.
- 두 개의 가상 네트워크 만들기
- 2개 가상 네트워크 피어링
- 두 네트워크 간의 피어링 삭제
필수 조건
- Azure 구독: Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
Ansible 설치: 다음 옵션 중 하나를 수행합니다.
- Linux 가상 머신에서 Ansible 설치 및 구성
- Azure Cloud Shell 구성 - Linux 가상 머신에 액세스할 수 없는 경우 Ansible을 사용하여 가상 머신 만들기
두 리소스 그룹 만들기
리소스 그룹은 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