Lernprogramm: Konfigurieren von Azure-Routentabellen mithilfe von Ansible
Wichtig
Für die Ausführung der Beispielplaybooks in diesem Artikel ist mindestens Ansible 2.8 erforderlich.
Azure führt für Datenverkehr automatisch das Routing zwischen Azure-Subnetzen, virtuellen Netzwerken und lokalen Netzwerken durch. Falls Sie mehr Kontrolle über das Routing für Ihre Umgebung benötigen, können Sie eine Routingtabelle erstellen.
In diesem Artikel werden folgende Vorgehensweisen behandelt:
Erstellen einer Routingtabelle Erstellen eines virtuellen Netzwerks und Subnetzes Zuordnen einer Routingtabelle zu einem Subnetz Aufheben der Zuordnung einer Routingtabelle zu einem Subnetz Erstellen und Löschen von Routen Abfragen einer Routingtabelle Löschen einer Routingtabelle
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 einer Routingtabelle
Mit dem Playbookcode in diesem Abschnitt wird eine Routingtabelle erstellt. Weitere Informationen zu Einschränkungen für Routingtabellen finden Sie auf der Seite mit den Azure-Einschränkungen.
Speichern Sie das folgende Playbook als route_table_create.yml
:
- hosts: localhost
vars:
route_table_name: myRouteTable
resource_group: myResourceGroup
tasks:
- name: Create a route table
azure_rm_routetable:
name: "{{ route_table_name }}"
resource_group: "{{ resource_group }}"
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook route_table_create.yml
Zuordnen einer Routingtabelle zu einem Subnetz
Mit dem Playbookcode in diesem Abschnitt wird Folgendes durchgeführt:
- Erstellt ein virtuelles Netzwerk.
- Erstellen eines Subnetzes innerhalb des virtuellen Netzwerks
- Zuordnen einer Routingtabelle zum Subnetz
Routingtabellen werden nicht virtuellen Netzwerken zugeordnet. Stattdessen werden Routingtabellen dem Subnetz eines virtuellen Netzwerks zugeordnet.
Das virtuelle Netzwerk und die Routingtabelle müssen sich an demselben Azure-Standort und unter demselben Abonnement befinden.
Subnetze und Routingtabellen verfügen über eine 1:n-Beziehung. Ein Subnetz kann ohne zugeordnete Routingtabelle oder mit einer einzelnen Routingtabelle definiert werden. Routingtabellen können keinem, einem oder vielen Subnetzen zugeordnet werden.
Die Weiterleitung des Datenverkehrs aus dem Subnetz basiert auf:
- In Routingtabellen definierten Routen
- Standardrouten
- Routen, die aus einem lokalen Netzwerk stammen
Das virtuelle Netzwerk muss mit einem Gateway für virtuelle Azure-Netzwerke verbunden werden. Das Gateway kann vom Typ „ExpressRoute“ oder „VPN“ sein, wenn BGP mit einem VPN-Gateway verwendet wird.
Speichern Sie das folgende Playbook als route_table_associate.yml
:
- hosts: localhost
vars:
subnet_name: mySubnet
virtual_network_name: myVirtualNetwork
route_table_name: myRouteTable
resource_group: myResourceGroup
tasks:
- name: Create virtual network
azure_rm_virtualnetwork:
name: "{{ virtual_network_name }}"
resource_group: "{{ resource_group }}"
address_prefixes_cidr:
- 10.1.0.0/16
- 172.100.0.0/16
dns_servers:
- 127.0.0.1
- 127.0.0.3
- name: Create a subnet with route table
azure_rm_subnet:
name: "{{ subnet_name }}"
virtual_network_name: "{{ virtual_network_name }}"
resource_group: "{{ resource_group }}"
address_prefix_cidr: "10.1.0.0/24"
route_table: "{{ route_table_name }}"
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook route_table_associate.yml
Aufheben der Zuordnung einer Routingtabelle zu einem Subnetz
Mit dem Playbookcode in diesem Abschnitt wird die Zuordnung einer Routingtabelle zu einem Subnetz aufgehoben.
Legen Sie beim Aufheben der Zuordnung einer Routingtabelle zu einem Subnetz das route_table
-Element für das Subnetz auf None
fest.
Speichern Sie das folgende Playbook als route_table_dissociate.yml
:
- hosts: localhost
vars:
subnet_name: mySubnet
virtual_network_name: myVirtualNetwork
resource_group: myResourceGroup
tasks:
- name: Dissociate a route table
azure_rm_subnet:
name: "{{ subnet_name }}"
virtual_network_name: "{{ virtual_network_name }}"
resource_group: "{{ resource_group }}"
address_prefix_cidr: "10.1.0.0/24"
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook route_table_dissociate.yml
Erstellen einer Route
Mit dem Playbookcode in diesem Abschnitt wird in einer Routingtabelle eine Route erstellt.
Speichern Sie das folgende Playbook als route_create.yml
:
- hosts: localhost
vars:
route_name: myRoute
route_table_name: myRouteTable
resource_group: myResourceGroup
tasks:
- name: Create route
azure_rm_route:
name: "{{ route_name }}"
resource_group: "{{ resource_group }}"
next_hop_type: virtual_network_gateway
address_prefix: "10.1.0.0/16"
route_table_name: "{{ route_table_name }}"
Beachten Sie vor dem Ausführen des Playbooks die folgenden Hinweise:
virtual_network_gateway
ist alsnext_hop_type
definiert. Weitere Informationen dazu, wie in Azure Routen ausgewählt werden, finden Sie in der Routingübersicht.address_prefix
ist als10.1.0.0/16
definiert. Das Präfix kann in der Routingtabelle nicht dupliziert werden.
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook route_create.yml
Löschen einer Route
Mit dem Playbookcode in diesem Abschnitt wird eine Route aus einer Routingtabelle gelöscht.
Speichern Sie das folgende Playbook als route_delete.yml
:
- hosts: localhost
vars:
route_name: myRoute
route_table_name: myRouteTable
resource_group: myResourceGroup
tasks:
- name: Remove route
azure_rm_route:
name: "{{ route_name }}"
resource_group: "{{ resource_group }}"
route_table_name: "{{ route_table_name }}"
state: absent
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook route_delete.yml
Abrufen von Informationen zur Routingtabelle
Für den Playbookcode in diesem Abschnitt wird das Ansible-Modul azure_rm_routetable_facts
verwendet, um Informationen zur Routingtabelle abzurufen.
Speichern Sie das folgende Playbook als route_table_facts.yml
:
- hosts: localhost
vars:
route_table_name: myRouteTable
resource_group: myResourceGroup
tasks:
- name: Get route table information
azure_rm_routetable_facts:
resource_group: "{{ resource_group }}"
name: "{{ route_table_name }}"
register: query
- debug:
var: query.route_tables[0]
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook route_table_facts.yml
Löschen einer Routingtabelle
Mit dem Playbookcode in diesem Abschnitt wird eine Routingtabelle gelöscht.
Wenn eine Routingtabelle gelöscht wird, werden auch alle darin enthaltenen Routen gelöscht.
Das Löschen einer Routingtabelle ist nicht möglich, wenn sie einem Subnetz zugeordnet ist. Heben Sie die Zuordnung der Routingtabelle zu Subnetzen auf, bevor Sie versuchen, die Routingtabelle zu löschen.
Speichern Sie das folgende Playbook als route_table_delete.yml
:
- hosts: localhost
vars:
route_table_name: myRouteTable
resource_group: myResourceGroup
tasks:
- name: Create a route table
azure_rm_routetable:
name: "{{ route_table_name }}"
resource_group: "{{ resource_group }}"
state: absent
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook route_table_delete.yml