Tutorial: Configuración del emparejamiento de redes virtuales de Azure con AnsibleTutorial: Configure Azure virtual network peering using Ansible

Importante

Para ejecutar los cuadernos de estrategias de ejemplo de este tutorial, se requiere Ansible 2.8 (o cualquier versión posterior).Ansible 2.8 (or later) is required to run the sample playbooks in this article.

El emparejamiento de redes virtuales permite conectar sin problemas dos redes virtuales de Azure.Virtual network (VNet) peering allows you to seamlessly connect two Azure virtual networks. Una vez emparejadas, las dos redes virtuales aparecen como una sola a efectos de conectividad.Once peered, the two virtual networks appear as one for connectivity purposes.

El tráfico entre máquinas virtuales de la misma red virtual se enruta mediante direcciones IP privadas.Traffic is routed between VMs in the same virtual network through private IP addresses. De forma similar, el tráfico entre máquinas virtuales de una red virtual emparejada se enruta mediante la infraestructura de red troncal de Microsoft.Similarly, traffic between VMs in a peered virtual network is routed through the Microsoft backbone infrastructure. Como resultado, las máquinas virtuales de diferentes redes virtuales pueden comunicarse entre sí.As a result, VMs in different virtual networks can communicate with each other.

En este tutorial, se usa Ansible para:In this tutorial, Ansible is used to:

  • Crear dos redes virtualesCreate two virtual networks
  • Emparejar las dos redes virtuales.Peer the two virtual networks
  • Eliminación del emparejamiento entre las dos redesDelete the peering between the two networks

Requisitos previosPrerequisites

  • Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Crear dos grupos de recursos.Create two resource groups

Un grupo de recursos es un contenedor lógico en el que se implementan y se administran los recursos de Azure.A resource group is a logical container in which Azure resources are deployed and managed.

El código del cuaderno de estrategias de ejemplo de esta sección se utiliza para lo siguiente:The sample playbook code in this section is used to:

  • Crear dos grupos de recursos.Create two resource groups
  - 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 }}"

Crear la primera red virtual.Create the first virtual network

El código del cuaderno de estrategias de ejemplo de esta sección se utiliza para lo siguiente:The sample playbook code in this section is used to:

  • Creación de una red virtualCreate a virtual network
  • Crear una subred dentro de la red virtual.Create a subnet within the virtual network
  - 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 }}"

Crear la segunda red virtual.Create the second virtual network

El código del cuaderno de estrategias de ejemplo de esta sección se utiliza para lo siguiente:The sample playbook code in this section is used to:

  • Creación de una red virtualCreate a virtual network
  • Crear una subred dentro de la red virtual.Create a subnet within the virtual network
  - name: Ceate 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 }}"

Emparejar las dos redes virtuales.Peer the two virtual networks

El código del cuaderno de estrategias de ejemplo de esta sección se utiliza para lo siguiente:The sample playbook code in this section is used to:

  • Inicializar el emparejamiento de las redes virtuales.Initialize virtual-network peering
  • Emparejar las dos redes virtuales creadas previamente.Peer two previously created virtual networks
  - 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

Eliminar el emparejamiento de las redes virtuales.Delete the virtual network peering

El código del cuaderno de estrategias de ejemplo de esta sección se utiliza para lo siguiente:The sample playbook code in this section is used to:

  • Eliminar el emparejamiento entre las dos redes virtuales creadas previamente.Delete the peering between the two previously created virtual networks
  - name: Delete vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      state: absent

Obtención del cuaderno de estrategias de ejemploGet the sample playbook

Hay dos formas de obtener el cuaderno de estrategias de ejemplo completo:There are two ways to get the complete sample playbook:

  • Descargar el cuaderno de estrategias y guardarlo en vnet_peering.yml.Download the playbook and save it to vnet_peering.yml.
  • Crear un archivo llamado vnet_peering.yml y copiar en él el siguiente contenido:Create a new file named vnet_peering.yml and copy into it the following contents:
- 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: Ceate 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

Ejecución del cuaderno de estrategias de ejemploRun the sample playbook

El código del cuaderno de estrategias de ejemplo de esta sección se usa para probar varias características que se muestran a lo largo de este tutorial.The sample playbook code in this section is used to test various features shown throughout this tutorial.

Estas son algunas notas importantes que hay que tener en cuenta al trabajar con el cuaderno de estrategias de ejemplo:Here are some key notes to consider when working with the sample playbook:

  • En la sección vars, reemplace el marcador de posición {{ resource_group_name }} por el nombre del grupo de recursos.In the vars section, replace the {{ resource_group_name }} placeholder with the name of your resource group.

Para ejecutar el cuaderno de estrategias, use el comando ansible-playbook:Run the playbook using the ansible-playbook command:

ansible-playbook vnet_peering.yml

Tras ejecutar el cuaderno de estrategias, debería ver resultados similares a los siguientes:After running the playbook, you see output similar to the following results:

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 [Ceate 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

Limpieza de recursosClean up resources

Cuando ya no los necesite, elimine los recursos creados en este artículo.When no longer needed, delete the resources created in this article.

El código del cuaderno de estrategias de ejemplo de esta sección se utiliza para lo siguiente:The sample playbook code in this section is used to:

  • Eliminar los dos grupos de recursos creados anteriormente.Delete the two resources groups created earlier

Guarde el siguiente cuaderno de estrategias como cleanup.yml:Save the following playbook as 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

Estas son algunas notas importantes que hay que tener en cuenta al trabajar con el cuaderno de estrategias de ejemplo:Here are some key notes to consider when working with the sample playbook:

  • Reemplace el marcador de posición {{ resource_group_name-1 }} por el nombre del primer grupo de recursos que se creó.Replace the {{ resource_group_name-1 }} placeholder with the name of the first resource group created.
  • Reemplace el marcador de posición {{ resource_group_name-2 }} por el nombre del segundo grupo de recursos que se creó.Replace the {{ resource_group_name-2 }} placeholder with the name of the second resource group created.
  • Se eliminarán todos los recursos de los dos grupos de recursos especificados.All resources within the two specified resource groups will be deleted.

Para ejecutar el cuaderno de estrategias, use el comando ansible-playbook:Run the playbook using the ansible-playbook command:

ansible-playbook cleanup.yml

Pasos siguientesNext steps