Tutorial: Configuración de tablas de rutas de Azure mediante Ansible
Importante
Para ejecutar los cuadernos de estrategias de ejemplo de este tutorial, se requiere Ansible 2.8 (o cualquier versión posterior).
Azure enruta automáticamente el tráfico entre redes locales, las redes virtuales y las subredes de Azure. Si necesita más control sobre el enrutamiento de su entorno, puede crear una tabla de rutas.
En este artículo aprenderá a:
Creación de una tabla de rutas Creación de una red virtual y una subred Asociación de una tabla de rutas con una subred Desasociación de una tabla de rutas de una subred Creación y eliminación de rutas Consulta de una tabla de rutas Eliminación de una tabla de rutas
Requisitos previos
- Suscripción de Azure: si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Instalación de Ansible: realice una de las siguientes opciones:
- Instalar y configurar Ansible en una máquina virtual Linux
- Configurar Azure Cloud Shell y, si no tiene acceso a una máquina virtual Linux, crear una máquina virtual con Ansible.
Creación de una tabla de rutas
El código del cuaderno de estrategias de esta sección crea una tabla de rutas. Para más información sobre los límites de la tabla de rutas, consulte límites de Azure.
Guarde el siguiente cuaderno de estrategias como 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 }}"
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook route_table_create.yml
Asociación de una tabla de rutas a una subred
El código del cuaderno de estrategias de esta sección:
- Crea una red virtual
- Crea una subred dentro de la red virtual
- Asocia una tabla de rutas a la subred
Las tablas de rutas no se asocian a las redes virtuales. En su lugar, las tablas de rutas se asocian a la subred de una red virtual.
La red virtual y la tabla de rutas deben coexistir en la misma suscripción y ubicación de Azure.
Las subredes y las tablas de rutas tienen una relación de uno a varios. Se puede definir una subred sin ninguna tabla de rutas asociada o con una tabla de rutas. Las tablas de rutas se pueden asociar con una subred, con muchas o con ninguna.
El tráfico de la subred se enruta según:
- las rutas definidas dentro de las tablas de rutas
- las rutas predeterminadas
- las rutas propagadas desde una red local
La red virtual debe estar conectada a una puerta de enlace de red virtual de Azure. La puerta de enlace puede ser ExpressRoute, o VPN si se usa BGP con una puerta de enlace de VPN.
Guarde el siguiente cuaderno de estrategias como 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 }}"
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook route_table_associate.yml
Desasociación de una tabla de rutas de una subred
El código del cuaderno de estrategias de esta sección permite desasociar una tabla de rutas de una subred.
Al desasociar una tabla de rutas de una subred, establezca la route_table
de la subred en None
.
Guarde el siguiente cuaderno de estrategias como 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"
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook route_table_dissociate.yml
Creación de una ruta
El código del cuaderno de estrategias de esta sección crea una ruta en la tabla de rutas.
Guarde el siguiente cuaderno de estrategias como 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 }}"
Antes de ejecutar el cuaderno de estrategias, consulte las notas siguientes:
virtual_network_gateway
se define comonext_hop_type
. Para más información sobre cómo Azure selecciona las rutas, consulte Introducción al enrutamiento.address_prefix
se define como10.1.0.0/16
. No se puede duplicar el prefijo dentro de la tabla de rutas.
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook route_create.yml
Eliminación de una ruta
El código del cuaderno de estrategias de esta sección permite eliminar una ruta de una tabla de rutas.
Guarde el siguiente cuaderno de estrategias como 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
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook route_delete.yml
Obtención de información de la tabla de rutas
El código del cuaderno de estrategias de esta sección usa el módulo de Ansible azure_rm_routetable_facts
para recuperar la información de la tabla de rutas.
Guarde el siguiente cuaderno de estrategias como 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]
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook route_table_facts.yml
Eliminación de una tabla de rutas
El código del cuaderno de estrategias de esta sección elimina una tabla de rutas.
Cuando se elimina una tabla de rutas, se eliminan también todas sus rutas.
Una tabla de rutas no se puede eliminar si está asociada con una subred. Desasocie la tabla de rutas de todas las subredes antes de intentar eliminarla.
Guarde el siguiente cuaderno de estrategias como 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
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook route_table_delete.yml