Öğ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 Yönlendirme tablosunu alt ağdan ilişkilendirme Yollar oluşturma ve silme Rota tablosunu sorgulama Rota tablosunu silme
Önkoşullar
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Ansible'ı Yükleme: Aşağıdaki seçeneklerden birini yapın:
- Ansible'ı Linux sanal makinesine yükleme ve yapılandırma
- Azure Cloud Shell'i yapılandırın ve Linux sanal makinesine erişiminiz yoksa Ansible ile bir sanal makine 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ırma
ansible-playbook route_table_create.yml
Yönlendirme tablosunu bir alt ağ ile ilişkilendirme
Bu bölümdeki playbook 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 yol tablolarının bire çok ilişkisi vardır. Bir alt ağ ilişkili yol tablosu veya bir yol tablosu olmadan 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 yollar
Sanal ağın bir Azure sanal ağ geçidine bağlı olması gerekir. Ağ geçidi ExpressRoute veya 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ırma
ansible-playbook route_table_associate.yml
Bir alt ağdan yol tablosunu ilişkilendirme
Bu bölümdeki playbook kodu, bir alt ağdan bir yol tablosunu ayırır.
Bir yönlendirme tablosunu alt ağdan ayırırken alt ağ için değerini olarak None
ayarlayınroute_table
.
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ırma
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
olaraknext_hop_type
tanımlanır. Azure'ın yolları nasıl seçtiği hakkında daha fazla bilgi için bkz . Yönlendirmeye genel bakış.address_prefix
olarak10.1.0.0/16
tanımlanır. Ön ek, yol tablosu içinde çoğaltılamaz.
Ansible-playbook kullanarak playbook'u çalıştırma
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ırma
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ırma
ansible-playbook route_table_facts.yml
Yol tablosunu silme
Bu bölümdeki playbook kodu bir yol tablosudur.
Bir yol tablosu silindiğinde, tüm yolları da silinir.
Bir alt ağ ile ilişkilendirilmiş yol tablosu silinemez. Yol tablosunu silmeye çalışmadan önce yönlendirme tablosunu herhangi bir alt ağ ile ilişkilendirin.
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ırma
ansible-playbook route_table_delete.yml