Partager via


Tutoriel : Configurer le peering de réseaux virtuels 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.

Le peering de réseaux virtuels (VNet) vous permet de connecter facilement deux réseaux virtuels Azure. Une fois interconnectés, les deux réseaux virtuels apparaissent comme un seul réseau à des fins de connectivité.

Le trafic est acheminé entre les machines virtuelles du même réseau virtuel via des adresses IP privées. De même, le trafic entre les machines virtuelles d’un réseau virtuel appairé est acheminé via l’infrastructure de réseau principal de Microsoft. Par conséquent, les machines virtuelles dans différents réseaux virtuels peuvent communiquer entre elles.

Dans cet article, vous allez apprendre à :

  • Créer deux réseaux virtuels
  • Appairer les deux réseaux virtuels
  • Supprimer le peering entre les deux réseaux

Prerequisites

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

Créer deux groupes de ressources

Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.

Le code d'exemple du playbook présenté dans cette section est utilisé pour :

  • Créer deux groupes de ressources
  - name: Create a resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group }}"
      location: "{{ location }}"
  - name: Create secondary resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group_secondary }}"
      location: "{{ location }}"

Créer le premier réseau virtuel

Le code d'exemple du playbook présenté dans cette section est utilisé pour :

  • Créer un réseau virtuel
  • Créer un sous-réseau dans le réseau virtuel
  - name: Create first virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefixes: "10.0.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefix: "10.0.0.0/24"
      virtual_network: "{{ vnet_name1 }}"

Créer le deuxième réseau virtuel

Le code d'exemple du playbook présenté dans cette section est utilisé pour :

  • Créer un réseau virtuel
  • Créer un sous-réseau dans le réseau virtuel
  - name: Create second virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ vnet_name2 }}"
      address_prefixes: "10.1.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name2 }}"
      address_prefix: "10.1.0.0/24"
      virtual_network: "{{ vnet_name2 }}"

Mettre en peering les deux réseaux virtuels

Le code d'exemple du playbook présenté dans cette section est utilisé pour :

  • Configurer le peering pour les réseaux virtuels
  • Interconnecter deux réseaux virtuels créés précédemment
  - name: Initial vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group_secondary }}"
        name: "{{ vnet_name2 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

  - name: Connect vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name2 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group }}"
        name: "{{ vnet_name1 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

Supprimer le jumelage de réseaux virtuels

Le code d'exemple du playbook présenté dans cette section est utilisé pour :

  • Supprimer le peering entre les deux réseaux virtuels créés précédemment
  - name: Delete vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      state: absent

Obtenir l’exemple de manuel

Il existe deux façons d’obtenir le playbook complet d'exemple :

- hosts: localhost
  tasks:
    - name: Prepare random postfix
      set_fact:
        rpfx: "{{ 1000 | random }}"
      run_once: yes

- name: Connect virtual networks with virtual network peering
  hosts: localhost
  connection: local
  vars:
    resource_group: "{{ resource_group_name }}"
    resource_group_secondary: "{{ resource_group_name }}2"
    vnet_name1: "myVnet{{ rpfx }}"
    vnet_name2: "myVnet{{ rpfx }}2"
    peering_name: peer1
    location: eastus2
  tasks:
  - name: Create a resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group }}"
      location: "{{ location }}"
  - name: Create secondary resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group_secondary }}"
      location: "{{ location }}"
  - name: Create first virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefixes: "10.0.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefix: "10.0.0.0/24"
      virtual_network: "{{ vnet_name1 }}"
  - name: Create second virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ vnet_name2 }}"
      address_prefixes: "10.1.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name2 }}"
      address_prefix: "10.1.0.0/24"
      virtual_network: "{{ vnet_name2 }}"
  - name: Initial vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group_secondary }}"
        name: "{{ vnet_name2 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

  - name: Connect vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name2 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group }}"
        name: "{{ vnet_name1 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

  - name: Delete vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      state: absent

Exécuter le playbook d'exemple

L’exemple de code du playbook de cette section est utilisé pour tester différentes fonctionnalités présentées dans ce tutoriel.

Voici quelques notes clés à prendre en compte lors de l'utilisation de l'exemple de livre de jeu :

  • Dans la vars section, remplacez l’espace {{ resource_group_name }} réservé par le nom de votre groupe de ressources.

Exécutez le playbook à l’aide de la commande ansible-playbook :

ansible-playbook vnet_peering.yml

Après avoir exécuté le playbook, vous voyez une sortie similaire aux résultats suivants :

PLAY [localhost] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Prepare random postfix] 
ok: [localhost]

PLAY [Connect virtual networks with virtual network peering] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Create a resource group] 
changed: [localhost]

TASK [Create secondary resource group] 
changed: [localhost]

TASK [Create first virtual network] 
changed: [localhost]

TASK [Add subnet] 
changed: [localhost]

TASK [Create second virtual network] 
changed: [localhost]

TASK [Add subnet] 
changed: [localhost]

TASK [Initial vnet peering] 
changed: [localhost]

TASK [Connect vnet peering] 
changed: [localhost]

TASK [Delete vnet peering] 
changed: [localhost]

PLAY RECAP 
localhost                  : ok=12   changed=9    unreachable=0    failed=0    skipped=0   rescued=0    ignored=0

Nettoyer les ressources

Quand vous n’en avez plus besoin, supprimez les ressources créées dans cet article.

Le code d'exemple du playbook présenté dans cette section est utilisé pour :

  • Supprimer les deux groupes de ressources créés précédemment

Enregistrez le playbook suivant en tant que cleanup.yml.

- hosts: localhost	
  vars:	
    resource_group: "{{ resource_group_name-1 }}"	
    resource_group_secondary: "{{ resource_group_name-2 }}"	
  tasks:	
    - name: Delete a resource group	
      azure_rm_resourcegroup:	
        name: "{{ resource_group }}"	
        force_delete_nonempty: yes	
        state: absent	
    - name: Delete a resource group	
      azure_rm_resourcegroup:	
        name: "{{ resource_group_secondary }}"	
        force_delete_nonempty: yes	
        state: absent	

Voici quelques notes clés à prendre en compte lors de l'utilisation de l'exemple de livre de jeu :

  • Remplacez l’espace {{ resource_group_name-1 }} réservé par le nom du premier groupe de ressources créé.
  • Remplacez l’espace {{ resource_group_name-2 }} réservé par le nom du deuxième groupe de ressources créé.
  • Toutes les ressources au sein des deux groupes de ressources spécifiés sont supprimées.

Exécutez le playbook à l’aide de la commande ansible-playbook :

ansible-playbook cleanup.yml	

Étapes suivantes