Alibaba Cloud CLI は Alibaba Cloud API 上に構築された柔軟で拡張可能な管理ツールです。API を呼び出して Alibaba Cloud リソースを管理できます。このトピックでは、Alibaba Cloud CLI を使用してローリングアップデートを実行する方法について説明します。
前提条件
Alibaba Cloud CLI がインストールされていること。詳細については、「Alibaba Cloud CLI ドキュメント」のインストールガイドをご参照ください。
ECS インスタンスを含むスケーリンググループがあること。
スケーリンググループ内の ECS インスタンスのイメージを更新するには、そのグループがスケーリング設定を使用している必要があります。
ECS インスタンスに OOS パッケージをインストールするには、事前に CloudOps Orchestration Service (OOS) でパッケージを作成しておく必要があります。詳細については、「カスタム拡張機能の一括管理」をご参照ください。
背景情報
ローリングアップデートを使用すると、単一のタスクで複数の ECS インスタンスをバッチ単位で更新できます。詳細については、「ローリングアップデート」をご参照ください。
操作手順
このトピックでは、Alibaba Cloud CLI を使用してスケーリンググループ内の ECS インスタンスのイメージを更新し、ECS インスタンスでスクリプトを実行し、ECS インスタンスに OOS パッケージをインストールする方法を説明します。
ステップ 1:RAM ユーザーの作成と権限付与
RAM コンソールにログインします。
RAM ユーザーを作成します。
この例では、clitest という名前の RAM ユーザーを作成します。詳細については、「RAM ユーザーの作成」をご参照ください。
左側のナビゲーションウィンドウで、 を選択します。
ユーザーの作成 をクリックします。
ユーザーの作成 ページで、ユーザー設定を指定し、OK をクリックします。
以下の表は、設定例を示しています。
パラメーター
例
ログイン名
example@sample.com
表示名
example
アクセスモード
Using permanent AccessKey to access を選択します。
RAM ユーザー用の AccessKey ペアが自動的に生成され、API オペレーションを呼び出すか、他の開発ツールを使用して Alibaba Cloud リソースにアクセスできます。
ユーザー情報 ページで、CSV ファイルのダウンロード をクリックします。
説明AccessKey Secret は作成時のみ表示され、後から取得することはできません。AccessKey Secret は安全に保管してください。AccessKey ペアを紛失または漏洩した場合は、新しいものを作成してください。
RAM ユーザーにリソース管理の権限を付与します。
左側のナビゲーションウィンドウで、 を選択します。
作成した RAM ユーザー clitest を見つけ、許可の追加 を 操作 列でクリックします。
Add Permissions ページで、ローリングアップデートに必要な権限を選択し、Grant permissions をクリックします。
以下の表は、設定例を示しています。
パラメーター
例
リソース
デフォルト値の Account をそのまま使用します。
権限付与の対象
デフォルト値の example@sample.com をそのまま使用します。
ポリシー
以下のシステムポリシーを選択します。
AliyunECSFullAccess:ECS インスタンスを含む ECS リソースを管理する権限を付与します。
AliyunESSFullAccess:スケーリンググループを含む Auto Scaling リソースを管理する権限を付与します。
AliyunOOSFullAccess:CloudOps Orchestration Service (OOS) の実行回数を含む OOS リソースを管理する権限を付与します。
AliyunOSSFullAccess:バケットを含む Object Storage Service リソースを管理する権限を付与します。
ステップ 2:Alibaba Cloud CLI の設定と検証
設定項目の詳細については、「Alibaba Cloud CLI ドキュメント」の「Alibaba Cloud CLI の設定」セクションをご参照ください。
ローカルマシンでコマンドラインツールを開きます。
Alibaba Cloud CLI を設定します。
次のコマンドを実行して設定ファイルを開きます。
aliyun configureプロンプトに従って、AccessKey ID や AccessKey Secret などの情報を入力します。

次のコマンドを実行して Alibaba Cloud CLI の設定を検証します。
aliyun ecs DescribeRegionsこのコマンドはサポートされているリージョンを照会します。リージョンのリストが返された場合、設定は正しいです。次の図は、出力例を示しています。

ステップ 3:ローリングアップデートの実行
このステップでは、スケーリンググループ内の ECS インスタンスのイメージを更新し、ECS インスタンスでスクリプトを実行し、ECS インスタンスに OOS パッケージをインストールするためのサンプルコマンドを提供します。
ローリングアップデートを実行する 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 を実行し、インスタンスのディスクおよびネットワーク構成情報を表示します。
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\" }"
実行の詳細を表示します。
ローリングアップデートコマンドを実行すると、OOS 実行が自動的に作成されます。返された実行 ID を使用して、結果や出力などの詳細を表示できます。次の例は、スクリプトの実行 ID を取得し、実行の詳細を表示する方法を示しています。
返された情報からローリングアップデートの実行 ID を見つけます。
次の図は、実行 ID の例を示しています。

