Partager via


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’un contrôle supplémentaire sur le routage de votre environnement, vous pouvez créer une table de routage.

Dans cet article, vous allez apprendre à :

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 à partir d’un sous-réseau Créer et supprimer des itinéraires Interroger une table de routage Supprimer une table de routage

Prerequisites

  • Abonnement Azure : si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

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 de table de routage, consultez les limites d’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écuter le playbook avec Ansible-playbook

ansible-playbook route_table_create.yml

Associer une table de routage à un sous-réseau

Code du playbook dans 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, Au lieu de cela, les tables de routage sont associées au sous-réseau d’un réseau virtuel.

Le réseau virtuel et la table de routage doivent coexister dans le même emplacement et abonnement Azure.

Les sous-réseaux et les tables de routage ont une relation un-à-plusieurs. Un sous-réseau peut être défini sans table de routage associée ou avec une table de routage. Les tables de routage peuvent être associées à aucun, un ou plusieurs sous-réseaux.

Le trafic à partir du sous-réseau est routé en fonction des points suivants :

  • routes définies dans les tables de routage
  • itinéraires par défaut
  • itinéraires propagés à partir d’un réseau local

Le réseau virtuel doit être connecté à une passerelle de réseau virtuel Azure. La passerelle peut être ExpressRoute ou 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écuter le playbook avec 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.

Lors de la dissociation d’une table de routage d’un sous-réseau, définissez le route_table pour le sous-réseau à 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écuter le playbook avec Ansible-playbook

ansible-playbook route_table_dissociate.yml

Créer un itinéraire

Le code du playbook dans cette section définit un itinéraire au sein d'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 manuel, lisez les notes suivantes :

  • virtual_network_gateway est défini en tant que next_hop_type. Pour plus d’informations sur la façon dont Azure sélectionne des itinéraires, consultez vue d’ensemble du routage.
  • address_prefix est défini en tant que 10.1.0.0/16. Le préfixe ne peut pas être dupliqué dans la table de routage.

Exécuter le playbook avec 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écuter le playbook avec Ansible-playbook

ansible-playbook route_delete.yml

Obtenir des informations sur la table de routage

Le code du playbook de cette section utilise le module azure_rm_routetable_facts Ansible pour récupérer les informations de table de routage.

Enregistrez le playbook suivant sous 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écuter le playbook à l’aide de ansible-playbook

ansible-playbook route_table_facts.yml

Supprimer une table de routage

Le code du playbook dans cette section est une table de routage.

Lorsqu’une table de routage est supprimée, toutes ses routes sont également supprimées.

Une table de routage ne peut pas être supprimée si elle est associée à un sous-réseau. Dissociez la table de routage des sous-réseaux avant de tenter de supprimer la table de routage.

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écuter le playbook à l’aide de ansible-playbook

ansible-playbook route_table_delete.yml

Étapes suivantes