すべてのプロダクト
Search
ドキュメントセンター

Auto Scaling:Alibaba Cloud CLIを使用したローリングアップデートタスクの実行

最終更新日:Sep 12, 2024

Alibaba Cloudコマンドラインインターフェイス (CLI) は、Alibaba Cloud OpenAPIに基づいて開発された管理ツールです。 Alibaba Cloud CLIを使用してAlibaba Cloud APIを呼び出し、Alibaba Cloudサービスを柔軟に管理およびスケーリングできます。 このトピックでは、Alibaba Cloud CLIを使用してローリングアップデートタスクを実行する方法について説明します。

前提条件

  • Alibaba Cloud CLIがインストールされています。 詳細については、「Alibaba Cloud CLI の概要」をご参照ください。

  • スケーリンググループが作成され、ECS (Elastic Compute Service) インスタンスがスケーリンググループに追加されます。

  • スケーリンググループのインスタンス設定ソースは、スケーリング設定です。 スケーリンググループ内のECSインスタンスのイメージを更新する場合は、この前提条件を満たす必要があります。

  • CloudOps Orchestration Service (OOS) パッケージが作成されます。 スケーリンググループのECSインスタンスにOOSパッケージをインストールする場合は、この前提条件を満たす必要があります。 詳細については、「複数のECSインスタンスのカスタムソフトウェアを一度に管理する」をご参照ください。

背景情報

ローリングアップデートタスクを使用して、複数のECSインスタンスの設定を同時に更新できます。 詳細については、「ローリング更新」をご参照ください。

手順

次のセクションでは、Alibaba Cloud CLIを使用して、スケーリンググループ内のECSインスタンスにイメージを更新し、スクリプトを実行し、OOSパッケージをインストールする方法について説明します。 次の手順を実行する必要があります。

手順1: RAMユーザーを作成し、RAMユーザーに権限を付与する

  1. Resource Access Management (RAM) コンソールにログインします。

  2. RAMユーザーを作成します。

    この例では、clitestという名前のRAMユーザーが作成されます。 詳細については、「RAM ユーザーの作成」をご参照ください。

    1. 左側のナビゲーションウィンドウで、アイデンティティ > ユーザーを選択します。

    2. ユーザーページで、ユーザーの作成をクリックします。

    3. ユーザーの作成ページで、プロンプトに従ってパラメーターを設定し、OKをクリックします。

      この例で使用するパラメーター設定を次の表に示します。

      パラメーター

      説明

      ログオン名

      example@sample.com

      表示名

      example

      アクセスモード

      [Open API Access] を選択します。

      RAMユーザーに対してAccessKeyペアが自動的に作成されます。 RAMユーザーは、API操作を呼び出すか、SDKを使用してAlibaba Cloudリソースにアクセスできます。

    4. ユーザー情報ページで、CSVファイルのダウンロードをクリックします。

      説明

      AccessKeyシークレットは、AccessKeyペアを作成した場合にのみ表示され、照会できません。 AccessKey シークレットは後で使用できるように保存しておくことを推奨します。 AccessKeyペアが漏洩または紛失した場合は、新しいAccessKeyペアを作成する必要があります。

  3. RAMユーザーにリソースを管理する権限を付与します。

    1. 左側のナビゲーションウィンドウで、アイデンティティ > ユーザーを選択します。

    2. 作成したclitestユーザーを見つけて、アクション列の権限の追加をクリックします。

    3. 権限付与パネルで、ローリング更新タスクの実行に必要な権限を選択し、権限の付与をクリックします。

      この例で使用するパラメーター設定を次の表に示します。

      パラメーター

      説明

      リソーススコープ

      値を [アカウント] に設定します。

      プリンシパル

      値をexample@sample.comに設定します。

      ポリシー

      次のシステムポリシーを選択します。

      • AliyunECSFullAccess: ECSインスタンスなどのECSリソースを管理する権限を付与します。

      • AliyunESSFullAccess: スケーリンググループなどのAuto Scalingリソースを管理する権限を付与します。

      • AliyunOOSFullAccess: 実行などのOOSリソースを管理する権限を付与します。CloudOps Orchestration Service

      • AliyunOSSFullAccess: バケットなどのObject Storage Service (OSS) リソースを管理する権限を付与します。

