Udostępnij za pośrednictwem


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.

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	

Następne kroki