Esercitazione: Ridimensionare le app nel servizio app di Azure con Ansible

Importante

Ansible 2.7 (o versione successiva) è necessario per eseguire i playbook di esempio in questo articolo.

Il servizio app di Azure consente di compilare e ospitare codice. Questo codice può essere sotto forma di app Web, back-end per dispositivi mobili e API RESTful. Usando il servizio app, è possibile sviluppare codice usando il linguaggio di programmazione preferito senza gestire l'infrastruttura. Il servizio app supporta sia Windows che Linux. Sono supportate distribuzioni automatizzate da qualsiasi repository Git, tra cui GitHub e Azure DevOps.

In questo articolo vengono illustrate le operazioni seguenti:

  • Ottenere informazioni su un piano di servizio app esistente
  • Aumentare il piano di servizio App a S2 con tre istanze di lavoro

Prerequisiti

  • Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Aumentare le prestazioni di un'app

Sono disponibili due flussi di lavoro per la scalabilità: aumentare la capacità e espandere orizzontalmente.

Aumentare le prestazioni: Per aumentare le prestazioni significa acquisire più risorse. Queste risorse includono CPU, memoria, spazio su disco, macchine virtuali e altro ancora. È possibile aumentare le prestazioni di un'app modificando il piano tariffario del piano di servizio app a cui appartiene l'app. Scale out: Per "scale out" si intende aumentare il numero di istanze di macchine virtuali che eseguono l'applicazione. A seconda del piano tariffario del piano App Service, è possibile aumentare il numero di istanze fino a 20. La scalabilità automatica consente di ridimensionare automaticamente il numero di istanze in base a regole e pianificazioni predefinite.

Il codice del playbook in questa sezione definisce l'operazione seguente:

  • Ottenere informazioni su un piano di servizio app esistente
  • Aggiornare il piano di servizio app a S2 con tre ruoli di lavoro

Salva il playbook seguente come 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

Eseguire il playbook usando ansible-playbook

ansible-playbook webapp_scaleup.yml

Dopo aver eseguito il playbook, viene visualizzato un output simile ai risultati seguenti:

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 

Passaggi successivi