Share via


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.

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:

  1. Logga in på Azure-portalen.

  2. Gå till skalningsuppsättningen som du konfigurerade.

  3. Du ser skalningsuppsättningens namn med antalet instanser inom parentes: Standard_DS1_v2 (2 instances)

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

  1. Logga in på Azure-portalen.

  2. Gå till skalningsuppsättningen som du konfigurerade.

  3. Du ser skalningsuppsättningens namn med antalet instanser inom parentes: Standard_DS1_v2 (3 instances)

  4. 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,
    }
    

Nästa steg