Lernprogramm: Skalieren von Apps in Azure App Service mithilfe von Ansible

Von Bedeutung

Ansible 2.7 (oder höher) ist erforderlich, um die Beispiel-Playbooks in diesem Artikel auszuführen.

Mit Azure App Service können Sie Code erstellen und hosten. Dieser Code kann sich in Form von Web-Apps, mobilen Back-Ends und RESTful-APIs befinden. Mithilfe von App Service können Sie Code mithilfe der Programmiersprache Ihrer Wahl entwickeln, ohne die Infrastruktur zu verwalten. Der App-Dienst unterstützt sowohl Windows als auch Linux. Automatisierte Bereitstellungen aus jedem Git-Repository werden unterstützt, einschließlich GitHub und Azure DevOps.

In diesem Artikel erfahren Sie, wie Sie:

  • Abrufen von Informationen zu einem vorhandenen App Service-Plan
  • Skalieren des App Service-Plans auf S2 mit drei Mitarbeitern

Voraussetzungen

  • Azure-Abonnement: Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Skalieren einer App

Es gibt zwei Workflows für die Skalierung: vertikale Skalierung und horizontale Skalierung.

Vergrößern: Vergrößern bedeutet, mehr Ressourcen zu erwerben. Zu diesen Ressourcen gehören CPU, Arbeitsspeicher, Speicherplatz, VMs und vieles mehr. Sie skalieren eine App, indem Sie die Preisstufe des App Service-Plans ändern, zu dem die App gehört. Horizontal skalieren: Horizontal skalieren bedeutet, die Anzahl der VM-Instanzen zu erhöhen, die Ihre App ausführen. Je nach Preisniveau Ihres App Service-Plans können Sie bis zu 20 Instanzen skalieren. Mit der automatischen Skalierung können Sie die Instanzenanzahl automatisch basierend auf vordefinierten Regeln und Zeitplänen skalieren.

Der Playbook-Code in diesem Abschnitt definiert den folgenden Vorgang:

  • Abrufen von Informationen zu einem bestehenden App Service-Plan
  • Aktualisieren des App-Dienstplans auf S2 mit drei Mitarbeitern

Speichern Sie das folgende Playbook unter 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

Führen Sie das Playbook mit ansible-playbook aus

ansible-playbook webapp_scaleup.yml

Nach dem Ausführen des Playbooks wird eine Ausgabe angezeigt, die den folgenden Ergebnissen ähnelt:

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 

Nächste Schritte