Tutorial: Escalado de aplicaciones en Azure App Service con AnsibleTutorial: Scale apps in Azure App Service using Ansible

Importante

Para ejecutar los cuadernos de estrategias de ejemplo de este tutorial, se requiere Ansible 2.7 (o cualquier versión posterior).Ansible 2.7 (or later) is required to run the sample playbooks in this article.

Azure App Service permite compilar y hospedar código.Azure App Service enables you to build and host code. Dicho código puede tener forma de aplicaciones web, back-ends para dispositivos móviles y API RESTful.This code can be in the form of web apps, mobile backends, and RESTful APIs. Mediante App Service, puede desarrollar el código mediante el lenguaje de programación que prefiera sin tener que administrar la infraestructura.Using App Service, you can develop you code using the programming language of your choice without managing infrastructure. App Service admite Windows y Linux.App Service supports both Windows and Linux. Se admiten las implementaciones automatizadas desde cualquier repositorio Git, como GitHub y Azure DevOps.Automated deployments from any Git repo are supported, including GitHub and Azure DevOps.

En este tutorial, se usa Ansible para:In this tutorial, Ansible is used to:

  • Obtener datos de un plan de App Service existenteGet facts of an existing App Service plan
  • Escalado vertical del plan de App Service a S2 con tres roles de trabajoScale up the App Service plan to S2 with three workers

Requisitos previosPrerequisites

  • Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Escalado vertical de una aplicaciónScale up an app

Existen dos flujos de trabajo de escalado: escalado vertical y escalado horizontal.There are two workflows for scaling: scale up and scale out.

Escalado vertical: Escalar verticalmente significa adquirir más recursos.Scale up: To scale up means to acquire more resources. Estos recursos incluyen CPU, memoria, espacio en disco, máquinas virtuales, etc.These resources include CPU, memory, disk space, VMs, and more. Para escalar verticalmente una aplicación, cambie el plan de tarifa del plan de App Service al que pertenece la aplicación.You scale up an app by changing the pricing tier of the App Service plan to which the app belongs. Escalado horizontal: Significa aumentar el número de instancias de máquina virtual que ejecutan la aplicación.Scale out: To scale out means to increase the number of VM instances that run your app. Según el plan de tarifa de App Service, puede escalar horizontalmente a un máximo de 20 instancias.Depending on your App Service plan pricing tier, you can scale out to as many as 20 instances. El escalado automático le permite escalar el total de instancias automáticamente en función de las programaciones y reglas predefinidas.Autoscaling allows you to scale instance count automatically based on predefined rules and schedules.

El código del cuaderno de estrategias de esta sección define la siguiente operación:The playbook code in this section defines following operation:

  • Obtener datos de un plan de App Service existenteGet facts of an existing App Service plan
  • Actualizar el plan de App Service a S2 con tres roles de trabajoUpdate the App service plan to S2 with three workers

Guarde el siguiente cuaderno de estrategias como webapp_scaleup.yml:Save the following playbook as webapp_scaleup.yml:

- hosts: localhost
  connection: local
  vars:
    resource_group: myResourceGroup
    plan_name: myAppServicePlan
    location: eastus

  tasks:
  - name: Get facts of existing App service plan
    azure_rm_appserviceplan_facts:
      resource_group: "{{ resource_group }}"
      name: "{{ plan_name }}"
    register: facts

  - debug: 
      var: facts.appserviceplans[0].sku

  - name: Scale up the App service plan
    azure_rm_appserviceplan:
      resource_group: "{{ resource_group }}"
      name: "{{ plan_name }}"
      is_linux: true
      sku: S2
      number_of_workers: 3
      
  - name: Get facts
    azure_rm_appserviceplan_facts:
      resource_group: "{{ resource_group }}"
      name: "{{ plan_name }}"
    register: facts

  - debug: 
      var: facts.appserviceplans[0].sku

Use el comando ansible-playbook para ejecutar el cuaderno de estrategias:Run the playbook using the ansible-playbook command:

ansible-playbook webapp_scaleup.yml

Tras ejecutar el cuaderno de estrategias, debería ver resultados similares a los siguientes:After running the playbook, you see output similar to the following results:

PLAY [localhost] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Get facts of existing App service plan] 
 [WARNING]: Azure API profile latest does not define an entry for WebSiteManagementClient

ok: [localhost]

TASK [debug] 
ok: [localhost] => {
    "facts.appserviceplans[0].sku": {
        "capacity": 1,
        "family": "S",
        "name": "S1",
        "size": "S1",
        "tier": "Standard"
    }
}

TASK [Scale up the App service plan] 
changed: [localhost]

TASK [Get facts] 
ok: [localhost]

TASK [debug] 
ok: [localhost] => {
    "facts.appserviceplans[0].sku": {
        "capacity": 3,
        "family": "S",
        "name": "S2",
        "size": "S2",
        "tier": "Standard"
    }
}

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

Pasos siguientesNext steps