Dela via


Självstudie: Konfigurera Azure-routningstabeller med Ansible

Viktigt!

Ansible 2.8 (eller senare) krävs för att köra exempelspelböckerna i den här artikeln.

Azure dirigerar automatiskt trafik mellan Azure-undernät, virtuella nätverk och lokala nätverk. Om du behöver mer kontroll över din miljös routning kan du skapa en routningstabell.

I den här artikeln kan du se hur du:

Skapa en routningstabell Skapa ett virtuellt nätverk och undernät Associera en routningstabell med ett undernät Koppla bort en routningstabell från ett undernät Skapa och ta bort vägar Fråga en routningstabell Ta bort en routningstabell

Förutsättningar

  • Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Skapa en routningstabell

Spelbokskoden i det här avsnittet skapar en routningstabell. Information om gränser för routningstabeller finns i Azure-gränser.

Spara följande spelbok som 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 }}"

Kör spelboken med ansible-playbook

ansible-playbook route_table_create.yml

Associera en routningstabell till ett undernät

Spelbokskoden i det här avsnittet:

  • Skapar ett virtuellt nätverk
  • Skapar ett undernät i det virtuella nätverket
  • Associerar en routningstabell till undernätet

Routningstabeller är inte kopplade till virtuella nätverk. Routningstabeller associeras i stället med undernätet för ett virtuellt nätverk.

Det virtuella nätverket och routningstabellen måste finnas på samma Azure-plats och prenumeration.

Undernät och routningstabeller har en en-till-många-relation. Ett undernät kan definieras utan någon associerad routningstabell eller en routningstabell. Routningstabeller kan associeras med inget, ett eller flera undernät.

Trafik från undernätet dirigeras baserat på:

  • vägar som definierats i routningstabeller
  • standardvägar
  • vägar som sprids från ett lokalt nätverk

Det virtuella nätverket måste vara anslutet till en virtuell Azure-nätverksgateway. Gatewayen kan vara ExpressRoute eller VPN om du använder BGP med en VPN-gateway.

Spara följande spelbok som 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 }}"

Kör spelboken med ansible-playbook

ansible-playbook route_table_associate.yml

Avassociera en routningstabell från ett undernät

Spelbokskoden i det här avsnittet kopplar bort en routningstabell från ett undernät.

När du kopplar bort en routningstabell från ett undernät anger du route_table för undernätet till None.

Spara följande spelbok som 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"

Kör spelboken med ansible-playbook

ansible-playbook route_table_dissociate.yml

Skapa en väg

Spelbokskoden i det här avsnittet är en väg i en routningstabell.

Spara följande spelbok som 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 }}"

Se följande anteckningar innan du kör spelboken:

  • virtual_network_gateway definieras som next_hop_type. Mer information om hur Azure väljer vägar finns i Routningsöversikt.
  • address_prefix definieras som 10.1.0.0/16. Prefixet kan inte dupliceras i routningstabellen.

Kör spelboken med ansible-playbook

ansible-playbook route_create.yml

Ta bort en väg

Spelbokskoden i det här avsnittet tar bort en väg från en routningstabell.

Spara följande spelbok som 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

Kör spelboken med ansible-playbook

ansible-playbook route_delete.yml

Hämta information om routningstabell

Spelbokskoden i det här avsnittet använder Ansible-modulen azure_rm_routetable_facts för att hämta routningstabellinformation.

Spara följande spelbok som 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]

Kör spelboken med ansible-playbook

ansible-playbook route_table_facts.yml

Ta bort en routningstabell

Spelbokskoden i det här avsnittet är en routningstabell.

När en routningstabell tas bort tas även alla dess vägar bort.

Det går inte att ta bort en routningstabell om den är associerad med ett undernät. Koppla bort routningstabellen från eventuella undernät innan du försöker ta bort routningstabellen .

Spara följande spelbok som 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

Kör spelboken med ansible-playbook

ansible-playbook route_table_delete.yml

Nästa steg