Руководство по настройке пиринга виртуальной сети Azure с помощью Ansible
Важно!
Для выполнения примеров сборников схем из этой статьи требуется Ansible 2.8 (или последующей версии).
Пиринг виртуальных сетей позволяет без дополнительной настройки соединить две виртуальные сети Azure. После создания пиринга две виртуальные сети выглядят как одна при подключении.
Трафик передается между виртуальными машинами в одной виртуальной сети через частные IP-адреса. Точно так же трафик между виртуальными машинами в пиринговой виртуальной сети передается через магистральную инфраструктуру Майкрософт. Поэтому виртуальные машины в разных виртуальных сетях могут взаимодействовать между собой.
Вы узнаете, как выполнять следующие задачи:
- создание двух виртуальных сетей;
- Создание пирингового подключения между двумя виртуальными сетями.
- Удаление пирингового подключения между двумя сетями.
Необходимые компоненты
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Установите Ansible: выполните одно из указанных ниже действий.
- Установите и настройте Ansible на виртуальной машине Linux.
- Настройте 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 }}"
Создание пирингового подключения между двумя виртуальными сетями.
Код из примера сборника схем в этом разделе используется для следующего.
- Инициализация пиринга между виртуальными сетями.
- Создание пирингового подключения между двумя ранее созданными виртуальными сетями.
- 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
Очистка ресурсов
Удалите ресурсы Azure, созданные в рамках этой статьи, если они вам больше не нужны.
Код из примера сборника схем в этом разделе используется для следующего.
- Удаление двух групп ресурсов, созданных ранее.
Сохраните следующий сборник схем как 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