Tutoriel : Mettre à l’échelle des applications dans Azure App Service à l’aide d’Ansible

Important

Ansible 2.7 (ou version ultérieure) est nécessaire pour exécuter les exemples de playbooks dans cet article.

Azure App Service vous permet de créer et d’héberger du code. Ce code peut se présenter sous la forme d’applications web, de back-ends mobiles et d’API RESTful. Avec App Service, vous pouvez développer votre code en utilisant le langage de programmation de votre choix, sans gérer l’infrastructure. App Service prend en charge les machines virtuelles Linux et Windows. Les déploiements automatisés à partir d’un dépôt Git sont pris en charge, y compris GitHub et Azure DevOps.

Dans cet article, vous apprendrez comment :

  • Obtenir les faits d'un plan App Service existant
  • Monter en puissance le plan App Service en passant à S2 avec trois rôles de travail

Prérequis

  • Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Monter en puissance une application

Il existe deux workflows de mise à l'échelle : scale-up et scale-out.

Monter en puissance : pour effectuer un scale-up signifie acquérir davantage de ressources. (processeur, mémoire, espace disque, machines virtuelles, etc.). Il s’agit de modifier le niveau tarifaire du plan App Service de l’application. Scale-out : Pour effectuer un scale-out, vous pouvez augmenter le nombre d’instances de machine virtuelle qui exécutent votre application. (jusqu’à 20 instances selon le niveau tarifaire du plan App Service). La mise à l'échelle automatique permet de mettre automatiquement à l’échelle le nombre d’instances en fonction des planifications et des règles prédéfinies.

Le code du playbook de cette section définit l’opération suivante :

  • Obtenir les faits d'un plan App Service existant
  • Mettre à jour le plan App Service vers S2 avec trois rôles de travail

Enregistrez le playbook suivant en tant que 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

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook webapp_scaleup.yml

Après avoir exécuté le playbook, vous voyez une sortie similaire aux résultats suivants :

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 

Étapes suivantes