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 permet de connecter deux réseaux virtuels Azure de sorte qu’ils apparaissent comme un seul réseau du point de vue de la connectivité.
Le trafic est acheminé entre les machines virtuelles d’un même réseau virtuel au moyen d’adresses IP privées. De même, le trafic entre les machines virtuelles d’un réseau virtuel avec peering est acheminé par le biais de l’infrastructure principale de Microsoft. Les machines virtuelles de différents réseaux virtuels peuvent ainsi communiquer les unes avec les autres.
Dans cet article, vous apprendrez comment :
- Créer deux réseaux virtuels
- Interconnecter les deux réseaux virtuels
- Supprimer le peering entre les deux réseaux
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 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.
L’exemple de code de playbook 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
L’exemple de code de playbook dans cette section est utilisé pour :
- Créez un réseau virtuel
- créer un sous-réseau au sein du 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
L’exemple de code de playbook dans cette section est utilisé pour :
- Créez un réseau virtuel
- créer un sous-réseau au sein du 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 }}"
Interconnecter les deux réseaux virtuels
L’exemple de code de playbook dans cette section est utilisé pour :
- Initialiser le peering de réseaux virtuels
- Interconnecter les deux réseaux virtuels créés
- 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 peering de réseaux virtuels
L’exemple de code de playbook dans cette section est utilisé pour :
- Supprimer le peering entre les deux réseaux virtuels créés
- name: Delete vnet peering
azure_rm_virtualnetworkpeering:
resource_group: "{{ resource_group }}"
name: "{{ peering_name }}"
virtual_network: "{{ vnet_name1 }}"
state: absent
Obtenir l’exemple de playbook
Il existe deux façons d’obtenir l’exemple de playbook complet :
- Téléchargez le manifeste et enregistrez-le sous
vnet_peering.yml
. - Créez un fichier nommé
vnet_peering.yml
et copiez-y le contenu suivant :
- 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écutez l’exemple de playbook
L’exemple de code de playbook dans cette section est utilisé pour tester les différentes fonctionnalités présentées dans ce tutoriel.
Voici quelques remarques importantes à prendre en compte lorsque vous travaillez avec l’exemple de playbook :
- Dans la section
vars
, remplacez l’espace réservé{{ resource_group_name }}
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
Lorsque vous n’en avez plus besoin, supprimez les ressources créées dans cet article.
L’exemple de code de playbook dans cette section est utilisé pour :
- Supprimer les deux groupes de ressources créés
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 remarques importantes à prendre en compte lorsque vous travaillez avec l’exemple de playbook :
- Remplacez l’espace réservé
{{ resource_group_name-1 }}
par le nom du premier groupe de ressources créé. - Remplacez l’espace réservé
{{ resource_group_name-2 }}
par le nom du deuxième groupe de ressources créé. - Toutes les ressources 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