Tutoriel : Configurer des tables de routage Azure à l’aide d’Ansible
Important
Ansible 2.8 (ou version ultérieure) est nécessaire pour exécuter les exemples de playbooks dans cet article.
Azure achemine automatiquement le trafic entre les sous-réseaux, les réseaux virtuels et les réseaux locaux Azure. Si vous avez besoin d’une maîtrise plus stricte du routage de votre environnement, vous pouvez créer une table de routage.
Dans cet article, vous apprendrez comment :
Créer une table de routage Créer un réseau virtuel et un sous-réseau Associer une table de routage à un sous-réseau Dissocier une table de routage d’un sous-réseau Créer et supprimer des itinéraires Interroger une table de routage Supprimer une table de routage
Prérequis
- Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Installer Ansible. Pour cela, choisissez l’une des options suivantes :
- Installez et configurez Ansible sur une machine virtuelle Linux
- Configurez Azure Cloud Shell et, si vous n’avez pas accès à une machine virtuelle Linux, créez une machine virtuelle avec Ansible.
Créer une table de routage
Le code du playbook de cette section crée une table de routage. Pour plus d’informations sur les limites des tables de routage, voir Limites Azure.
Enregistrez le playbook suivant en tant que 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 }}"
Exécutez le playbook en utilisant ansible-playbook
ansible-playbook route_table_create.yml
Associer une table de routage à un sous-réseau
Le code du playbook de cette section :
- Crée un réseau virtuel
- Crée un sous-réseau au sein du réseau virtuel
- Associe une table de routage au sous-réseau
Les tables de routage ne sont pas associées à des réseaux virtuels, mais au sous-réseau d’un réseau virtuel.
Le réseau virtuel et la table de routage doivent se trouver dans le même abonnement et au même emplacement Azure.
Les sous-réseaux et les tables de routage entretiennent une relation un-à-plusieurs. Il est possible de définir un sous-réseau en y associant zéro ou une seule table de routage. Les tables de routage peuvent être associés à zéro, un ou plusieurs sous-réseaux.
Le trafic provenant du sous-réseau est acheminé selon :
- les itinéraires définis dans les tables de routage ;
- les itinéraires par défaut ;
- les itinéraires propagés à partir d’un réseau local.
Le réseau virtuel doit être connecté à une passerelle de réseau virtuel Azure, qui peut être ExpressRoute ou un VPN si vous utilisez BGP avec une passerelle VPN.
Enregistrez le playbook suivant en tant que 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 }}"
Exécutez le playbook en utilisant ansible-playbook
ansible-playbook route_table_associate.yml
Dissocier une table de routage d’un sous-réseau
Le code du playbook de cette section dissocie une table de routage d’un sous-réseau.
Pour dissocier une table de routage d’un sous-réseau, définissez route_table
sur None
.
Enregistrez le playbook suivant en tant que 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"
Exécutez le playbook en utilisant ansible-playbook
ansible-playbook route_table_dissociate.yml
Créer un itinéraire
Le code du playbook de cette section crée un itinéraire dans une table de routage.
Enregistrez le playbook suivant en tant que 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 }}"
Avant d’exécuter le playbook, consultez les notes suivantes :
virtual_network_gateway
est défini commenext_hop_type
. Pour plus d’informations sur la façon dont Azure sélectionne les itinéraires, voir Vue d’ensemble du routage.address_prefix
est défini comme10.1.0.0/16
. Le préfixe ne peut pas être dupliqué dans la table de routage.
Exécutez le playbook en utilisant ansible-playbook
ansible-playbook route_create.yml
Supprimer un itinéraire
Le code du playbook de cette section supprime un itinéraire d’une table de routage.
Enregistrez le playbook suivant en tant que 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
Exécutez le playbook en utilisant ansible-playbook
ansible-playbook route_delete.yml
Récupérer les informations de la table de routage
Le code du playbook de cette section utilise le module Ansible azure_rm_routetable_facts
pour récupérer les informations de la table de routage.
Enregistrez le playbook suivant en tant que 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]
Exécutez le playbook en utilisant ansible-playbook
ansible-playbook route_table_facts.yml
Supprimer une table de routage
Le code du playbook de cette section supprime une table de routage.
Lorsqu’une table de routage est supprimée, tous ses itinéraires le sont également.
Il n’est pas possible de supprimer une table de routage associée à un sous-réseau. Dissociez la table de routage de tous les sous-réseaux avant de tenter de la supprimer.
Enregistrez le playbook suivant en tant que 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
Exécutez le playbook en utilisant ansible-playbook
ansible-playbook route_table_delete.yml