Sdílet prostřednictvím


Kurz: Konfigurace partnerského vztahu virtuálních sítí Azure pomocí Ansible

Důležité

K spuštění ukázkových playbooků v tomto článku se vyžaduje Ansible 2.8 (nebo novější).

Partnerský vztah virtuální sítě umožňuje bezproblémově propojit dvě virtuální sítě Azure. Po vytvoření partnerského vztahu se dvě virtuální sítě zobrazí jako jedna pro účely připojení.

Provoz se směruje mezi virtuálními počítači ve stejné virtuální síti prostřednictvím privátních IP adres. Podobně se provoz mezi virtuálními počítači v partnerské virtuální síti směruje přes páteřní infrastrukturu Microsoftu. V důsledku toho můžou virtuální počítače v různých virtuálních sítích vzájemně komunikovat.

V tomto článku získáte informace o těchto tématech:

  • Vytvoření dvou virtuálních sítí
  • Vytvoření partnerského vztahu mezi dvěma virtuálními sítěmi
  • Odstranění partnerského vztahu mezi dvěma sítěmi

Požadavky

  • Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

Vytvoření dvou skupin prostředků

Skupina prostředků je logický kontejner, ve kterém se nasazují a spravují prostředky Azure.

Vzorový kód playbooku v této části slouží k:

  • Vytvoření dvou skupin prostředků
  - 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 }}"

Vytvoření první virtuální sítě

Vzorový kód playbooku v této části slouží k:

  • Vytvoření virtuální sítě
  • Vytvoření podsítě ve virtuální síti
  - 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 }}"

Vytvoření druhé virtuální sítě

Vzorový kód playbooku v této části slouží k:

  • Vytvoření virtuální sítě
  • Vytvoření podsítě ve virtuální síti
  - 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 }}"

Vytvoření partnerského vztahu mezi dvěma virtuálními sítěmi

Vzorový kód playbooku v této části slouží k:

  • Inicializace partnerského vztahu virtuálních sítí
  • Vytvoření partnerského vztahu dvou dříve vytvořených virtuálních sítí
  - 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

Odstraňte partnerský vztah virtuálních sítí.

Vzorový kód playbooku v této části slouží k:

  • Odstranění partnerského vztahu mezi dvěma dříve vytvořenými virtuálními sítěmi
  - name: Delete vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      state: absent

Získání ukázkového playbooku

Kompletní ukázkový playbook můžete získat dvěma způsoby:

  • Stáhněte playbook a uložte ho do vnet_peering.ymlsouboru .
  • Vytvořte nový soubor s názvem vnet_peering.yml a zkopírujte do něj následující obsah:
- 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

Spuštění ukázkového playbooku

Vzorový kód playbooku v této části slouží k otestování různých funkcí zobrazených v tomto kurzu.

Tady je několik klíčových poznámek, které je potřeba vzít v úvahu při práci s ukázkovým playbookem:

  • vars V části nahraďte {{ resource_group_name }} zástupný symbol názvem vaší skupiny prostředků.

Spusťte playbook pomocí příkazu ansible-playbook:

ansible-playbook vnet_peering.yml

Po spuštění playbooku se zobrazí výstup podobný následujícím výsledkům:

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

Vyčištění prostředků

Pokud už prostředky vytvořené v tomto článku nepotřebujete, odstraňte je.

Vzorový kód playbooku v této části slouží k:

  • Odstranění dvou skupin prostředků vytvořených dříve

Uložte následující ukázkový playbook 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	

Tady je několik klíčových poznámek, které je potřeba vzít v úvahu při práci s ukázkovým playbookem:

  • {{ resource_group_name-1 }} Zástupný symbol nahraďte názvem první vytvořené skupiny prostředků.
  • {{ resource_group_name-2 }} Zástupný symbol nahraďte názvem druhé vytvořené skupiny prostředků.
  • Odstraní se všechny prostředky v rámci dvou zadaných skupin prostředků.

Spusťte playbook pomocí příkazu ansible-playbook:

ansible-playbook cleanup.yml	

Další kroky