Öğretici: Azure 'da sanal makine ölçek kümelerini, anormal kullanarak yapılandırmaTutorial: Configure virtual machine scale sets in Azure using Ansible

Önemli

Ansible 2.7 (veya üzeri), bu makaledeki örnek playbook'ları çalıştırmak için gereklidir.Ansible 2.7 (or later) is required to run the sample playbooks in this article.

Azure sanal makine ölçek kümeleri olduğu dengeli VM'ler, bir grup özdeş, yük yapılandırmanıza olanak sağlayan bir Azure özelliğidir.Azure virtual machine scale sets is an Azure feature that lets you configure a group of identical, load balanced VMs. Ayarlar ölçeklendirmek için hiçbir ek ücret yoktur ve sanal makinelerden oluşturulmuş.There's no additional cost to scale sets and they're built from virtual machines. Yalnızca sanal makine örnekleri, yük Dengeleyiciler veya yönetilen Disk depolama alanı gibi temel işlem kaynakları için ödeme yaparsınız.You pay only for the underlying compute resources such as the VM instances, load balancers, or Managed Disk storage. Ölçek kümeleri ile, uygulamalarınızı çalıştırmak ve ölçeklendirmek için yönetim ve otomasyon katmanları sağlanır.With scale sets, the management and automation layers are provided to run and scale your applications. Bunun yerine el ile oluşturun ve tek tek sanal makineleri yönetme.You could instead manually create and manage individual VMs. Ancak, Ölçek kümelerini kullanmak için iki temel fayda vardır.However, there are two key benefits to using scale sets. Azure'da yerleşik ve uygulama ihtiyaçlarınızı karşılamak için sanal makinelerinizi otomatik olarak ölçeklendirme.They're built into Azure and they automatically scale your virtual machines to meet application needs.

Bu öğreticide, Ansible için kullanılır:In this tutorial, Ansible is used to:

  • VM için kaynakları yapılandırmaConfigure the resources for a VM
  • Ölçek kümesi yapılandırmaConfigure a scale set
  • Ölçek kümesini sanal makine örneklerinin artırarak ölçeklendirinScale the scale set by increasing it's VM instances

ÖnkoşullarPrerequisites

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Ölçek kümesi yapılandırmaConfigure a scale set

Bu bölümdeki PlayBook kodu aşağıdaki kaynakları tanımlar:The playbook code in this section defines the following resources:

  • Tüm kaynaklarınızın dağıtılacağı kaynak grubu .Resource group into which all of your resources will be deployed.
  • 10.0.0.0/16 adres alanında sanal ağVirtual network in the 10.0.0.0/16 address space
  • Sanal ağ içinde alt ağSubnet within the virtual network
  • İnternet üzerindeki kaynaklara erişmenizi sağlayan genel IP adresiPublic IP address that allows you to access resources across the Internet
  • Ölçek kümesi içindeki ve olmayan ağ trafiği akışını denetleyen ağ güvenlik grubuNetwork security group that controls the flow of network traffic in and out of your scale set
  • Yük dengeleyici kurallarını kullanarak trafiği tanımlı bir VM'ler kümesi arasında dağıtan yük dengeleyiciLoad balancer that distributes traffic across a set of defined VMs using load balancer rules
  • Oluşturulan tüm kaynakları kullanan sanal makine ölçek kümesiVirtual machine scale set that uses all the created resources

Örnek PlayBook 'u almanın iki yolu vardır:There are two ways to get the sample playbook:

  • PlayBook 'U indirin ve vmss-create.ymlkaydedin.Download the playbook and save it to vmss-create.yml.
  • vmss-create.yml adlı yeni bir dosya oluşturun ve aşağıdaki içerikleri içine kopyalayın:Create a new file named vmss-create.yml and copy into it the following contents:
- hosts: localhost
  vars:
    resource_group: myResourceGroup
    vmss_name: myScaleSet
    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:
        name: "{{ vmss_lb_name }}"
        location: "{{ location }}"
        resource_group: "{{ resource_group }}"
        public_ip: "{{ vmss_name }}"
        probe_protocol: Tcp
        probe_port: 8080
        probe_interval: 10
        probe_fail_count: 3
        protocol: Tcp
        load_distribution: Default
        frontend_port: 80
        backend_port: 8080
        idle_timeout: 4
        natpool_frontend_port_start: 50000
        natpool_frontend_port_end: 50040
        natpool_backend_port: 22
        natpool_protocol: Tcp

    - name: Create Scale Set
      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_lb_name }}"
        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:Before running the playbook, see the following notes:

  • vars bölümünde, {{ admin_password }} yer tutucusunu kendi parolanızla değiştirin.In the vars section, replace the {{ admin_password }} placeholder with your own password.

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook vmss-create.yml