ステップ2: Alibaba Cloud CLIの設定と検証

設定パラメーターの詳細については、「Alibaba Cloud CLIの設定」をご参照ください。

  1. オンプレミスのコンピューターでAlibaba Cloud CLIを開きます。

  2. Alibaba Cloud CLIを設定します。

    1. 次のコマンドを実行して、設定ファイルを開きます。

      aliyun configure
    2. プロンプトに従って、AccessKey IDとAccessKeyシークレットを入力します。

      cli-config

  3. 次のコマンドを実行して、Alibaba Cloud CLIが利用可能かどうかを確認します。

    aliyun ecs DescribeRegions

    このコマンドは、Alibaba Cloud CLIがサポートされているリージョンを照会するために使用されます。 リージョン情報が返された場合、コマンドは正常に実行されます。 コマンド出力の例を次の図に示します。cli-example

ステップ3: Alibaba Cloud CLIを使用してローリングアップデートタスクを実行する

このステップでは、サンプルコマンドを使用して、スケーリンググループ内のECSインスタンスにイメージを更新し、スクリプトを実行し、OOSパッケージをインストールする方法を示します。

  1. Alibaba Cloud CLIコマンドを実行して、ローリングアップデートタスクを実行します。

    コード内のOOSテンプレートパラメーターの詳細については、「テンプレートパラメーター」をご参照ください。

    • 次のサンプルコードは、スケーリンググループ内のECSインスタンスのイメージをAlibaba Cloud Linux 2.1903 LTS 64ビットに更新する方法の例を示しています。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup --Parameters "{
              \"invokeType\": \"invoke\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"scalingConfigurationId\": \"asc-bp1bx8mzur534edp****\",
              \"imageId\": \"aliyun_2_1903_x64_20G_alibase_20200529.vhd\",
              \"sourceImageId\": \"centos_7_8_x64_20G_alibase_20200717.vhd\",
              \"OOSAssumeRole\": \"\",
              \"enterProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"exitProcess\":  [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
    • 次のサンプルコードは、スケーリンググループ内のECSインスタンスでdf -hおよびifconfigシェルコマンドを実行して、ECSインスタンスのディスクおよびネットワーク構成を表示する方法の例を示しています。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByRunCommandInScalingGroup --Parameters "{
              \"invokeType\": \"invoke\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"commandType\": \"RunShellScript\",
              \"invokeScript\": \"df -h\nifconfig\",
              \"rollbackScript\": \"df -h\nifconfig\",
              \"OOSAssumeRole\": \"\",
              \"exitProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"enterProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
    • 次のサンプルコードは、OOSテンプレートで作成されたWordPressソフトウェアパッケージをスケーリンググループのECSインスタンスにインストールする方法の例を示しています。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByConfigureOOSPackage --Parameters "{
              \"invokeType\": \"invoke\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"packageName\": \"wordpress\",
              \"packageVersion\": \"v4\",
              \"action\": \"install\",
              \"OOSAssumeRole\": \"\",
              \"enterProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"exitProcess\": [
                \"ScaleIn\",
                \"ScaleOut\",
                \"HealthCheck\",
                \"AlarmNotification\",
                \"ScheduledAction\"
              ],
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
  2. 実行の詳細を表示します。

    CLIコマンドを実行してローリング更新タスクを実行すると、OOSで実行が自動的に作成されます。 返された実行IDに基づいて目的の実行を見つけ、実行結果や出力など、実行の詳細を表示できます。 次の例は、実行IDを取得して実行の詳細を表示する方法を示しています。

    1. コマンド出力でローリング更新タスクの実行IDを見つけます。

      次の図に、実行IDのサンプルを示します。exec-id

    2. 次のAlibaba Cloud CLIコマンドを実行して、実行の詳細を表示します。

      aliyun oos ListExecutions --ExecutionId exec-40e2e17ef7e04****

      サンプル実行の詳細を次の図に示します。exec-outputs

ロールバックタスクを実行して、ローリング更新タスクの例外を処理する

