Samouczek: konfigurowanie tabel tras platformy Azure przy użyciu rozwiązania Ansible
Ważne
Rozwiązanie Ansible w wersji 2.8 (lub nowszej) jest wymagane do uruchomienia przykładowych podręczników w tym artykule.
Platforma Azure automatycznie kieruje ruchem między podsieciami platformy Azure, sieciami wirtualnymi i sieciami lokalnymi. Jeśli potrzebujesz większej kontroli nad routingiem środowiska, możesz utworzyć tabelę tras.
W tym artykule omówiono sposób wykonywania następujących zadań:
Tworzenie tabeli tras Tworzenie sieci wirtualnej i podsieci Kojarzenie tabeli tras z podsiecią Usuń skojarzenie tabeli tras z podsieci Tworzenie i usuwanie tras Kwerenda tabeli tras Usuń tabelę tras
Wymagania wstępne
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Zainstaluj oprogramowanie Ansible: Wykonaj jedną z następujących opcji:
- Instalowanie i konfigurowanie rozwiązania Ansible na maszynie wirtualnej z systemem Linux
- Skonfiguruj usługę Azure Cloud Shell i — jeśli nie masz dostępu do maszyny wirtualnej z systemem Linux — utwórz maszynę wirtualną za pomocą rozwiązania Ansible.
Tworzenie tabeli tras
Kod podręcznika w tej sekcji tworzy tabelę tras. Aby uzyskać informacje na temat limitów tabeli tras, zobacz Limity platformy Azure.
Zapisz następujący podręcznik 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 }}"
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook route_table_create.yml
Kojarzenie tabeli tras z podsiecią
Kod podręcznika w tej sekcji:
- Tworzy sieć wirtualną
- Tworzy podsieć w sieci wirtualnej
- Kojarzy tabelę tras z podsiecią
Tabele tras nie są skojarzone z sieciami wirtualnymi. Zamiast tego tabele tras są skojarzone z podsiecią sieci wirtualnej.
Sieć wirtualna i tabela tras muszą współistnieć w tej samej lokalizacji i subskrypcji platformy Azure.
Podsieci i tabele tras mają relację jeden do wielu. Podsieć można zdefiniować bez skojarzonej tabeli tras ani jednej tabeli tras. Tabele tras mogą być skojarzone z żadną, jedną lub wieloma podsieciami.
Ruch z podsieci jest kierowany na podstawie:
- trasy zdefiniowane w tabelach tras
- trasy domyślne
- trasy propagowane z sieci lokalnej
Sieć wirtualna musi być połączona z bramą sieci wirtualnej platformy Azure. Bramą może być usługa ExpressRoute lub sieć VPN, jeśli używasz protokołu BGP z bramą sieci VPN.
Zapisz następujący podręcznik 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 }}"
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook route_table_associate.yml
Usuwanie skojarzenia tabeli tras z podsiecią
Kod podręcznika w tej sekcji oddziela tabelę tras z podsieci.
Podczas kojarzenia tabeli tras z podsieci ustaw dla route_table
podsieci wartość None
.
Zapisz następujący podręcznik 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"
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook route_table_dissociate.yml
Tworzenie trasy
Kod podręcznika w tej sekcji trasy w tabeli tras.
Zapisz następujący podręcznik 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 }}"
Przed uruchomieniem podręcznika zapoznaj się z następującymi uwagami:
virtual_network_gateway
parametr jest zdefiniowany jakonext_hop_type
. Aby uzyskać więcej informacji na temat wybierania tras przez platformę Azure, zobacz Omówienie routingu.address_prefix
parametr jest zdefiniowany jako10.1.0.0/16
. Prefiks nie może być zduplikowany w tabeli tras.
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook route_create.yml
Usuwanie trasy
Kod podręcznika w tej sekcji usuwa trasę z tabeli tras.
Zapisz następujący podręcznik 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
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook route_delete.yml
Pobieranie informacji o tabeli tras
Kod podręcznika w tej sekcji używa modułu azure_rm_routetable_facts
Ansible do pobierania informacji o tabeli tras.
Zapisz następujący podręcznik 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]
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook route_table_facts.yml
Usuwanie tabeli tras
Kod podręcznika w tej sekcji tabela tras.
Po usunięciu tabeli tras wszystkie jej trasy również zostaną usunięte.
Nie można usunąć tabeli tras, jeśli jest skojarzona z podsiecią. Usuń skojarzenie tabeli tras z dowolnej podsieci przed podjęciem próby usunięcia tabeli tras.
Zapisz następujący podręcznik 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
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook route_table_delete.yml