Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Bu makaledeki örnek playbook'ları çalıştırmak için Ansible 2.7 (veya üzeri) gereklidir.
Azure Application Gateway, web uygulamalarınıza trafiği yönetmenizi sağlayan bir web trafiği yük dengeleyicisidir. Geleneksel yük dengeleyiciler, kaynak IP adresine ve bağlantı noktasına göre trafiği bir hedef IP adresine ve bağlantı noktasına yönlendirir. Application Gateway, trafiğin URL'ye göre yönlendirilebileceği daha iyi bir denetim düzeyi sunar. Örneğin, URL'nin yoluysa images trafiğin görüntüler için yapılandırılmış belirli bir sunucu kümesine (havuz olarak bilinir) yönlendirildiğini tanımlayabilirsiniz.
Bu makalede şunları öğreneceksiniz:
- Ağ ayarlama
- HTTPD görüntüleriyle iki Azure kapsayıcı örneği oluşturma
- Sunucu havuzundaki Azure kapsayıcı örnekleriyle çalışan bir uygulama ağ geçidi oluşturma
Ö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.
Bir kaynak grubu oluşturun
Bu bölümdeki playbook kodu bir Azure kaynak grubu oluşturur. Kaynak grubu, Azure kaynaklarının yapılandırıldığı mantıksal bir kapsayıcıdır.
Aşağıdaki playbook'u rg.yml olarak kaydedin.
- hosts: localhost
vars:
resource_group: myResourceGroup
location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Playbook'u çalıştırmadan önce aşağıdaki notlara bakın:
- Kaynak grubu adı şeklindedir
myResourceGroup. Bu değer eğitim boyunca kullanılır. - Kaynak grubu
eastuskonumunda oluşturulur.
Ansible-playbook kullanarak playbook'u çalıştırın
ansible-playbook rg.yml
Ağ kaynakları oluşturma
Bu bölümdeki playbook kodu, uygulama ağ geçidinin diğer kaynaklarla iletişim kurmasını sağlamak için bir sanal ağ oluşturur.
Aşağıdaki playbook'u vnet_create.yml olarak kaydedin.
- hosts: localhost
vars:
resource_group: myResourceGroup
location: eastus
vnet_name: myVNet
subnet_name: myAGSubnet
publicip_name: myAGPublicIPAddress
publicip_domain: mydomain
tasks:
- name: Create a virtual network
azure_rm_virtualnetwork:
name: "{{ vnet_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.2
- name: Create a subnet
azure_rm_subnet:
name: "{{ subnet_name }}"
virtual_network_name: "{{ vnet_name }}"
resource_group: "{{ resource_group }}"
address_prefix_cidr: 10.1.0.0/24
- name: Create a public IP address
azure_rm_publicipaddress:
resource_group: "{{ resource_group }}"
allocation_method: Dynamic
name: "{{ publicip_name }}"
domain_name_label: "{{ publicip_domain }}"
Playbook'u çalıştırmadan önce aşağıdaki notlara bakın:
-
varsbölümü, ağ kaynaklarını oluşturmak için kullanılan değerleri içerir. - Belirli bir ortamınız için bu değerleri değiştirmeniz gerekir.
Ansible-playbook kullanarak playbook'u çalıştırın
ansible-playbook vnet_create.yml
Sunucu oluşturma
Bu bölümdeki playbook kodu, uygulama ağ geçidi için web sunucusu olarak kullanılacak HTTPD görüntüleriyle iki Azure kapsayıcı örneği oluşturur.
Aşağıdaki playbook'u aci_create.yml olarak kaydedin.
- hosts: localhost
vars:
resource_group: myResourceGroup
location: eastus
aci_1_name: myACI1
aci_2_name: myACI2
tasks:
- name: Create a container with httpd image
azure_rm_containerinstance:
resource_group: "{{ resource_group }}"
name: "{{ aci_1_name }}"
os_type: linux
ip_address: public
location: "{{ location }}"
ports:
- 80
containers:
- name: mycontainer
image: httpd
memory: 1.5
ports:
- 80
- name: Create another container with httpd image
azure_rm_containerinstance:
resource_group: "{{ resource_group }}"
name: "{{ aci_2_name }}"
os_type: linux
ip_address: public
location: "{{ location }}"
ports:
- 80
containers:
- name: mycontainer
image: httpd
memory: 1.5
ports:
- 80
Ansible-playbook kullanarak playbook'u çalıştırın
ansible-playbook aci_create.yml
Uygulama ağ geçidi oluşturma
Bu bölümdeki playbook kodu, myAppGateway adlı bir uygulama ağ geçidi oluşturur.
Aşağıdaki playbook'u appgw_create.yml olarak kaydedin.
- hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
vnet_name: myVNet
subnet_name: myAGSubnet
location: eastus
publicip_name: myAGPublicIPAddress
appgw_name: myAppGateway
aci_1_name: myACI1
aci_2_name: myACI2
tasks:
- name: Get info of Subnet
azure_rm_resource_facts:
api_version: '2018-08-01'
resource_group: "{{ resource_group }}"
provider: network
resource_type: virtualnetworks
resource_name: "{{ vnet_name }}"
subresource:
- type: subnets
name: "{{ subnet_name }}"
register: subnet
- name: Get info of backend server 1
azure_rm_resource_facts:
api_version: '2018-04-01'
resource_group: "{{ resource_group }}"
provider: containerinstance
resource_type: containergroups
resource_name: "{{ aci_1_name }}"
register: aci_1_output
- name: Get info of backend server 2
azure_rm_resource_facts:
api_version: '2018-04-01'
resource_group: "{{ resource_group }}"
provider: containerinstance
resource_type: containergroups
resource_name: "{{ aci_2_name }}"
register: aci_2_output
- name: Create instance of Application Gateway
azure_rm_appgateway:
resource_group: "{{ resource_group }}"
name: "{{ appgw_name }}"
sku:
name: standard_v2
tier: standard_v2
capacity: 2
gateway_ip_configurations:
- subnet:
id: "{{ subnet.response[0].id }}"
name: appGatewayIP
frontend_ip_configurations:
- public_ip_address: "{{ publicip_name }}"
name: appGatewayFrontendIP
frontend_ports:
- port: 80
name: appGatewayFrontendPort
backend_address_pools:
- backend_addresses:
- ip_address: "{{ aci_1_output.response[0].properties.ipAddress.ip }}"
- ip_address: "{{ aci_2_output.response[0].properties.ipAddress.ip }}"
name: appGatewayBackendPool
backend_http_settings_collection:
- port: 80
protocol: http
cookie_based_affinity: enabled
name: appGatewayBackendHttpSettings
http_listeners:
- frontend_ip_configuration: appGatewayFrontendIP
frontend_port: appGatewayFrontendPort
name: appGatewayHttpListener
request_routing_rules:
- rule_type: Basic
backend_address_pool: appGatewayBackendPool
backend_http_settings: appGatewayBackendHttpSettings
http_listener: appGatewayHttpListener
name: rule1
Playbook'u çalıştırmadan önce aşağıdaki notlara bakın:
-
appGatewayIPbloğundagateway_ip_configurationstanımlanır. Ağ geçidinin IP yapılandırması için bir alt ağ başvurusu gereklidir. -
appGatewayBackendPoolbloğundabackend_address_poolstanımlanır. Bir uygulama ağ geçidinin en az bir arka uç adres havuzu olmalıdır. -
appGatewayBackendHttpSettingsbloğundabackend_http_settings_collectiontanımlanır. İletişim için 80 numaralı bağlantı noktasının ve http protokollerinin kullanıldığını belirtir. -
appGatewayHttpListenerbloğundabackend_http_settings_collectiontanımlanır. appGatewayBackendPool ile ilişkilendirilmiş varsayılan dinleyicidir. -
appGatewayFrontendIPbloğundafrontend_ip_configurationstanımlanır. myAGPublicIPAddress öğesini appGatewayHttpListener'a atar. -
rule1bloğundarequest_routing_rulestanımlanır. AppGatewayHttpListener ile ilişkili varsayılan yönlendirme kuralıdır.
Ansible-playbook kullanarak playbook'u çalıştırın
ansible-playbook appgw_create.yml
Uygulama ağ geçidinin oluşturulması birkaç dakika sürebilir.
Uygulama ağ geçidini test edin
Kaynak grubu oluştur bölümünde bir konum belirtirsiniz. Değerini not edin.
Ağ kaynakları oluştur bölümünde etki alanını belirtirsiniz. Değerini not edin.
Aşağıdaki deseni konum ve etki alanıyla değiştirerek test URL'si için:
http://<domain>.<location>.cloudapp.azure.com.Test URL'sine göz atın.
Aşağıdaki sayfayı görürseniz, uygulama ağ geçidi beklendiği gibi çalışıyor.
Kaynakları temizle
Aşağıdaki kodu olarak
delete_rg.ymlkaydedin.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgansible-playbook komutunu kullanarak playbook'u çalıştırın. Yer tutucuyu silinecek kaynak grubunun adıyla değiştirin. Kaynak grubundaki tüm kaynaklar silinir.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Önemli noktalar:
- Playbook'un
registerdeğişkeni vedebugbölümü nedeniyle, komut tamamlandığında sonuçlar görüntülenir.
- Playbook'un