Aracılığıyla paylaş


Öğretici: Ansible kullanarak Azure rota tablolarını yapılandırma

Önemli

Bu makaledeki örnek playbook'ları çalıştırmak için Ansible 2.8 (veya üzeri) gereklidir.

Azure, Azure alt ağları, sanal ağlar ve şirket içi ağlar arasındaki trafiği otomatik olarak yönlendirir. Ortamınızın yönlendirmesi üzerinde daha fazla denetime ihtiyacınız varsa bir yol tablosu oluşturabilirsiniz.

Bu makalede şunları öğreneceksiniz:

Yönlendirme tablosu oluşturma Sanal ağ ve alt ağ oluşturma Yönlendirme tablosunu alt ağ ile ilişkilendirme Alt ağdan yönlendirme tablosunun bağlantısını kesme Yollar oluşturma ve silme Yönlendirme tablosunu sorgulama Yönlendirme tablosunu silme

Önkoşullar

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Yönlendirme tablosu oluşturma

Bu bölümdeki playbook kodu bir yol tablosu oluşturur. Rota tablosu sınırları hakkında bilgi için bkz. Azure sınırları.

Aşağıdaki playbook'u route_table_create.yml olarak kaydedin.

- 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 kullanarak playbook'u çalıştırın

ansible-playbook route_table_create.yml

Yönlendirme tablosunu bir alt ağ ile ilişkilendirme

Bu bölümdeki playbook (oyun kitabı) kodu:

  • Sanal ağ oluşturur
  • Sanal ağ içinde bir alt ağ oluşturur
  • Bir yol tablosunu alt ağ ile ilişkilendirir

Yol tabloları sanal ağlarla ilişkili değildir. Bunun yerine, yönlendirme tabloları bir sanal ağın alt ağıyla ilişkilendirilir.

Sanal ağ ve yönlendirme tablosunun aynı Azure konumunda ve aboneliğinde birlikte bulunması gerekir.

Alt ağlarla yönlendirme tablolarının bire birden çok ilişkisi vardır. Bir alt ağ, bir yol tablosu olmadan veya ilişkili bir yol tablosu ile tanımlanabilir. Yol tabloları hiçbiri, bir veya birden çok alt ağ ile ilişkilendirilebilir.

Alt ağdan gelen trafik aşağıdakilere göre yönlendirilir:

  • yol tabloları içinde tanımlanan yollar
  • varsayılan yollar
  • şirket içi ağdan yayılan yönlendirmeler

Sanal ağın bir Azure sanal ağ geçidine bağlı olması gerekir. Ağ geçidi, ExpressRoute veya bir VPN ağ geçidi ile BGP kullanılıyorsa VPN olabilir.

Aşağıdaki playbook'u route_table_associate.yml olarak kaydedin.

- 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 kullanarak playbook'u çalıştırın

ansible-playbook route_table_associate.yml

Bir alt ağdan bir yol tablosunun ilişiğini kes

Bu bölümdeki playbook kodu, bir alt ağdan bir yol tablosunu ayırır.

Bir yönlendirme tablosunu bir alt ağdan ayırırken, alt ağın rota tablosunu route_table olarak None ayarlayın.

Aşağıdaki playbook'u route_table_dissociate.yml olarak kaydedin.

- 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 kullanarak playbook'u çalıştırın

ansible-playbook route_table_dissociate.yml

Yönlendirme oluşturma

Bu bölümdeki playbook kodu, yol tablosu içindeki bir yoldur.

Aşağıdaki playbook'u route_create.yml olarak kaydedin.

- 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:

  • virtual_network_gateway olarak next_hop_typetanımlanır. Azure'ın yolları nasıl seçtiği hakkında daha fazla bilgi için bkz . Yönlendirmeye genel bakış.
  • address_prefix olarak 10.1.0.0/16tanımlanır. Ön ek, yönlendirme tablosu içinde çoğaltılamaz.

Ansible-playbook kullanarak playbook'u çalıştırın

ansible-playbook route_create.yml

Yol silme

Bu bölümdeki playbook kodu, yol tablosundan bir yolu siler.

Aşağıdaki playbook'u route_delete.yml olarak kaydedin.

- 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 kullanarak playbook'u çalıştırın

ansible-playbook route_delete.yml

Rota tablosu bilgilerini alma

Bu bölümdeki playbook kodu, rota tablosu bilgilerini almak için Ansible modülünü azure_rm_routetable_facts kullanır.

Aşağıdaki playbook'u route_table_facts.yml olarak kaydedin.

- 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 kullanarak playbook'u çalıştırın

ansible-playbook route_table_facts.yml

Yol tablosunu silme

Bu bölümdeki playbook kodu bir yol tablosunu içerir.

Bir yol tablosu silindiğinde, tüm yolları da silinir.

Bir alt ağ ile ilişkilendirilmiş yol tablosu silinemez. Yönlendirme tablosunu herhangi bir alt ağdan ayırmadan önce yol tablosunu silmeye çalışmayın.

Aşağıdaki playbook'u route_table_delete.yml olarak kaydedin.

- 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 kullanarak playbook'u çalıştırın

ansible-playbook route_table_delete.yml

Sonraki Adımlar