Alibaba Cloud CLI は、Alibaba Cloud OpenAPI 上に構築された管理ツールで、OpenAPI を呼び出して Alibaba Cloud のサービスを管理できます。このチュートリアルでは、Alibaba Cloud CLI を使用して、スケーリンググループ内の Elastic Compute Service (ECS) インスタンスに対してローリングアップデートタスクを実行します。また、アップデートが期待どおりに完了しなかった場合に、ローリングアップデートタスクをロールバックする方法についても説明します。
前提条件
Alibaba Cloud CLI がインストール済みであること。詳細については、「Alibaba Cloud CLI ドキュメント」のインストールガイドをご参照ください。
スケーリンググループが作成され、ECS インスタンスがスケーリンググループに追加済みであること。
(インスタンスイメージの更新にのみ適用) スケーリンググループのインスタンス構成ソースがスケーリング設定であること。
(OOS パッケージのインストールにのみ適用) ECS インスタンスにインストールする OOS パッケージが、事前に OOS で作成済みであること。詳細については、「カスタム拡張機能のバッチ管理」をご参照ください。
背景情報
ローリングアップデートは、複数の ECS インスタンスの設定をバッチで更新します。Alibaba Cloud CLI からローリングアップデートタスクを実行すると、そのタスクは Operation Orchestration Service (OOS) のパブリックテンプレートの実行として実行されます。詳細については、「ローリングアップデート」をご参照ください。
シナリオ
このチュートリアルは、3つの連続するステップと、必要に応じて実行するロールバックのステップで構成されています。各ローリングアップデートシナリオは、OOS のパブリックテンプレートの実行として実行されます。このチュートリアルでは、以下の手順を説明します:
ステップ 1: RAM ユーザーの作成と権限の付与
RAM ユーザーを作成します。
このステップでは、サンプルユーザーとして example という名前の RAM ユーザーを使用します。詳細については、「RAM ユーザーの作成」をご参照ください。
左側メニューで、アイデンティティ > ユーザー を選択します。
ユーザーの作成 をクリックします。
ユーザーの作成 ページで、ユーザー設定を指定し、OK をクリックします。
設定例を次の表に示します。
設定項目
設定例
[ログイン名]
example@sample.com
[表示名]
example
[アクセスモード]
[永続的な AccessKey を使用してアクセス] を選択します。RAM ユーザー用の AccessKey ペアが自動的に生成され、API または他の開発ツールを使用して Alibaba Cloud にアクセスできるようになります。
ユーザー情報 ページで、CSV ファイルのダウンロード をクリックします。
説明AccessKey Secret は作成時にのみ表示され、照会することはできません。機密を保持してください。AccessKey ペアが漏洩または紛失した場合は、新しい AccessKey ペアを作成する必要があります。
RAM ユーザーにリソースを操作する権限を付与します。
左側メニューで、アイデンティティ > ユーザー を選択します。
作成した RAM ユーザー example を見つけます。操作 列で、許可の追加 をクリックします。
権限を付与 ページで、ローリングアップデートタスクの実行に必要な権限を選択して、[OK] をクリックします。
設定例を次の表に示します。
設定項目
設定例
[リソース]
デフォルト値の Account を維持します。
プリンシパル
デフォルト値の example@sample.com を維持します。
[ポリシー]
以下のシステムポリシーを選択します:
AliyunECSFullAccess:ECS リソース (ECS インスタンスおよびその他の関連リソースを含む) を操作する権限。AliyunESSFullAccess:Auto Scaling リソース (スケーリンググループおよびその他の関連リソースを含む) を操作する権限。AliyunOOSFullAccess:CloudOps Orchestration Service リソース (実行およびその他の関連リソースを含む) を操作する権限。AliyunOSSFullAccess:Object Storage Service (OSS) リソース (バケットおよびその他の関連リソースを含む) を操作する権限。
ステップ 2: Alibaba Cloud CLI の設定と確認
ローカルコンピューターでターミナルまたはコマンドプロンプトを開きます。
Alibaba Cloud CLI を設定します。
次のコマンドを実行して設定ファイルを開きます:
aliyun configureプロンプトに従って、AccessKey ID、AccessKey Secret、デフォルトリージョン、その他の情報を入力します。

ステップ 3 のサンプルコマンドにはリージョンパラメーターが含まれていません。設定するデフォルトリージョンが、スケーリンググループが配置されているリージョンであることを確認してください。
次のコマンドを実行して、Alibaba Cloud CLI が利用可能であることを確認します:
aliyun ecs DescribeRegions
他の設定項目に関する詳細については、「Alibaba Cloud CLI ドキュメント」の Alibaba Cloud CLI の設定に関するセクションをご参照ください。
ステップ 3: Alibaba Cloud CLI を使用したローリングアップデートタスクの実行
サンプルコマンドでは、Linux や macOS の bash などの POSIX シェルの引用符と行継続の規則を使用しています。Windows PowerShell またはコマンドプロンプトを使用する場合は、そのシェルに合わせて引用符とエスケープ文字を調整してください。
すべてのサンプルコマンドでは、batchPauseOption を Automatic に設定しており、これにより各バッチが一時停止せずに実行されます。最初のバッチが実行された後にタスクを一時停止するには、batchPauseOption を FirstBatchPause に設定します。
Alibaba Cloud CLI コマンドを入力して、ローリングアップデートタスクを実行します。
サンプルコードで使用されている OOS テンプレートパラメーターの説明については、「リファレンス: 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 パッケージをインストールするコマンド例は次のとおりです。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\" }"
実行の詳細を表示して、ローリングアップデートタスクの結果を確認します。
CLI コマンドを実行してローリングアップデートタスクを実行すると、OOS で実行が自動的に作成されます。返された実行 ID を使用して、実行結果や出力などの実行の詳細を表示できます。次の例は、実行 ID を見つけてスクリプト実行の詳細を表示する方法を示しています。
コマンドから返された情報の中から、ローリングアップデートタスクの実行 ID を見つけます。
実行 ID の例を次の図に示します。

