Delen via


Zelfstudie: Azure-routetabellen configureren met Ansible

Belangrijk

Ansible 2.8 (of hoger) is vereist om de voorbeeldplaybooks in dit artikel uit te voeren.

Azure routeert automatisch verkeer tussen Azure-subnetten, virtuele netwerken en on-premises netwerken. Als u meer controle nodig hebt over de routering van uw omgeving, kunt u een routetabel maken.

In dit artikel leert u het volgende:

Een routetabel maken Een virtueel netwerk en subnet een routetabel koppelen aan een subnet Koppel een routetabel los van een subnet: Routes maken en verwijderen Een routetabel verwijderen Een routetabel verwijderen

Vereisten

  • Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.

Een routetabel maken

Met de playbookcode in deze sectie wordt een routetabel gemaakt. Zie Azure-limieten voor informatie over limieten voor routetabellen.

Sla het volgende playbook op 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 }}"

Het playbook uitvoeren met ansible-playbook

ansible-playbook route_table_create.yml

Een routetabel aan een subnet koppelen

De playbookcode in deze sectie:

  • Hiermee maakt u een virtueel netwerk
  • Hiermee maakt u een subnet in het virtuele netwerk
  • Een routetabel aan het subnet koppelen

Routetabellen zijn niet gekoppeld aan virtuele netwerken. In plaats daarvan worden routetabellen gekoppeld aan het subnet van een virtueel netwerk.

Het virtuele netwerk en de routetabel moeten naast elkaar bestaan in dezelfde Azure-locatie en hetzelfde abonnement.

Subnetten en routetabellen hebben een een-op-veel-relatie. Een subnet kan worden gedefinieerd zonder gekoppelde routetabel of één routetabel. Routetabellen kunnen worden gekoppeld aan geen, één of veel subnetten.

Verkeer van het subnet wordt gerouteerd op basis van:

  • routes gedefinieerd in routetabellen
  • standaardroutes
  • routes die worden doorgegeven vanuit een on-premises netwerk

Het virtuele netwerk moet zijn verbonden met een virtuele Azure-netwerkgateway. De gateway kan ExpressRoute of VPN zijn als u BGP gebruikt met een VPN-gateway.

Sla het volgende playbook op 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 }}"

Het playbook uitvoeren met ansible-playbook

ansible-playbook route_table_associate.yml

Een routetabel ontkoppelen van een subnet

Met de playbookcode in deze sectie wordt een routetabel losgekoppeld van een subnet.

Wanneer u een routetabel loskoppelt van een subnet, stelt u het route_table voor het subnet in op None.

Sla het volgende playbook op 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"

Het playbook uitvoeren met ansible-playbook

ansible-playbook route_table_dissociate.yml

Een route maken

De playbookcode in deze sectie bevat een route binnen een routetabel.

Sla het volgende playbook op 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 }}"

Zie de volgende notities voordat u het playbook uitvoert:

  • virtual_network_gateway is gedefinieerd als next_hop_type. Zie routeringsoverzicht voor meer informatie over hoe Azure routes selecteert.
  • address_prefix is gedefinieerd als 10.1.0.0/16. Het voorvoegsel kan niet worden gedupliceerd binnen de routetabel.

Het playbook uitvoeren met ansible-playbook

ansible-playbook route_create.yml

Een route verwijderen

De playbookcode in deze sectie verwijdert een route uit een routetabel.

Sla het volgende playbook op 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

Het playbook uitvoeren met ansible-playbook

ansible-playbook route_delete.yml

Routetabelgegevens ophalen

De playbookcode in deze sectie maakt gebruik van de Ansible-module azure_rm_routetable_facts om routetabelgegevens op te halen.

Sla het volgende playbook op 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]

Het playbook uitvoeren met ansible-playbook

ansible-playbook route_table_facts.yml

Een routetabel verwijderen

De playbookcode in deze sectie bevat een routetabel.

Wanneer een routetabel wordt verwijderd, worden alle routes ook verwijderd.

Een routetabel kan niet worden verwijderd als deze is gekoppeld aan een subnet. Ontkoppel de routetabel van alle subnetten voordat u de routetabel probeert te verwijderen.

Sla het volgende playbook op 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

Het playbook uitvoeren met ansible-playbook

ansible-playbook route_table_delete.yml

Volgende stappen