Självstudie: Konfigurera vm-skalningsuppsättningar i Azure med Ansible
Viktigt!
Ansible 2.9 (eller senare) krävs för att köra exempelspelböckerna i den här artikeln.
Skalningsuppsättningar för virtuella Azure-datorer är en Azure-funktion som gör att du kan konfigurera en grupp med identiska, belastningsutjämningade virtuella datorer. Det finns ingen extra kostnad för skalningsuppsättningar och de skapas från virtuella datorer. Du betalar bara för underliggande beräkningsresurser, till exempel VM-instanser, lastbalanserare eller managed disk-lagring. Med skalningsuppsättningar tillhandahålls hantering och automatiseringsnivåer för körning och skalning av dina program. Du kan i stället skapa och hantera enskilda virtuella datorer manuellt. Det finns dock två viktiga fördelar med att använda skalningsuppsättningar. De är inbyggda i Azure och de skalar automatiskt dina virtuella datorer efter programbehov.
I den här artikeln kan du se hur du:
- Konfigurera resurserna för en virtuell dator
- Konfigurera en skalningsuppsättning
- Skala skalningsuppsättningen genom att öka den virtuella datorns instanser
Förutsättningar
- Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Installera Ansible: Gör något av följande alternativ:
- Installera och konfigurera Ansible på en virtuell Linux-dator
- Konfigurera Azure Cloud Shell och – om du inte har åtkomst till en virtuell Linux-dator – skapa en virtuell dator med Ansible.
Konfigurera en skalningsuppsättning
Spelbokskoden i det här avsnittet definierar följande resurser:
- Resursgrupp som alla dina resurser ska distribueras till.
- Virtuellt nätverk i adressutrymmet 10.0.0.0/16
- Undernät i det virtuella nätverket
- Offentlig IP-adress som gör att du kan få åtkomst till resurser via Internet
- Nätverkssäkerhetsgrupp som styr flödet av nätverkstrafik in och ut ur din skalningsuppsättning
- Lastbalanseraren som distribuerar trafik över en uppsättning definierade virtuella datorer med hjälp av regler för lastbalanseraren
- Skalningsuppsättning för virtuell dator som använder alla resurser som har skapats
Det finns två sätt att hämta exempelspelboken:
Ladda ned spelboken och spara filen som
vmss-create.yml
.Skapa en ny fil med namnet
vmss-create.yml
. Infoga följande kod i den nya filen:
- 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
Se följande anteckningar innan du kör spelboken:
- I avsnittet
vars
ersätter du{{ admin_password }}
platshållaren med ditt eget lösenord.
Kör spelboken med ansible-playbook
ansible-playbook vmss-create.yml
När du har kört spelboken visas utdata som liknar följande resultat:
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
Visa antalet VM-instanser
Den konfigurerade skalningsuppsättningen har för närvarande två instanser. Följande steg används för att bekräfta det värdet:
Logga in på Azure-portalen.
Gå till skalningsuppsättningen som du konfigurerade.
Du ser skalningsuppsättningens namn med antalet instanser inom parentes:
Standard_DS1_v2 (2 instances)
Du kan också kontrollera antalet instanser med Azure Cloud Shell genom att köra följande kommando:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Resultatet av att köra Azure CLI-kommandot i Cloud Shell visar att det finns två instanser:
{ "capacity": 2, }
Skala ut en skalningsuppsättning
Spelbokskoden i det här avsnittet hämtar information om skalningsuppsättningen och ändrar dess kapacitet från två till tre.
Det finns två sätt att hämta exempelspelboken:
Ladda ned spelboken och spara den i
vmss-scale-out.yml
.Skapa en ny fil med namnet
vmss-scale-out.yml
. Infoga följande kod i den nya filen:
---
- 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 }}"
Kör spelboken med ansible-playbook
ansible-playbook vmss-scale-out.yml
När du har kört spelboken visas utdata som liknar följande resultat:
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
Verifiera resultatet
Kontrollera resultatet av ditt arbete via Azure-portalen:
Logga in på Azure-portalen.
Gå till skalningsuppsättningen som du konfigurerade.
Du ser skalningsuppsättningens namn med antalet instanser inom parentes:
Standard_DS1_v2 (3 instances)
Du kan även verifiera ändringen med Azure Cloud Shell genom att köra följande kommando:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Resultatet av att köra Azure CLI-kommandot i Cloud Shell visar att det nu finns tre instanser:
{ "capacity": 3, }