Tutorial: Escalado de aplicaciones en App de Azure Service mediante Ansible

Importante

Para ejecutar los cuadernos de estrategias de ejemplo de este tutorial, se requiere Ansible 2.7 (o cualquier versión posterior).

Azure App Service permite compilar y hospedar código. Dicho código puede tener forma de aplicaciones web, back-ends para dispositivos móviles y API RESTful. Mediante App Service, puede desarrollar el código mediante el lenguaje de programación que prefiera sin tener que administrar la infraestructura. App Service admite Windows y Linux. Se admiten las implementaciones automatizadas desde cualquier repositorio Git, como GitHub y Azure DevOps.

En este artículo aprenderá a:

  • Obtener datos de un plan de App Service existente
  • Escalado vertical del plan de App Service a S2 con tres roles de trabajo

Requisitos previos

  • Suscripción de Azure: si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Escalado vertical de una aplicación

Existen dos flujos de trabajo de escalado: escalado vertical y escalado horizontal.

Escalar verticalmente: para escalar verticalmente significa adquirir más recursos. Estos recursos incluyen CPU, memoria, espacio en disco, máquinas virtuales, etc. Para escalar verticalmente una aplicación, cambie el plan de tarifa del plan de App Service al que pertenece la aplicación. Escalado horizontal: para escalar horizontalmente significa aumentar el número de instancias de máquina virtual que ejecutan la aplicación. Según el plan de tarifa de App Service, puede escalar horizontalmente a un máximo de 20 instancias. El escalado automático le permite escalar el total de instancias automáticamente en función de las programaciones y reglas predefinidas.

El código del cuaderno de estrategias de esta sección define la siguiente operación:

  • Obtener datos de un plan de App Service existente
  • Actualizar el plan de App Service a S2 con tres roles de trabajo

Guarde el siguiente cuaderno de estrategias como 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

Ejecute el cuaderno de estrategias mediante ansible-playbook.

ansible-playbook webapp_scaleup.yml

Tras ejecutar el cuaderno de estrategias, debería ver resultados similares a los siguientes:

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 siguientes