次の Alibaba Cloud CLI コマンドを実行して、実行の詳細を表示します。
aliyun oos ListExecutions --ExecutionId exec-40e2e17ef7e04****次の図は、実行の詳細例を示しています。

ロールバック:例外処理
ローリングアップデート中に例外が発生した場合、または以前の構成に戻す必要がある場合は、ロールバックを実行できます。ロールバックにより、スケーリンググループ内の ECS インスタンスの元の構成が復元されます。このステップでは、ローリングアップデートをロールバックするためのサンプルコマンドを提供します。
返された情報からローリングアップデートの実行 ID を見つけます。
次の図は、実行 ID の例を示しています。

ロールバックを実行する Alibaba Cloud CLI コマンドを入力します。
サンプルコードで使用されている OOS テンプレートパラメーターの詳細については、「テンプレートパラメーター」をご参照ください。
説明ロールバックを実行すると、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 インスタンスに WordPress パッケージの以前のバージョンをインストールすることで、OOS パッケージのインストールをロールバックします。
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 で説明した方法を使用して、結果や出力などの実行の詳細を表示できます。
テンプレートパラメーター
このセクションでは、例で使用されているパブリックテンプレートのパラメーターについて説明します。
表 1. ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup パラメーター
パラメーター | 説明 |
invokeType | タスクタイプ。有効値:
|
scalingGroupId | 対象のスケーリンググループの ID。 |
scalingConfigurationId | スケーリンググループ内のアクティブなスケーリング設定の ID。 |
imageId | 更新用の新しいイメージの ID。 |
sourceImageId | ロールバック時に復元する元のイメージの ID。 |
OOSAssumeRole | タスクを実行するために使用される RAM ロール。デフォルト値:OOSServiceRole。 |
enterProcess | タスク開始時に一時停止するスケーリングプロセス。 |
exitProcess | タスク完了時に再開するスケーリングプロセス。 |
batchNumber | このタスクで ECS インスタンスを分割するバッチ数。各バッチには少なくとも 1 つのインスタンスを含める必要があります。 |
batchPauseOption | タスクの一時停止設定。有効値:
|
sourceExecutionId | ロールバックする元の実行の ID。このパラメーターはロールバックに必須です。 |
パラメーターの詳細については、OOS コンソールにもアクセスできます。中国 (杭州) リージョンのパラメーター説明を表示するには、「ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup」をご参照ください。
表 2. ACS-ESS-RollingUpdateByRunCommandInScalingGroup パラメーター
パラメーター | 説明 |
invokeType | タスクタイプ。有効値:
|
scalingGroupId | 対象のスケーリンググループの ID。 |
commandType | 実行するスクリプトのタイプ。RunShellScript はシェルスクリプトを示します。 |
invokeScript | ローリングアップデート中に ECS インスタンスで実行するスクリプト。 |
rollbackScript | ロールバック中に ECS インスタンスで実行するスクリプト。 |
OOSAssumeRole | タスクを実行するために使用される RAM ロール。デフォルト値:OOSServiceRole。 |
enterProcess | タスク開始時に一時停止するスケーリングプロセス。 |
exitProcess | タスク完了時に再開するスケーリングプロセス。 |
batchNumber | このタスクで ECS インスタンスを分割するバッチ数。各バッチには少なくとも 1 つのインスタンスを含める必要があります。 |
batchPauseOption | タスクの一時停止設定。有効値:
|
sourceExecutionId | ロールバックする元の実行の ID。このパラメーターはロールバックに必須です。 |
パラメーターの詳細については、OOS コンソールにもアクセスできます。中国 (杭州) リージョンのパラメーター説明を表示するには、「ACS-ESS-RollingUpdateByRunCommandInScalingGroup」をご参照ください。
表 3. ACS-ESS-RollingUpdateByConfigureOOSPackage パラメーター
パラメーター | 説明 |
invokeType | タスクタイプ。有効値:
|
scalingGroupId | 対象のスケーリンググループの ID。 |
packageName | パッケージ名。 |
packageVersion | パッケージのバージョン。 |
action | パッケージに対して実行する操作。有効値:
デフォルト値:install。 |
OOSAssumeRole | タスクを実行するために使用される RAM ロール。デフォルト値:OOSServiceRole。 |
enterProcess | タスク開始時に一時停止するスケーリングプロセス。 |
exitProcess | タスク完了時に再開するスケーリングプロセス。 |
batchNumber | このタスクで ECS インスタンスを分割するバッチ数。各バッチには少なくとも 1 つのインスタンスを含める必要があります。 |
batchPauseOption | タスクの一時停止設定。有効値:
|
sourceExecutionId | ロールバックする元の実行の ID。このパラメーターはロールバックに必須です。 |
パラメーターの詳細については、OOS コンソールにもアクセスできます。中国 (杭州) リージョンのパラメーター説明を表示するには、「ACS-ESS-RollingUpdateByConfigureOOSPackage」をご参照ください。