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.

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 jako next_hop_type. Aby uzyskać więcej informacji na temat wybierania tras przez platformę Azure, zobacz Omówienie routingu.
  • address_prefix parametr jest zdefiniowany jako 10.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

Następne kroki