Lernprogramm: Konfigurieren des virtuellen Azure-Netzwerk-Peering mithilfe von Ansible
Wichtig
Für die Ausführung der Beispielplaybooks in diesem Artikel ist mindestens Ansible 2.8 erforderlich.
Das Peering virtueller Netzwerke (VNET-Peering) ermöglicht das nahtlose Verbinden von zwei virtuellen Azure-Netzwerken. Nach dem Peering werden die beiden virtuellen Netzwerke für Verbindungszwecke als einzelnes Element angezeigt.
Datenverkehr wird zwischen virtuellen Computern in demselben virtuellen Netzwerk über private IP-Adressen weitergeleitet. Auf ähnliche Weise wird Datenverkehr zwischen VMs in einem virtuellen Netzwerk mit Peering über die Microsoft-Backboneinfrastruktur weitergeleitet. So können VMs verschiedener virtueller Netzwerke miteinander kommunizieren.
In diesem Artikel werden folgende Vorgehensweisen behandelt:
- Erstellen zweier virtueller Netzwerke
- Herstellen einer Peerverbindung zwischen den beiden virtuellen Netzwerken
- Löschen des Peerings zwischen den beiden Netzwerken
Voraussetzungen
- Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Installieren von Ansible: Verwenden Sie eine der folgenden Optionen:
- Installieren und Konfigurieren von Ansible auf einem virtuellen Linux-Computer
- Konfigurieren Sie Azure Cloud Shell. Sollten Sie keinen Zugriff auf einen virtuellen Linux-Computer haben, können Sie mit Ansible einen virtuellen Computer erstellen.
Erstellen von zwei Ressourcengruppen
Eine Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden.
Der Playbook-Beispielcode in diesem Abschnitt wird für Folgendes verwendet:
- Erstellen von zwei Ressourcengruppen
- 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 }}"
Erstellen des ersten virtuellen Netzwerks
Der Playbook-Beispielcode in diesem Abschnitt wird für Folgendes verwendet:
- Erstellen eines virtuellen Netzwerks
- Erstellen eines Subnetzes innerhalb des virtuellen Netzwerks
- 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 }}"
Erstellen des zweiten virtuellen Netzwerks
Der Playbook-Beispielcode in diesem Abschnitt wird für Folgendes verwendet:
- Erstellen eines virtuellen Netzwerks
- Erstellen eines Subnetzes innerhalb des virtuellen Netzwerks
- 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 }}"
Herstellen einer Peerverbindung zwischen den beiden virtuellen Netzwerken
Der Playbook-Beispielcode in diesem Abschnitt wird für Folgendes verwendet:
- Initialisieren des VNET-Peerings
- Einrichten des Peerings für die beiden zuvor erstellten virtuellen Netzwerke
- 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
Löschen des VNET-Peerings
Der Playbook-Beispielcode in diesem Abschnitt wird für Folgendes verwendet:
- Löschen des Peerings zwischen den beiden zuvor erstellten virtuellen Netzwerken
- name: Delete vnet peering
azure_rm_virtualnetworkpeering:
resource_group: "{{ resource_group }}"
name: "{{ peering_name }}"
virtual_network: "{{ vnet_name1 }}"
state: absent
Abrufen der Beispielplaybooks
Das vollständige Beispielplaybook kann auf zwei Arten bezogen werden:
- Laden Sie das Playbook herunter, und speichern Sie es als
vnet_peering.yml
. - Erstellen Sie eine neue Datei mit dem Namen
vnet_peering.yml
, und kopieren Sie die folgenden Inhalte in diese Datei:
- 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
Ausführen des Beispielplaybooks
Der Playbook-Beispielcode in diesem Abschnitt wird verwendet, um verschiedene Features dieses Tutorials zu testen.
Hier sind einige wichtige Hinweise aufgeführt, die Sie beim Arbeiten mit dem Beispielplaybook berücksichtigen sollten:
- Ersetzen Sie im Abschnitt
vars
den Platzhalter{{ resource_group_name }}
durch den Namen Ihrer Ressourcengruppe.
Führen Sie das Playbook aus, indem Sie den Befehl „ansible-playbook“ verwenden:
ansible-playbook vnet_peering.yml
Nach dem Ausführen des Playbooks wird in etwa die folgende Ausgabe angezeigt:
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
Bereinigen von Ressourcen
Löschen Sie die in diesem Artikel erstellten Ressourcen, wenn Sie sie nicht mehr benötigen.
Der Playbook-Beispielcode in diesem Abschnitt wird für Folgendes verwendet:
- Löschen der beiden zuvor erstellten Ressourcengruppen
Speichern Sie das folgende Playbook als 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
Hier sind einige wichtige Hinweise aufgeführt, die Sie beim Arbeiten mit dem Beispielplaybook berücksichtigen sollten:
- Ersetzen Sie den Platzhalter
{{ resource_group_name-1 }}
durch den Namen der ersten erstellten Ressourcengruppe. - Ersetzen Sie den Platzhalter
{{ resource_group_name-2 }}
durch den Namen der zweiten erstellten Ressourcengruppe. - Alle Ressourcen in den beiden angegebenen Ressourcengruppen werden gelöscht.
Führen Sie das Playbook aus, indem Sie den Befehl „ansible-playbook“ verwenden:
ansible-playbook cleanup.yml