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.
Ansible installeren: Voer een van de volgende opties uit:
- Ansible installeren en configureren op een virtuele Linux-machine
- Configureer Azure Cloud Shell en maak een virtuele machine met Ansible als u geen toegang hebt tot een virtuele Linux-machine.
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:
Meld u aan bij de Azure-portal.
Navigeer naar de schaalset die u hebt geconfigureerd.
U ziet de naam van de schaalset met het aantal exemplaren tussen haakjes:
Standard_DS1_v2 (2 instances)
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:
Meld u aan bij de Azure-portal.
Navigeer naar de schaalset die u hebt geconfigureerd.
U ziet de naam van de schaalset met het aantal exemplaren tussen haakjes:
Standard_DS1_v2 (3 instances)
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, }