Kurz: Konfigurace směrovacích tabulek Azure pomocí Ansible
Důležité
K spuštění ukázkových playbooků v tomto článku se vyžaduje Ansible 2.8 (nebo novější).
Azure automaticky směruje provoz mezi podsítěmi Azure, virtuálními sítěmi a místními sítěmi. Pokud potřebujete větší kontrolu nad směrováním vašeho prostředí, můžete vytvořit směrovací tabulku.
V tomto článku získáte informace o těchto tématech:
Vytvoření směrovací tabulky – Vytvoření virtuální sítě a podsítě – Přidružení směrovací tabulky k podsíti – Zrušení přidružení směrovací tabulky z podsítě – Vytvoření a odstranění tras – Dotaz na směrovací tabulku – Odstranění směrovací tabulky – Odstranění směrovací tabulky
Požadavky
- Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Nainstalujte Ansible: Proveďte jednu z následujících možností:
- Instalace a konfigurace Ansible na virtuálním počítači s Linuxem
- Nakonfigurujte Azure Cloud Shell a – pokud nemáte přístup k virtuálnímu počítači s Linuxem – vytvořte virtuální počítač pomocí Ansible.
Vytvoření směrovací tabulky
Kód playbooku v této části vytvoří směrovací tabulku. Informace o omezeních směrovacích tabulek najdete v tématu Limity Azure.
Uložte následující ukázkový playbook jako 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 }}"
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook route_table_create.yml
Přidružení směrovací tabulky k podsíti
Kód playbooku v této části:
- Vytvoří virtuální síť.
- Vytvoří podsíť v rámci virtuální sítě.
- Přidruží směrovací tabulku k podsíti.
Směrovací tabulky nejsou přidružené k virtuálním sítím. Směrovací tabulky jsou spíše přidružené k podsíti virtuální sítě.
Virtuální síť a směrovací tabulka musí existovat ve stejném umístění a předplatném Azure.
Podsítě a směrovací tabulky mají relaci 1:N. Podsíť lze definovat bez přidružené směrovací tabulky nebo jedné směrovací tabulky. Směrovací tabulky můžou být přidružené k žádné, jedné nebo mnoha podsítím.
Provoz z podsítě se směruje na základě:
- trasy definované v rámci směrovacích tabulek
- výchozí trasy
- trasy šířené z místní sítě
Virtuální síť musí být připojená k bráně virtuální sítě Azure. Brána může být ExpressRoute nebo VPN, pokud používáte protokol BGP s bránou VPN.
Uložte následující ukázkový playbook jako 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 }}"
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook route_table_associate.yml
Zrušení přidružení směrovací tabulky z podsítě
Kód playbooku v této části přidružuje směrovací tabulku z podsítě.
Při přidružení směrovací tabulky z podsítě nastavte route_table
pro podsíť None
hodnotu .
Uložte následující ukázkový playbook jako 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"
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook route_table_dissociate.yml
Vytvoření trasy
Kód playbooku v této části představuje trasu v rámci směrovací tabulky.
Uložte následující ukázkový playbook jako 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 }}"
Před spuštěním playbooku si přečtěte následující poznámky:
virtual_network_gateway
je definován jakonext_hop_type
. Další informace o tom, jak Azure vybírá trasy, najdete v přehledu směrování.address_prefix
je definován jako10.1.0.0/16
. Předponu nelze duplikovat v rámci směrovací tabulky.
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook route_create.yml
Odstranění trasy
Kód playbooku v této části odstraní trasu ze směrovací tabulky.
Uložte následující ukázkový playbook jako 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
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook route_delete.yml
Získání informací o směrovací tabulce
Kód playbooku v této části používá modul azure_rm_routetable_facts
Ansible k načtení informací o směrovací tabulce.
Uložte následující ukázkový playbook jako 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]
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook route_table_facts.yml
Odstranění směrovací tabulky
Kód playbooku v této části je směrovací tabulka.
Při odstranění směrovací tabulky se odstraní také všechny její trasy.
Směrovací tabulku nejde odstranit, pokud je přidružená k podsíti. Před pokusem o odstranění směrovací tabulky zrušte přidružení směrovací tabulky z libovolné podsítě .
Uložte následující ukázkový playbook jako 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
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook route_table_delete.yml