ローリングアップデートタスクの実行時に例外が発生した場合、またはローリングアップデートタスクの実行後に以前の設定を使用する場合は、ロールバックタスクを実行してECSインスタンスの設定を復元できます。 このセクションでは、サンプルコマンドを使用して、実行されるローリング更新タスクをロールバックする方法を示します。

  1. コマンド出力でローリング更新タスクの実行IDを見つけます。

    次の図に、実行IDのサンプルを示します。exec-id

  2. Alibaba Cloud CLIコマンドを実行して、ロールバックタスクを実行します。

    コード内のOOSテンプレートパラメーターの詳細については、「テンプレートパラメーター」をご参照ください。

    説明

    ロールバックタスクを実行すると、ローリングアップデートタスクに基づいてロールバックする必要があるECSインスタンスが自動的に検出され、スケーリンググループのスケーリングプロセスが中断または再開されます。 したがって、一部のパラメータを設定する必要はありません。

    • 次のサンプルコードは、スケーリンググループ内のECSインスタンスのイメージをCentOS 7.8 64ビットにロールバックする方法の例を示しています。

      aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup --Parameters "{
              \"invokeType\": \"rollback\",
              \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
              \"scalingConfigurationId\": \"asc-bp1bx8mzur534edp****\",
              \"sourceImageId\": \"centos_7_8_x64_20G_alibase_20200717.vhd\",
              \"sourceExecutionId\": \"exec-83dba59be77d430****\",
              \"OOSAssumeRole\": \"\",
              \"batchNumber\": 2,
              \"batchPauseOption\": \"Automatic\"
            }"
    • 次のサンプルコードは、ECSインスタンスでロールバックスクリプトを実行する方法の例を示しています。

説明

df -hおよびifconfigシェルコマンドは引き続き使用されます。 ビジネス要件に基づいてスクリプトを変更できます。

aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByRunCommandInScalingGroup --Parameters "{
        \"invokeType\": \"rollback\",
        \"commandType\": \"RunShellScript\",
        \"rollbackScript\": \"df -h\nifconfig\",
        \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
        \"sourceExecutionId\": \"exec-40e2e17ef7e046****\",
        \"OOSAssumeRole\": \"\",
        \"batchNumber\": 2,
        \"batchPauseOption\": \"Automatic\"
      }"
  • 次のサンプルコードは、ECSインスタンスのOOSテンプレートで作成されたWordPressソフトウェアパッケージを以前のバージョンにロールバックする方法の例を示しています。

    aliyun oos StartExecution --TemplateName ACS-ESS-RollingUpdateByConfigureOOSPackage --Parameters "{
            \"invokeType\": \"rollback\",
            \"scalingGroupId\": \"asg-bp18p2yfxow2dloq****\",
            \"packageVersion\": \"v3\",
            \"packageName\": \"wordpress\",
            \"sourceExecutionId\": \"exec-f4e61f2f21fe490****\",
            \"OOSAssumeRole\": \"\",
            \"batchNumber\": 2,
            \"batchPauseOption\": \"Automatic\"
          }"
  • 実行の詳細を表示します。

    CLIコマンドを実行してロールバックタスクを実行すると、OOSで実行が自動的に作成されます。 手順3のメソッドを使用して、実行結果や出力など、実行の詳細を表示することもできます。

テンプレートパラメーター

次の表に、上記の例で使用されているOOSパブリックテンプレートのパラメーターを示します。

表 1. ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroupテンプレートのパラメーター

パラメーター

説明

invokeType

タスクの ID を設定します。 有効な値:

  • invoke: ローリング更新タスク

  • rollback: ロールバックタスク

scalingGroupId

タスクを実行するスケーリンググループのID。

scalingConfigurationId

スケーリンググループ内のアクティブなスケーリング設定のID。

imageId

現在のイメージを置き換えるイメージのID。

sourceImageId

ロールバックタスクに使用するイメージのID。

OOSAssumeRole

タスクの実行に使用するRAMロール。 デフォルト値: OOSServiceRole。

enterProcess

タスクが実行される前に一時停止するスケーリングプロセス。

exitProcess

タスクが完了したときに再開するスケーリングプロセス。

batchNumber

