Öğretici: Azure yol tablolarını anormal kullanarak yapılandırmaTutorial: Configure Azure route tables using Ansible

Önemli

Ansible 2.8 (veya üzeri), bu makaledeki örnek playbook'ları çalıştırmak için gereklidir.Ansible 2.8 (or later) is required to run the sample playbooks in this article.

Azure, Azure alt ağları, sanal ağlar ve şirket içi ağlar arasındaki trafiği otomatik olarak yönlendirir.Azure automatically routes traffic between Azure subnets, virtual networks, and on-premises networks. Ortamınızın yönlendirmesi üzerinde daha fazla denetime ihtiyacınız varsa, bir rota tablosuoluşturabilirsiniz.If you need more control over your environment's routing, you can create a route table.

Bu öğreticide, Ansible için kullanılır:In this tutorial, Ansible is used to:

Yol tablosu oluşturma bir sanal ağ ve alt ağ oluşturma bir yönlendirme tablosunu alt ağ ile Ilişkilendirme rota tablosunun alt ağ ile Ilişkisini kaldırma rotalar oluşturma ve silme rota tablosunu sorgulama rota tablosunu silmeCreate a route table Create a virtual network and subnet Associate a route table with a subnet Disassociate a route table from a subnet Create and delete routes Query a route table Delete a route table

ÖnkoşullarPrerequisites

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Yönlendirme tablosu oluşturmaCreate a route table

Bu bölümdeki PlayBook kodu bir yol tablosu oluşturur.The playbook code in this section creates a route table. Rota tablosu limitleri hakkında daha fazla bilgi için bkz. Azure Limitleri.For information on route-table limits, see Azure limits.

Aşağıdaki playbook'u route_table_create.yml olarak kaydedin:Save the following playbook as 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 }}"

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook route_table_create.yml

Yönlendirme tablosunu bir alt ağ ile ilişkilendirmeAssociate a route table to a subnet

Bu bölümdeki PlayBook kodu:The playbook code in this section:

  • Bir sanal ağ oluştururCreates a virtual network
  • Sanal ağ içinde bir alt ağ oluştururCreates a subnet within the virtual network
  • Bir yol tablosunu alt ağla ilişkilendirirAssociates a route table to the subnet

Yol tabloları, sanal ağlarla ilişkili değildir.Route tables aren't associated to virtual networks. Bunun yerine, rota tabloları bir sanal ağın alt ağıyla ilişkilendirilir.Rather, route tables are associated with the subnet of a virtual network.

Sanal ağ ve yol tablosu aynı Azure konumunda ve abonelikte birlikte bulunmalıdır.The virtual network and route table must coexist in the same Azure location and subscription.

Alt ağlar ve rota tablolarının bire çok ilişkisi vardır.Subnets and route tables have a one-to-many relationship. Bir alt ağ, ilişkili yol tablosu veya bir yol tablosu olmadan tanımlanabilir.A subnet can be defined with no associated route table or one route table. Yol tabloları None, One veya çok alt ağlarla ilişkilendirilebilir.Route tables can be associated with none, one, or many subnets.

Alt ağdan gelen trafik şu temel alınarak yönlendirilir:Traffic from the subnet is routed based on:

  • rota tablolarında tanımlanan rotalarroutes defined within route tables
  • Varsayılan yollardefault routes
  • Şirket içi ağdan yayılan yollarroutes propagated from an on-premises network

Sanal ağın bir Azure sanal ağ geçidine bağlı olması gerekir.The virtual network must be connected to an Azure virtual network gateway. Ağ Geçidi, bir VPN ağ geçidiyle BGP kullanılıyorsa ExpressRoute veya VPN olabilir.The gateway can be ExpressRoute, or VPN if using BGP with a VPN gateway.

Aşağıdaki playbook'u route_table_associate.yml olarak kaydedin:Save the following playbook as 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 }"

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook route_table_associate.yml

Bir alt ağdan yol tablosunun ilişkilendirmesini kaldırmaDissociate a route table from a subnet

Bu bölümdeki PlayBook kodu bir alt ağdan yol tablosunun ilişkisini kaldırmaktadır.The playbook code in this section dissociates a route table from a subnet.

Bir alt ağdan yol tablosunu ilişkilendirme sırasında, alt ağın route_table Noneolarak ayarlayın.When dissociating a route table from a subnet, set the route_table for the subnet to None.

Aşağıdaki playbook'u route_table_dissociate.yml olarak kaydedin:Save the following playbook as 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"

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook route_table_dissociate.yml

Yönlendirme oluşturmaCreate a route

Bu bölümdeki PlayBook kodu, yol tablosundaki bir yoldur.The playbook code in this section a route within a route table.

Aşağıdaki playbook'u route_create.yml olarak kaydedin:Save the following playbook as 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 }}"

PlayBook 'u çalıştırmadan önce aşağıdaki notlara bakın:Before running the playbook, see the following notes:

  • virtual_network_gateway next_hop_typeolarak tanımlanmıştır.virtual_network_gateway is defined as next_hop_type. Azure 'un yönlendirmeleri nasıl seçtiği hakkında daha fazla bilgi için bkz. yönlendirmeye genel bakış.For more information about how Azure selects routes, see Routing overview.
  • address_prefix 10.1.0.0/16olarak tanımlanmıştır.address_prefix is defined as 10.1.0.0/16. Ön ek, yol tablosu içinde çoğaltılamaz.The prefix can't be duplicated within the route table.

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook route_create.yml

Bir yolu silmeDelete a route

Bu bölümdeki PlayBook kodu bir rota tablosundan bir yol siler.The playbook code in this section deletes a route from a route table.

Aşağıdaki playbook'u route_delete.yml olarak kaydedin:Save the following playbook as 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

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook route_delete.yml

Rota tablosu bilgilerini alGet route table information

Bu bölümdeki PlayBook kodu, yol tablosu bilgilerini almak için azure_rm_routetable_facts anormal modül kullanır.The playbook code in this section uses the Ansible module azure_rm_routetable_facts to retrieve route table information.

Aşağıdaki playbook'u route_table_facts.yml olarak kaydedin:Save the following playbook as 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]

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook route_table_facts.yml

Yol tablosunu silmeDelete a route table

Bu bölümdeki PlayBook kodu bir yol tablosudur.The playbook code in this section a route table.

Bir yol tablosu silindiğinde, tüm rotaları de silinir.When a route table is deleted, all of its routes are also deleted.

Bir alt ağ ile ilişkili ise yol tablosu silinemez.A route table can't be deleted if it's associated with a subnet. Yol tablosunu silmeyi denemeden önce herhangi bir alt ağdan yol tablosunun ilişkilendirmesini kaldırın.Dissociate the route table from any subnets before attempting to delete the route table.

Aşağıdaki playbook'u route_table_delete.yml olarak kaydedin:Save the following playbook as 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

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook route_table_delete.yml

Sonraki adımlarNext steps