サンプル実行 ID をご自身のものに置き換えてから、次の Alibaba Cloud CLI コマンドを実行し、実行の詳細を表示します:
aliyun oos ListExecutions --ExecutionId exec-40e2e17ef7e04****
ローリングアップデートタスクのロールバック: ローリングアップデート中の異常処理
ローリングアップデートプロセス中に例外が発生した場合、またはローリングアップデート後に以前の設定を使用する必要がある場合は、ロールバックタスクを実行して、スケーリンググループ内の ECS インスタンスの設定を復元できます。このステップでは、既に実行されたローリングアップデートタスクをロールバックする方法を示すコマンド例を提供します。
コマンドから返された情報の中から、ローリングアップデートタスクの実行 ID を見つけます。
実行 ID の例を次の図に示します。

Alibaba Cloud CLI コマンドを入力して、ロールバックタスクを実行します。
サンプルコードで使用されている OOS テンプレートパラメーターの説明については、「リファレンス: 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\" }"OOS パッケージのインストールをロールバックするコマンド例は次のとおりです。OOS で作成された WordPress パッケージの履歴バージョンを ECS インスタンスに一様にインストールします。
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 テンプレートパラメーター
このセクションでは、サンプルコマンドで使用される OOS パブリックテンプレートのパラメーターをリストアップします。
ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup
パラメーター | 説明 |
invokeType | タスクのタイプ。有効な値:
|
scalingGroupId | タスクが実行されるスケーリンググループの ID。 |
scalingConfigurationId | スケーリンググループで有効なスケーリング設定の ID。 |
imageId | 現在のイメージを置き換えるために使用されるイメージの ID。 |
sourceImageId | ロールバックに使用されるイメージの ID。 |
OOSAssumeRole | タスクの実行に使用される RAM ロール。デフォルト値:OOSServiceRole。 |
enterProcess | タスク開始時に中断されるスケーリングプロセス。 |
exitProcess | タスク終了時に再開する必要があるスケーリングプロセス。 |
batchNumber | タスク実行時にスケーリンググループ内の ECS インスタンスが分割されるバッチの数。各バッチには少なくとも 1 つの ECS インスタンスが含まれます。 |
batchPauseOption | タスク実行の一時停止設定。有効な値:
|
sourceExecutionId | ロールバックタスクの実行時における、元のローリングアップデートタスクの実行 ID。 |
OOS コンソールで、より多くのパラメーターの説明を表示することもできます。たとえば、中国 (杭州) リージョンについては、「ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup」をご参照ください。
ACS-ESS-RollingUpdateByRunCommandInScalingGroup
パラメーター | 説明 |
invokeType | タスクのタイプ。有効な値:
|
scalingGroupId | タスクが実行されるスケーリンググループの ID。 |
commandType | 実行するスクリプトのタイプ。値 RunShellScript はシェルスクリプトを示します。 |
invokeScript | ローリングアップデートタスクの実行時に ECS インスタンスで実行されるスクリプト。 |
rollbackScript | ロールバックタスクの実行時に ECS インスタンスで実行されるスクリプト。 |
OOSAssumeRole | タスクの実行に使用される RAM ロール。デフォルト値:OOSServiceRole。 |
enterProcess | タスク開始時に中断されるスケーリングプロセス。 |
exitProcess | タスク終了時に再開する必要があるスケーリングプロセス。 |
batchNumber | タスク実行時にスケーリンググループ内の ECS インスタンスが分割されるバッチの数。各バッチには少なくとも 1 つの ECS インスタンスが含まれます。 |
batchPauseOption | タスク実行の一時停止設定。有効な値:
|
sourceExecutionId | ロールバックタスクの実行時における、元のローリングアップデートタスクの実行 ID。 |
OOS コンソールで、より多くのパラメーターの説明を表示することもできます。たとえば、中国 (杭州) リージョンについては、「ACS-ESS-RollingUpdateByRunCommandInScalingGroup」をご参照ください。
ACS-ESS-RollingUpdateByConfigureOOSPackage
パラメーター | 説明 |
invokeType | タスクのタイプ。有効な値:
|
scalingGroupId | タスクが実行されるスケーリンググループの ID。 |
packageName | パッケージの名前。 |
packageVersion | パッケージのバージョン。 |
action | パッケージを設定するために使用されるメソッド。有効な値:
デフォルト値:install。 |
OOSAssumeRole | タスクの実行に使用される RAM ロール。デフォルト値:OOSServiceRole。 |
enterProcess | タスク開始時に中断されるスケーリングプロセス。 |
exitProcess | タスク終了時に再開する必要があるスケーリングプロセス。 |
batchNumber | タスク実行時にスケーリンググループ内の ECS インスタンスが分割されるバッチの数。各バッチには少なくとも 1 つの ECS インスタンスが含まれます。 |
batchPauseOption | タスク実行の一時停止設定。有効な値:
|
sourceExecutionId | ロールバックタスクの実行時における、元のローリングアップデートタスクの実行 ID。 |
OOS コンソールで、より多くのパラメーターの説明を表示することもできます。たとえば、中国 (杭州) リージョンについては、「ACS-ESS-RollingUpdateByConfigureOOSPackage」をご参照ください。