チュートリアル: Ansible を使用して Azure App Service のアプリをスケーリングする

重要

この記事のサンプル プレイブックを実行するには、Ansible 2.7 (以降) が必要です。

Azure App Service を使用して、コードをビルドおよびホストすることができます。 このコードは、Web アプリ、モバイル バックエンド、RESTful API の形式にすることができます。 App Service を使用して、インフラストラクチャを管理することなく、任意のプログラミング言語を使用してコードを開発できます。 App Service では Windows と Linux の両方がサポートされています。 GitHub と Azure DevOps を含む任意の Git リポジトリからの自動デプロイがサポートされています。

この記事では、次のことについて説明します。

  • 既存の App Service プランのファクトを取得する
  • App Service プランを 3 つのワーカーを持つ S2 にスケールアップする

前提条件

  • Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

アプリのスケールアップ

スケーリングには、"スケールアップ" と "スケールアウト" の 2 つのワークフローがあります。

スケールアップ: スケールアップとは、リソースを追加で取得することです。 対象となるリソースには、CPU、メモリ、ディスク領域、VM などがあります。 アプリをスケールアップするには、アプリが属している App Service プランの価格レベルを変更します。 スケールアウト: スケールアウトとは、アプリを実行する VM インスタンスの数を増やすことです。 App Service プランの価格レベルに応じて、最大 20 個のインスタンスまでスケールアウトできます。 自動スケーリングを使用すると、事前に定義したルールとスケジュールに基づいてインスタンス数を自動的にスケーリングできます。

このセクションのプレイブック コードでは、次の操作を定義します。

  • 既存の App Service プランのファクトを取得する
  • App Service プランを 3 つのワーカーを持つ S2 に更新します。

次のプレイブックを 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

ansible-playbook を使用してプレイブックを実行します

ansible-playbook webapp_scaleup.yml

プレイブックを実行すると、次の結果のような出力が表示されます。

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 

次のステップ