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.
Ansible installeren: Voer een van de volgende opties uit:
- Ansible installeren en configureren op een virtuele Linux-machine
- Configureer Azure Cloud Shell en maak een virtuele machine met Ansible als u geen toegang hebt tot een virtuele Linux-machine.
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 alsnext_hop_type
. Zie routeringsoverzicht voor meer informatie over hoe Azure routes selecteert.address_prefix
is gedefinieerd als10.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