スケーリンググループ内のECSインスタンスが分割されているバッチの数。 タスクはバッチで実行されます。 各バッチには、少なくとも1つのECSインスタンスが含まれます。

batchPauseOption

タスクを中断するかどうかと中断方法を指定します。 有効な値:

  • 自動: タスクは中断することなく実行されます。

  • FirstBatchPause: 実行の最初のバッチが完了すると、タスクは中断されます。

  • EveryBatchPause: 実行の各バッチが完了すると、タスクは中断されます。

sourceExecutionId

ロールバックタスクが実行されたときのソースローリング更新タスクの実行ID。

説明

OOSコンソールにログインして、その他のパラメーターを表示できます。 たとえば、中国 (杭州) リージョンでサポートされているパラメーターを表示するには、「ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup」をご参照ください。

表 2. ACS-ESS-RollingUpdateByRunCommandInScalingGroupテンプレートのパラメーター

パラメーター

説明

invokeType

タスクの ID を設定します。 有効な値:

  • invoke: ローリング更新タスク

  • rollback: ロールバックタスク

scalingGroupId

タスクを実行するスケーリンググループのID。

commandType

実行するスクリプトのタイプ。 RunShellScriptの値は、シェルスクリプトを指定します。

invokeScript

ローリングアップデートタスク中にECSインスタンスで実行するスクリプト。

rollbackScript

ロールバックタスク中にECSインスタンスで実行するスクリプト。

OOSAssumeRole

タスクの実行に使用するRAMロール。 デフォルト値: OOSServiceRole。

enterProcess

タスクが実行される前に一時停止するスケーリングプロセス。

exitProcess

タスクが完了したときに再開するスケーリングプロセス。

batchNumber

スケーリンググループ内のECSインスタンスが分割されているバッチの数。 タスクはバッチで実行されます。 各バッチには、少なくとも1つのECSインスタンスが含まれます。

batchPauseOption

タスクを中断するかどうかと中断方法を指定します。 有効な値:

  • 自動: タスクは中断することなく実行されます。

  • FirstBatchPause: 実行の最初のバッチが完了すると、タスクは中断されます。

  • EveryBatchPause: 実行の各バッチが完了すると、タスクは中断されます。

sourceExecutionId

ロールバックタスクが実行されたときのソースローリング更新タスクの実行ID。

説明

OOSコンソールにログインして、その他のパラメーターを表示できます。 たとえば、中国 (杭州) リージョンでサポートされているパラメーターを表示するには、「ACS-ESS-RollingUpdateByRunCommandInScalingGroup」をご参照ください。

表 3. ACS-ESS-RollingUpdateByConfigureOOSPackageテンプレートのパラメータ

パラメーター

説明

invokeType

タスクの ID を設定します。 有効な値:

  • invoke: ローリング更新タスク

  • rollback: ロールバックタスク

scalingGroupId

タスクを実行するスケーリンググループのID。

packageName

ソフトウェアパッケージの名前。

packageVersion

ソフトウェアパッケージのバージョン。

action

ソフトウェアパッケージを構成するモード。 有効な値:

  • install

  • アンインストール

デフォルト値: install。

OOSAssumeRole

タスクの実行に使用するRAMロール。 デフォルト値: OOSServiceRole。

enterProcess

タスクが実行される前に一時停止するスケーリングプロセス。

exitProcess

タスクが完了したときに再開するスケーリングプロセス。

batchNumber

スケーリンググループ内のECSインスタンスが分割されているバッチの数。 タスクはバッチで実行されます。 各バッチには、少なくとも1つのECSインスタンスが含まれます。

batchPauseOption

タスクを中断するかどうかと中断方法を指定します。 有効な値:

  • 自動: タスクは中断することなく実行されます。

  • FirstBatchPause: 実行の最初のバッチが完了すると、タスクは中断されます。

  • EveryBatchPause: 実行の各バッチが完了すると、タスクは中断されます。

sourceExecutionId

ロールバックタスクが実行されたときのソースローリング更新タスクの実行ID。

説明

OOSコンソールにログインして、その他のパラメーターを表示できます。 たとえば、中国 (杭州) リージョンでサポートされているパラメーターを表示するには、「ACS-ESS-RollingUpdateByConfigureOOSPackage」をご参照ください。