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.

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 als next_hop_type definiert. Weitere Informationen dazu, wie in Azure Routen ausgewählt werden, finden Sie in der Routingübersicht.
  • address_prefix ist als 10.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

Nächste Schritte