Tutorial: Konfigurasikan set skala komputer virtual di Azure menggunakan Ansible

Penting

Ansible 2.9 (atau lebih baru) diperlukan untuk menjalankan sampel playbook dalam artikel ini.

set skala komputer virtual Azure adalah fitur Azure yang memungkinkan Anda mengonfigurasi sebuah grup VM dengan beban seimbang yang identik. Tidak ada biaya tambahan untuk set skala dan ini dibangun dari mesin virtual. Anda hanya membayar untuk sumber daya komputasi dasar seperti instans VM, penyeimbang beban, atau penyimpanan Disk Terkelola. Dengan set skala, lapisan manajemen dan otomatisasi disediakan untuk menjalankan dan menskalakan aplikasi Anda. Anda dapat membuat dan mengelola VM individual secara manual. Namun, ada dua manfaat utama dari penggunaan set skala. Ini dibangun ke dalam Azure dan secara otomatis menskalakan mesin virtual Anda untuk memenuhi kebutuhan aplikasi.

Dalam artikel ini, Anda akan mempelajari cara:

  • Mengonfigurasi sumber daya untuk VM
  • Mengonfigurasi set skala
  • Menskalakan set skala dengan meningkatkan instans VM-nya

Prasyarat

  • Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Mengonfigurasi set skala

Kode playbook di bagian ini mendefinisikan sumber daya berikut:

  • Grup sumber daya di mana semua sumber daya Anda akan disebarkan.
  • Jaringan virtual di ruang alamat 10.0.0.0/16
  • Subnet di dalam jaringan virtual
  • Alamat IP publik yang memungkinkan Anda mengakses sumber daya di Internet
  • Grup keamanan jaringan yang mengontrol arus lalu lintas jaringan masuk dan keluar dari set skala Anda
  • Load balancer yang mendistribusikan lalu lintas di sekumpulan VM yang ditentukan menggunakan aturan load balancer
  • Set skala komputer virtual yang menggunakan semua sumber daya yang dibuat

Ada dua cara untuk mendapatkan playbook sampel:

  • Unduh playbook dan simpan file sebagai vmss-create.yml.

  • Buat file baru bernama vmss-create.yml. Masukkan kode berikut ke file yang baru:

- 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

Sebelum menjalankan playbook, lihat catatan berikut:

  • Di bagian vars, ganti tempat penampung {{ admin_password }} dengan kata sandi Anda sendiri.

Jalankan playbook menggunakan ansible-playbook.

ansible-playbook vmss-create.yml

Setelah menjalankan playbook, Anda melihat output yang mirip dengan hasil berikut:

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

Lihat jumlah instans VM

Set skala yang dikonfigurasi saat ini memiliki dua instans. Langkah-langkah berikut digunakan untuk mengonfirmasi nilai tersebut:

  1. Masuk ke portal Azure.

  2. Navigasikan ke set skala yang Anda konfigurasikan.

  3. Anda melihat nama set skala dengan jumlah instans dalam tanda kurung: Standard_DS1_v2 (2 instances)

  4. Anda juga dapat memverifikasi jumlah instans dengan Azure Cloud Shell dengan menjalankan perintah berikut:

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

    Hasil menjalankan perintah Azure CLI di Cloud Shell menunjukkan bahwa ada dua instans:

    {
      "capacity": 2,
    }
    

Menskalakan set skala

Kode playbook di bagian ini mengambil informasi tentang set skala dan mengubah kapasitasnya dari dua menjadi tiga.

Ada dua cara untuk mendapatkan playbook sampel:

  • Unduh playbook dan simpan ke vmss-scale-out.yml.

  • Buat file baru bernama vmss-scale-out.yml. Masukkan kode berikut ke file yang baru:

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

Jalankan playbook menggunakan ansible-playbook.

ansible-playbook vmss-scale-out.yml

Setelah menjalankan playbook, Anda melihat output yang mirip dengan hasil berikut:

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

Memverifikasi hasil

Verifikasi hasil pekerjaan Anda melalui portal Azure:

  1. Masuk ke portal Azure.

  2. Navigasikan ke set skala yang Anda konfigurasikan.

  3. Anda melihat nama set skala dengan jumlah instans dalam tanda kurung: Standard_DS1_v2 (3 instances)

  4. Anda juga dapat memverifikasi perubahan dengan Azure Cloud Shell dengan menjalankan perintah berikut:

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

    Hasil menjalankan perintah Azure CLI di Cloud Shell menunjukkan bahwa sekarang ada tiga instans:

    {
      "capacity": 3,
    }
    

Langkah berikutnya