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.
Instalación de Ansible: realice una de las siguientes opciones:
- Instalar y configurar Ansible en una máquina virtual Linux
- Configurar Azure Cloud Shell y, si no tiene acceso a una máquina virtual Linux, crear una máquina virtual con Ansible.
- Una aplicación de Azure App Service: si no tiene una aplicación de Azure App Service, configure una aplicación en Azure App Service con Ansible.
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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de