Поделиться через


Руководство по настройке пиринга виртуальной сети Azure с помощью Ansible

Важно!

Для выполнения примеров сборников схем из этой статьи требуется Ansible 2.8 (или последующей версии).

Пиринг виртуальных сетей позволяет без дополнительной настройки соединить две виртуальные сети Azure. После создания пиринга две виртуальные сети выглядят как одна при подключении.

Трафик передается между виртуальными машинами в одной виртуальной сети через частные IP-адреса. Точно так же трафик между виртуальными машинами в пиринговой виртуальной сети передается через магистральную инфраструктуру Майкрософт. Поэтому виртуальные машины в разных виртуальных сетях могут взаимодействовать между собой.

Вы узнаете, как выполнять следующие задачи:

  • создание двух виртуальных сетей;
  • Создание пирингового подключения между двумя виртуальными сетями.
  • Удаление пирингового подключения между двумя сетями.

Необходимые компоненты

Создание двух групп ресурсов

Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов 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	

Следующие шаги