Öğretici: Ansible kullanarak Azure'da sanal makine ölçek kümelerini yapılandırma
Önemli
Bu makaledeki örnek playbook'ları çalıştırmak için Ansible 2.9 (veya üzeri) gereklidir.
Azure sanal makine ölçek kümeleri , aynı, yük dengeli VM'lerden oluşan bir grup yapılandırmanıza olanak tanıyan bir Azure özelliğidir. Kümeleri ölçeklendirmek için ek maliyet yoktur ve bunlar sanal makinelerden oluşturulur. Yalnızca VM örnekleri, yük dengeleyiciler veya Yönetilen Disk depolama alanı gibi temel işlem kaynakları için ödeme yapın. Ölçek kümeleri ile, uygulamalarınızı çalıştırmak ve ölçeklendirmek için yönetim ve otomasyon katmanları sağlanır. Bunun yerine tek tek VM'leri el ile oluşturabilir ve yönetebilirsiniz. Ancak ölçek kümelerini kullanmanın iki temel avantajı vardır. Azure'da yerleşik olarak bulunurlar ve sanal makinelerinizi uygulama gereksinimlerini karşılayacak şekilde otomatik olarak ölçeklendirirler.
Bu makalede şunları öğreneceksiniz:
- VM için kaynakları yapılandırma
- Ölçek kümesi yapılandırma
- Ölçek kümesinin VM örneklerini artırarak ölçek kümesini ölçeklendirme
Ö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.
Ölçek kümesi yapılandırma
Bu bölümdeki playbook kodu aşağıdaki kaynakları tanımlar:
- Tüm kaynaklarınızın dağıtılacağı kaynak grubu .
- 10.0.0.0/16 adres alanında sanal ağ
- Sanal ağ içinde alt ağ
- İnternet üzerindeki kaynaklara erişmenizi sağlayan genel IP adresi
- Ölçek kümenize gelen ve giden ağ trafiğinin akışını denetleen ağ güvenlik grubu
- Yük dengeleyici kurallarını kullanarak trafiği tanımlı bir VM'ler kümesi arasında dağıtan yük dengeleyici
- Oluşturulan tüm kaynakları kullanan sanal makine ölçek kümesi
Örnek playbook'u almanın iki yolu vardır:
Playbook'u indirin ve dosyayı olarak
vmss-create.yml
kaydedin.vmss-create.yml
adlı yeni bir dosya oluşturun. Yeni dosyaya aşağıdaki kodu ekleyin:
- hosts: localhost
vars:
resource_group: myResourceGroup
vmss_name: myvmscalesetname
vmss_lb_name: myScaleSetLb
location: eastus
admin_username: azureuser
admin_password: "{{ admin_password }}"
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
address_prefix: "10.0.1.0/24"
virtual_network: "{{ vmss_name }}"
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: "{{ resource_group }}"
allocation_method: Static
name: "{{ vmss_name }}"
- name: Create Network Security Group that allows SSH
azure_rm_securitygroup:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
rules:
- name: SSH
protocol: Tcp
destination_port_range: 22
access: Allow
priority: 1001
direction: Inbound
- name: Create a load balancer
azure_rm_loadbalancer:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}lb"
location: "{{ location }}"
frontend_ip_configurations:
- name: "{{ vmss_name }}front-config"
public_ip_address: "{{ vmss_name }}"
backend_address_pools:
- name: "{{ vmss_name }}backend-pool"
probes:
- name: "{{ vmss_name }}prob0"
port: 8080
interval: 10
fail_count: 3
inbound_nat_pools:
- name: "{{ vmss_name }}nat-pool"
frontend_ip_configuration_name: "{{ vmss_name }}front-config"
protocol: Tcp
frontend_port_range_start: 50000
frontend_port_range_end: 50040
backend_port: 22
load_balancing_rules:
- name: "{{ vmss_name }}lb-rules"
frontend_ip_configuration: "{{ vmss_name }}front-config"
backend_address_pool: "{{ vmss_name }}backend-pool"
frontend_port: 80
backend_port: 8080
load_distribution: Default
probe: "{{ vmss_name }}prob0"
- name: Create VMSS
no_log: true
azure_rm_virtualmachinescaleset:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
vm_size: Standard_DS1_v2
admin_username: "{{ admin_username }}"
admin_password: "{{ admin_password }}"
ssh_password_enabled: true
capacity: 2
virtual_network_name: "{{ vmss_name }}"
subnet_name: "{{ vmss_name }}"
upgrade_policy: Manual
tier: Standard
managed_disk_type: Standard_LRS
os_disk_caching: ReadWrite
image:
offer: UbuntuServer
publisher: Canonical
sku: 16.04-LTS
version: latest
load_balancer: "{{ vmss_name }}lb"
data_disks:
- lun: 0
disk_size_gb: 20
managed_disk_type: Standard_LRS
caching: ReadOnly
- lun: 1
disk_size_gb: 30
managed_disk_type: Standard_LRS
caching: ReadOnly
Playbook'u çalıştırmadan önce aşağıdaki notlara bakın:
vars
bölümünde yer tutucuyu{{ admin_password }}
kendi parolanızla değiştirin.
Ansible-playbook kullanarak playbook'u çalıştırma
ansible-playbook vmss-create.yml
Playbook'u çalıştırdıktan sonra aşağıdaki sonuçlara benzer bir çıktı görürsünüz:
PLAY [localhost]
TASK [Gathering Facts]
ok: [localhost]
TASK [Create a resource group]
changed: [localhost]
TASK [Create virtual network]
changed: [localhost]
TASK [Add subnet]
changed: [localhost]
TASK [Create public IP address]
changed: [localhost]
TASK [Create Network Security Group that allows SSH]
changed: [localhost]
TASK [Create a load balancer]
changed: [localhost]
TASK [Create Scale Set]
changed: [localhost]
PLAY RECAP
localhost : ok=8 changed=7 unreachable=0 failed=0
VM örneği sayısını görüntüleme
Yapılandırılan ölçek kümesinin şu anda iki örneği vardır. Bu değeri onaylamak için aşağıdaki adımlar kullanılır:
Azure Portal oturum açın.
Yapılandırdığınız ölçek kümesine gidin.
Ölçek kümesi adını parantez içindeki örnek sayısıyla görürsünüz:
Standard_DS1_v2 (2 instances)
Aşağıdaki komutu çalıştırarak Azure Cloud Shell ile örnek sayısını da doğrulayabilirsiniz:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Cloud Shell'de Azure CLI komutunu çalıştırmanın sonuçları iki örneğin mevcut olduğunu gösterir:
{ "capacity": 2, }
Ölçek kümesinin ölçeğini genişletme
Bu bölümdeki playbook kodu ölçek kümesi hakkındaki bilgileri alır ve kapasitesini ikiden üçe değiştirir.
Örnek playbook'u almanın iki yolu vardır:
Playbook'u indirin ve öğesine
vmss-scale-out.yml
kaydedin.vmss-scale-out.yml
adlı yeni bir dosya oluşturun. Yeni dosyaya aşağıdaki kodu ekleyin:
---
- hosts: localhost
gather_facts: false
vars:
resource_group: myTestRG
vmss_name: myTestVMSS
tasks:
- name: Get scaleset info
azure_rm_virtualmachine_scaleset_facts:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
format: curated
register: output_scaleset
- name: set image fact
set_fact:
vmss_image: "{{ output_scaleset.vmss[0].image }}"
- name: Create VMSS
no_log: true
azure_rm_virtualmachinescaleset:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
capacity: 3
image: "{{ vmss_image }}"
Ansible-playbook kullanarak playbook'u çalıştırma
ansible-playbook vmss-scale-out.yml
Playbook'u çalıştırdıktan sonra aşağıdaki sonuçlara benzer bir çıktı görürsünüz:
PLAY [localhost]
TASK [Gathering Facts]
ok: [localhost]
TASK [Get scaleset info]
ok: [localhost]
TASK [Set image fact]
ok: [localhost]
TASK [Change VMSS capacity]
changed: [localhost]
PLAY RECAP
localhost : ok=3 changed=1 unreachable=0 failed=0
Sonuçları doğrulama
Azure portalı aracılığıyla çalışmanızın sonuçlarını doğrulayın:
Azure Portal oturum açın.
Yapılandırdığınız ölçek kümesine gidin.
Ölçek kümesi adını parantez içindeki örnek sayısıyla görürsünüz:
Standard_DS1_v2 (3 instances)
Değişikliği Azure Cloud Shell ile aşağıdaki komutu çalıştırarak da doğrulayabilirsiniz:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Cloud Shell'de Azure CLI komutunu çalıştırmanın sonuçları üç örneğin mevcut olduğunu gösterir:
{ "capacity": 3, }