Samouczek: konfigurowanie komunikacji równorzędnej sieci wirtualnych platformy Azure przy użyciu rozwiązania Ansible
Ważne
Rozwiązanie Ansible w wersji 2.8 (lub nowszej) jest wymagane do uruchomienia przykładowych podręczników w tym artykule.
Komunikacja równorzędna sieci wirtualnych umożliwia bezproblemowe łączenie dwóch sieci wirtualnych platformy Azure. Po połączeniu równorzędnym dwie sieci wirtualne są wyświetlane jako jedna dla celów łączności.
Ruch jest kierowany między maszynami wirtualnymi w tej samej sieci wirtualnej za pośrednictwem prywatnych adresów IP. Podobnie ruch między maszynami wirtualnymi w równorzędnej sieci wirtualnej jest kierowany przez infrastrukturę szkieletową firmy Microsoft. W związku z tym maszyny wirtualne w różnych sieciach wirtualnych mogą komunikować się ze sobą.
W tym artykule omówiono sposób wykonywania następujących zadań:
- Tworzenie dwóch sieci wirtualnych
- Komunikacja równorzędna dwóch sieci wirtualnych
- Usuwanie komunikacji równorzędnej między dwiema sieciami
Wymagania wstępne
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Zainstaluj oprogramowanie Ansible: Wykonaj jedną z następujących opcji:
- Instalowanie i konfigurowanie rozwiązania Ansible na maszynie wirtualnej z systemem Linux
- Skonfiguruj usługę Azure Cloud Shell i — jeśli nie masz dostępu do maszyny wirtualnej z systemem Linux — utwórz maszynę wirtualną za pomocą rozwiązania Ansible.
Tworzenie dwóch grup zasobów
Grupa zasobów to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.
Przykładowy kod podręcznika w tej sekcji służy do:
- Tworzenie dwóch grup zasobów
- 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 }}"
Tworzenie pierwszej sieci wirtualnej
Przykładowy kod podręcznika w tej sekcji służy do:
- Tworzenie sieci wirtualnej
- Tworzenie podsieci w sieci wirtualnej
- 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 }}"
Tworzenie drugiej sieci wirtualnej
Przykładowy kod podręcznika w tej sekcji służy do:
- Tworzenie sieci wirtualnej
- Tworzenie podsieci w sieci wirtualnej
- 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 }}"
Komunikacja równorzędna dwóch sieci wirtualnych
Przykładowy kod podręcznika w tej sekcji służy do:
- Inicjowanie komunikacji równorzędnej sieci wirtualnych
- Komunikacja równorzędna dwóch wcześniej utworzonych sieci wirtualnych
- 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
Usuń komunikację równorzędną sieci wirtualnych
Przykładowy kod podręcznika w tej sekcji służy do:
- Usuwanie komunikacji równorzędnej między dwiema wcześniej utworzonymi sieciami wirtualnymi
- name: Delete vnet peering
azure_rm_virtualnetworkpeering:
resource_group: "{{ resource_group }}"
name: "{{ peering_name }}"
virtual_network: "{{ vnet_name1 }}"
state: absent
Pobieranie przykładowego podręcznika
Istnieją dwa sposoby uzyskania kompletnego przykładowego podręcznika:
- Pobierz podręcznik i zapisz go w pliku
vnet_peering.yml
. - Utwórz nowy plik o nazwie
vnet_peering.yml
i skopiuj do niego następującą zawartość:
- 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
Uruchamianie przykładowego podręcznika
Przykładowy kod podręcznika w tej sekcji służy do testowania różnych funkcji przedstawionych w tym samouczku.
Poniżej przedstawiono kilka kluczowych uwag, które należy wziąć pod uwagę podczas pracy z przykładowym podręcznikiem:
vars
W sekcji zastąp{{ resource_group_name }}
symbol zastępczy nazwą grupy zasobów.
Uruchom podręcznik przy użyciu polecenia ansible-playbook:
ansible-playbook vnet_peering.yml
Po uruchomieniu podręcznika zobaczysz dane wyjściowe podobne do następujących wyników:
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
Czyszczenie zasobów
Gdy zasoby utworzone w tym artykule nie będą już potrzebne, usuń je.
Przykładowy kod podręcznika w tej sekcji służy do:
- Usuń dwie utworzone wcześniej grupy zasobów
Zapisz następujący podręcznik jako 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
Poniżej przedstawiono kilka kluczowych uwag, które należy wziąć pod uwagę podczas pracy z przykładowym podręcznikiem:
{{ resource_group_name-1 }}
Zastąp symbol zastępczy nazwą utworzonej pierwszej grupy zasobów.{{ resource_group_name-2 }}
Zastąp symbol zastępczy nazwą utworzonej drugiej grupy zasobów.- Wszystkie zasoby w ramach dwóch określonych grup zasobów zostaną usunięte.
Uruchom podręcznik przy użyciu polecenia ansible-playbook:
ansible-playbook cleanup.yml