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.
Installera Ansible: Gör något av följande alternativ:
- Installera och konfigurera Ansible på en virtuell Linux-dator
- Konfigurera Azure Cloud Shell och – om du inte har åtkomst till en virtuell Linux-dator – skapa en virtuell dator med Ansible.
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 somnext_hop_type
. Mer information om hur Azure väljer vägar finns i Routningsöversikt.address_prefix
definieras som10.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