Delen via


Zelfstudie: Virtuele-machineschaalsets configureren in Azure met ansible

Belangrijk

Ansible 2.9 (of hoger) is vereist om de voorbeeldplaybooks in dit artikel uit te voeren.

Virtuele-machineschaalsets van Azure is een Azure-functie waarmee u een groep identieke vm's met gelijke taakverdeling kunt configureren. Er zijn geen extra kosten verbonden aan schaalsets en ze zijn gebouwd op basis van virtuele machines. U betaalt alleen voor de onderliggende rekenresources, zoals de VM-exemplaren, load balancers of Managed Disk-opslag. Met schaalsets beschikt u automatisch over de beheer- en automatiseringslagen voor het uitvoeren en schalen van uw toepassingen. U kunt in plaats daarvan handmatig afzonderlijke VM's maken en beheren. Er zijn echter twee belangrijke voordelen voor het gebruik van schaalsets. Ze zijn ingebouwd in Azure en ze schalen uw virtuele machines automatisch om te voldoen aan de toepassingsbehoeften.

In dit artikel leert u het volgende:

  • De resources voor een VIRTUELE machine configureren
  • Een schaalset configureren
  • De schaalset schalen door het aantal VM-exemplaren te vergroten

Vereisten

  • Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.

Een schaalset configureren

De playbookcode in deze sectie definieert de volgende resources:

  • Resourcegroep waarin al uw resources worden geïmplementeerd.
  • Virtueel netwerk in de adresruimte 10.0.0.0/16
  • Subnet binnen het virtuele netwerk
  • Openbaar IP-adres waarmee u toegang krijgt tot resources via internet
  • Netwerkbeveiligingsgroep waarmee de stroom van netwerkverkeer in en uit uw schaalset wordt bepaald
  • Load balancer waarmee verkeer wordt verdeeld over een reeks gedefinieerde virtuele machines met behulp van load balancer-regels
  • Schaalset voor virtuele machines waarin alle gemaakte resources worden gebruikt

Er zijn twee manieren om het voorbeeldplaybook op te halen:

  • Download het playbook en sla het bestand op als vmss-create.yml.

  • Maak een nieuw bestand met de naam vmss-create.yml. Voeg de volgende code in het nieuwe bestand in:

- 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

Zie de volgende notities voordat u het playbook uitvoert:

  • Vervang in de vars sectie de {{ admin_password }} tijdelijke aanduiding door uw eigen wachtwoord.

Het playbook uitvoeren met ansible-playbook

ansible-playbook vmss-create.yml

Nadat u het playbook hebt uitgevoerd, ziet u uitvoer die vergelijkbaar is met de volgende resultaten:

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

Het aantal VM-exemplaren weergeven

De geconfigureerde schaalset heeft momenteel twee exemplaren. De volgende stappen worden gebruikt om die waarde te bevestigen:

  1. Meld u aan bij de Azure-portal.

  2. Navigeer naar de schaalset die u hebt geconfigureerd.

  3. U ziet de naam van de schaalset met het aantal exemplaren tussen haakjes: Standard_DS1_v2 (2 instances)

  4. U kunt ook het aantal exemplaren met de Azure Cloud Shell controleren door de volgende opdracht uit te voeren:

    az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}' 
    

    De resultaten van het uitvoeren van de Azure CLI-opdracht in Cloud Shell laten zien dat er twee exemplaren bestaan:

    {
      "capacity": 2,
    }
    

Een schaalset uitschalen

De playbookcode in deze sectie haalt informatie over de schaalset op en wijzigt de capaciteit van twee tot drie.

Er zijn twee manieren om het voorbeeldplaybook op te halen:

  • Download het playbook en sla het op in vmss-scale-out.yml.

  • Maak een nieuw bestand met de naam vmss-scale-out.yml. Voeg de volgende code in het nieuwe bestand in:

---
- 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 }}"

Het playbook uitvoeren met ansible-playbook

ansible-playbook vmss-scale-out.yml

Nadat u het playbook hebt uitgevoerd, ziet u uitvoer die vergelijkbaar is met de volgende resultaten:

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

De resultaten controleren

Controleer uw resultaten van uw werk via Azure Portal:

  1. Meld u aan bij de Azure-portal.

  2. Navigeer naar de schaalset die u hebt geconfigureerd.

  3. U ziet de naam van de schaalset met het aantal exemplaren tussen haakjes: Standard_DS1_v2 (3 instances)

  4. U kunt de wijziging ook verifiëren in Azure Cloud Shell door de volgende opdracht uit te voeren:

    az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}' 
    

    De resultaten van het uitvoeren van de Azure CLI-opdracht in Cloud Shell laten zien dat er nu drie exemplaren bestaan:

    {
      "capacity": 3,
    }
    

Volgende stappen