PlayBook çalıştırıldıktan sonra aşağıdaki sonuçlara benzer bir çıktı görürsünüz:After running the playbook, you see output similar to the following results:

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

Sanal makine örneklerinin sayısını görüntülemeView the number of VM instances

Yapılandırılmış ölçek kümesinde Şu anda iki örnek vardır.The configured scale set currently has two instances. Bu değeri doğrulamak için aşağıdaki adımlar kullanılır:The following steps are used to confirm that value:

  1. Azure portalında oturum açın.Sign in to the Azure portal.

  2. Yapılandırdığınız ölçek kümesine gidin.Navigate to the scale set you configured.

  3. Ölçek kümesi adını parantez içindeki örneklerin sayısıyla görürsünüz: Standard_DS1_v2 (2 instances)You see the scale set name with the number of instances in parenthesis: Standard_DS1_v2 (2 instances)

  4. Aşağıdaki komutu çalıştırarak Azure Cloud Shell örnek sayısını da doğrulayabilirsiniz:You can also verify the number of instances with the Azure Cloud Shell by running the following command:

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

    Cloud Shell ' de Azure CLı komutunu çalıştırmanın sonuçları üç örnek olduğunu gösterir:The results of running the Azure CLI command in Cloud Shell show that three instances now exist:

    {
      "capacity": 3,
    }
    

Ölçek kümesinin ölçeğini genişletmeScale out a scale set

Bu bölümdeki PlayBook kodu, ölçek kümesi hakkındaki bilgileri alır ve kapasitesini iki ile üç arasında değişir.The playbook code in this section retrieves information about the scale set and changes its capacity from two to three.

Örnek PlayBook 'u almanın iki yolu vardır:There are two ways to get the sample playbook:

  • PlayBook 'U indirin ve vmss-scale-out.ymlkaydedin.Download the playbook and save it to vmss-scale-out.yml.
  • vmss-scale-out.yml adlı yeni bir dosya oluşturun ve aşağıdaki içerikleri içine kopyalayın:Create a new file named vmss-scale-out.yml and copy into it the following contents:
- hosts: localhost
  vars:
    resource_group: myResourceGroup
    vmss_name: myScaleSet
  tasks: 
    - name: Get scaleset info
      azure_rm_virtualmachine_scaleset_facts:
        resource_group: "{{ resource_group }}"
        name: "{{ vmss_name }}"
        format: curated
      register: output_scaleset

    - name: Dump scaleset info
      debug:
        var: output_scaleset

    - name: Modify scaleset (change the capacity to 3)
      set_fact:
        body: "{{ output_scaleset.ansible_facts.azure_vmss[0] | combine({'capacity': 3}, recursive=True) }}"

    - name: Update something in that scale set
      azure_rm_virtualmachinescaleset: "{{ body }}"

ansible-playbook komutunu kullanarak PlayBook 'u çalıştırın:Run the playbook using the ansible-playbook command:

ansible-playbook vmss-scale-out.yml

PlayBook çalıştırıldıktan sonra aşağıdaki sonuçlara benzer bir çıktı görürsünüz:After running the playbook, you see output similar to the following results:

PLAY [localhost] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Get scaleset info] 
ok: [localhost]

TASK [Dump scaleset info] 
ok: [localhost] => {
    "output_scaleset": {
        "ansible_facts": {
            "azure_vmss": [
                {
                    ......
                }
            ]
        },
        "changed": false,
        "failed": false
    }
}

TASK [Modify scaleset (set upgradePolicy to Automatic and capacity to 3)] 
ok: [localhost]

TASK [Update something in that scale set] 
changed: [localhost]

PLAY RECAP 
localhost                  : ok=5    changed=1    unreachable=0    failed=0

Sonuçları doğrulamaVerify the results

Azure portal yoluyla çalışmalarınızın sonuçlarını doğrulayın:Verify your results of your work via the Azure portal:

  1. Azure portalında oturum açın.Sign in to the Azure portal.

  2. Yapılandırdığınız ölçek kümesine gidin.Navigate to the scale set you configured.

  3. Ölçek kümesi adını parantez içindeki örneklerin sayısıyla görürsünüz: Standard_DS1_v2 (3 instances)You see the scale set name with the number of instances in parenthesis: Standard_DS1_v2 (3 instances)

  4. Değişikliği Azure Cloud Shell ile aşağıdaki komutu çalıştırarak da doğrulayabilirsiniz:You can also verify the change with the Azure Cloud Shell by running the following command:

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

    Cloud Shell ' de Azure CLı komutunu çalıştırmanın sonuçları üç örnek olduğunu gösterir:The results of running the Azure CLI command in Cloud Shell show that three instances now exist:

    {
      "capacity": 3,
    }
    

Sonraki adımlarNext steps