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ユーザーに権限を付与する
RAMユーザーを作成します。
この例では、clitestという名前のRAMユーザーが作成されます。 詳細については、「RAM ユーザーの作成」をご参照ください。
左側のナビゲーションウィンドウで、 を選択します。
ユーザーページで、ユーザーの作成をクリックします。
ユーザーの作成ページで、プロンプトに従ってパラメーターを設定し、OKをクリックします。
この例で使用するパラメーター設定を次の表に示します。
パラメーター
説明
ログオン名
example@sample.com
表示名
example
アクセスモード
[Open API Access] を選択します。
RAMユーザーに対してAccessKeyペアが自動的に作成されます。 RAMユーザーは、API操作を呼び出すか、SDKを使用してAlibaba Cloudリソースにアクセスできます。
ユーザー情報ページで、CSVファイルのダウンロードをクリックします。
説明AccessKeyシークレットは、AccessKeyペアを作成した場合にのみ表示され、照会できません。 AccessKey シークレットは後で使用できるように保存しておくことを推奨します。 AccessKeyペアが漏洩または紛失した場合は、新しいAccessKeyペアを作成する必要があります。
RAMユーザーにリソースを管理する権限を付与します。
左側のナビゲーションウィンドウで、 を選択します。
作成したclitestユーザーを見つけて、アクション列の権限の追加をクリックします。
権限付与パネルで、ローリング更新タスクの実行に必要な権限を選択し、権限の付与をクリックします。
この例で使用するパラメーター設定を次の表に示します。
パラメーター
説明
リソーススコープ
値を [アカウント] に設定します。
プリンシパル
値を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の設定」をご参照ください。
オンプレミスのコンピューターでAlibaba Cloud CLIを開きます。
Alibaba Cloud CLIを設定します。
次のコマンドを実行して、設定ファイルを開きます。
aliyun configure
プロンプトに従って、AccessKey IDとAccessKeyシークレットを入力します。
次のコマンドを実行して、Alibaba Cloud CLIが利用可能かどうかを確認します。
aliyun ecs DescribeRegions
このコマンドは、Alibaba Cloud CLIがサポートされているリージョンを照会するために使用されます。 リージョン情報が返された場合、コマンドは正常に実行されます。 コマンド出力の例を次の図に示します。
ステップ3: Alibaba Cloud CLIを使用してローリングアップデートタスクを実行する
このステップでは、サンプルコマンドを使用して、スケーリンググループ内の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シェルコマンドを実行して、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\" }"
実行の詳細を表示します。
CLIコマンドを実行してローリング更新タスクを実行すると、OOSで実行が自動的に作成されます。 返された実行IDに基づいて目的の実行を見つけ、実行結果や出力など、実行の詳細を表示できます。 次の例は、実行IDを取得して実行の詳細を表示する方法を示しています。
コマンド出力でローリング更新タスクの実行IDを見つけます。
次の図に、実行IDのサンプルを示します。
次のAlibaba Cloud CLIコマンドを実行して、実行の詳細を表示します。
aliyun oos ListExecutions --ExecutionId exec-40e2e17ef7e04****
サンプル実行の詳細を次の図に示します。
ロールバックタスクを実行して、ローリング更新タスクの例外を処理する
ローリングアップデートタスクの実行時に例外が発生した場合、またはローリングアップデートタスクの実行後に以前の設定を使用する場合は、ロールバックタスクを実行してECSインスタンスの設定を復元できます。 このセクションでは、サンプルコマンドを使用して、実行されるローリング更新タスクをロールバックする方法を示します。
コマンド出力でローリング更新タスクの実行IDを見つけます。
次の図に、実行IDのサンプルを示します。
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 を設定します。 有効な値:
|
scalingGroupId | タスクを実行するスケーリンググループのID。 |
scalingConfigurationId | スケーリンググループ内のアクティブなスケーリング設定のID。 |
imageId | 現在のイメージを置き換えるイメージのID。 |
sourceImageId | ロールバックタスクに使用するイメージのID。 |
OOSAssumeRole | タスクの実行に使用するRAMロール。 デフォルト値: OOSServiceRole。 |
enterProcess | タスクが実行される前に一時停止するスケーリングプロセス。 |
exitProcess | タスクが完了したときに再開するスケーリングプロセス。 |
batchNumber | スケーリンググループ内のECSインスタンスが分割されているバッチの数。 タスクはバッチで実行されます。 各バッチには、少なくとも1つのECSインスタンスが含まれます。 |
batchPauseOption | タスクを中断するかどうかと中断方法を指定します。 有効な値:
|
sourceExecutionId | ロールバックタスクが実行されたときのソースローリング更新タスクの実行ID。 |
OOSコンソールにログインして、その他のパラメーターを表示できます。 たとえば、中国 (杭州) リージョンでサポートされているパラメーターを表示するには、「ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup」をご参照ください。
表 2. ACS-ESS-RollingUpdateByRunCommandInScalingGroupテンプレートのパラメーター
パラメーター | 説明 |
invokeType | タスクの ID を設定します。 有効な値:
|
scalingGroupId | タスクを実行するスケーリンググループのID。 |
commandType | 実行するスクリプトのタイプ。 RunShellScriptの値は、シェルスクリプトを指定します。 |
invokeScript | ローリングアップデートタスク中にECSインスタンスで実行するスクリプト。 |
rollbackScript | ロールバックタスク中にECSインスタンスで実行するスクリプト。 |
OOSAssumeRole | タスクの実行に使用するRAMロール。 デフォルト値: OOSServiceRole。 |
enterProcess | タスクが実行される前に一時停止するスケーリングプロセス。 |
exitProcess | タスクが完了したときに再開するスケーリングプロセス。 |
batchNumber | スケーリンググループ内のECSインスタンスが分割されているバッチの数。 タスクはバッチで実行されます。 各バッチには、少なくとも1つのECSインスタンスが含まれます。 |
batchPauseOption | タスクを中断するかどうかと中断方法を指定します。 有効な値:
|
sourceExecutionId | ロールバックタスクが実行されたときのソースローリング更新タスクの実行ID。 |
OOSコンソールにログインして、その他のパラメーターを表示できます。 たとえば、中国 (杭州) リージョンでサポートされているパラメーターを表示するには、「ACS-ESS-RollingUpdateByRunCommandInScalingGroup」をご参照ください。
表 3. ACS-ESS-RollingUpdateByConfigureOOSPackageテンプレートのパラメータ
パラメーター | 説明 |
invokeType | タスクの ID を設定します。 有効な値:
|
scalingGroupId | タスクを実行するスケーリンググループのID。 |
packageName | ソフトウェアパッケージの名前。 |
packageVersion | ソフトウェアパッケージのバージョン。 |
action | ソフトウェアパッケージを構成するモード。 有効な値:
デフォルト値: install。 |
OOSAssumeRole | タスクの実行に使用するRAMロール。 デフォルト値: OOSServiceRole。 |
enterProcess | タスクが実行される前に一時停止するスケーリングプロセス。 |
exitProcess | タスクが完了したときに再開するスケーリングプロセス。 |
batchNumber | スケーリンググループ内のECSインスタンスが分割されているバッチの数。 タスクはバッチで実行されます。 各バッチには、少なくとも1つのECSインスタンスが含まれます。 |
batchPauseOption | タスクを中断するかどうかと中断方法を指定します。 有効な値:
|
sourceExecutionId | ロールバックタスクが実行されたときのソースローリング更新タスクの実行ID。 |
OOSコンソールにログインして、その他のパラメーターを表示できます。 たとえば、中国 (杭州) リージョンでサポートされているパラメーターを表示するには、「ACS-ESS-RollingUpdateByConfigureOOSPackage」をご参照ください。