Tutorial: Configurar conjuntos de dimensionamento de máquina virtual no Azure usando o Ansible
Importante
O Ansible 2.9 (ou posterior) é necessário para executar os guias estratégicos de exemplo deste artigo.
Os conjuntos de dimensionamento de máquinas virtuais do Azure são um recurso do Azure que permite configurar um grupo de VMs idênticas e com balanceamento de carga. Não há nenhum custo adicional para os conjuntos de dimensionamento e eles são criados usando máquinas virtuais. Você paga apenas pelos recursos de computação subjacentes, como as instâncias de VM, os balanceadores de carga ou o armazenamento do Managed Disks. Com conjuntos de dimensionamento, as camadas de automação e gerenciamento são fornecidas para executar e dimensionar seus aplicativos. Em vez disso, você poderia criar e gerenciar VMs individuais manualmente. No entanto, há dois benefícios principais ao usar conjuntos de dimensionamento. Eles são criados no Azure e eles dimensionam automaticamente suas máquinas virtuais para atender às necessidades do aplicativo.
Neste artigo, você aprenderá como:
- Configurar os recursos para uma VM
- Configurar um conjunto de dimensionamento
- Dimensionar o conjunto de dimensionamento aumentando as instâncias da VM
Pré-requisitos
- Assinatura do Azure: caso você não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.
Instalar o Ansible: escolha uma das seguintes opções:
- Instalar e configurar o Ansible em uma máquina virtual do Linux
- Configurar o Azure Cloud Shell e, se você não tiver acesso a uma máquina virtual do Linux, criar uma máquina virtual com o Ansible.
Configurar um conjunto de dimensionamento
O código do guia estratégico nesta seção define os seguintes recursos:
- Um grupo de recursos no qual todos os recursos serão implantados
- Uma rede virtual no espaço de endereço 10.0.0.0/16
- Uma sub-rede dentro da rede virtual
- Um endereço IP público que permite acessar recursos pela Internet
- Um grupo de segurança de rede que controla o fluxo de entrada e saída de tráfego de rede do conjunto de dimensionamento
- Um balanceador de carga, que distribui o tráfego entre um conjunto de VMs definidas usando regras do balanceador de carga
- Um conjunto de dimensionamento de máquinas virtuais que usa todos os recursos criados
Há duas maneiras de obter o guia estratégico de exemplo:
Baixe o guia estratégico e salve o arquivo como
vmss-create.yml
.Crie um arquivo chamado
vmss-create.yml
. Insira o seguinte código no novo arquivo:
- 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
Antes de executar o guia estratégico, confira as observações a seguir:
- Na seção
vars
, substitua o espaço reservado{{ admin_password }}
pela sua própria senha.
Executar o guia estratégico usando ansible-playbook
ansible-playbook vmss-create.yml
Depois de executar o guia estratégico, você verá resultados semelhantes aos seguintes:
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
Exibir o número de instâncias de VM
O conjunto de dimensionamento configurado atualmente possui duas instâncias. As etapas a seguir são usadas para confirmar esse valor:
Entre no portal do Azure.
Navegue até o conjunto de dimensionamento que você configurou.
Você verá o nome do conjunto de dimensionamento com o número de instâncias entre parênteses:
Standard_DS1_v2 (2 instances)
Você também pode verificar o número de instâncias com o Azure Cloud Shell executando o seguinte comando:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Os resultados da execução do comando da CLI do Azure no Cloud Shell mostram que existem duas instâncias:
{ "capacity": 2, }
Escalar horizonralmente um conjunto de dimensionamento
O código do guia estratégico nesta seção recupera informações sobre o conjunto de dimensionamento e altera sua capacidade de dois para três.
Há duas maneiras de obter o guia estratégico de exemplo:
Baixe o guia estratégico e salve-o em
vmss-scale-out.yml
.Crie um arquivo chamado
vmss-scale-out.yml
. Insira o seguinte código no novo arquivo:
---
- 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 }}"
Executar o guia estratégico usando ansible-playbook
ansible-playbook vmss-scale-out.yml
Depois de executar o guia estratégico, você verá resultados semelhantes aos seguintes:
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
Verifique os resultados
Verifique os resultados do seu trabalho por meio do portal do Azure:
Entre no portal do Azure.
Navegue até o conjunto de dimensionamento que você configurou.
Você verá o nome do conjunto de dimensionamento com o número de instâncias entre parênteses:
Standard_DS1_v2 (3 instances)
Você também pode verificar a alteração com o Azure Cloud Shell executando o seguinte comando:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Os resultados da execução do comando da CLI do Azure no Cloud Shell mostram que agora existem três instâncias:
{ "capacity": 3, }