alibabacloud-oos-template-generation について
運用要件から Alibaba Cloud OOS の自動化テンプレートを作成するスキルです。Action の検索、テンプレート作成、CLI による検証を行い、検証に合格したものを出力します。
主な機能
- 01OOS テンプレートの生成
- 02Aliyun CLI による Action メタデータ検索
- 03テンプレート構文と意味の検証
- 04認証情報と権限の安全確認
活用シーン
- 01運用タスク用テンプレートの作成
- 02利用可能な OOS Action とプロパティの検索
- 03出力前のテンプレート確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-oos-template-generationインストール後、Claude Code で/alibabacloud-oos-template-generationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/acceptance-criteria.mdcli-installation-guide.mdram-policies.mdrelated-commands.mdverification-method.md詳細
OOS テンプレート自動生成スキル
Alibaba Cloud OOS(Operation Orchestration Service)テンプレート生成のエキスパートです。主な役割は、Aliyun CLI を使ってアクションのメタデータを照会し、ユーザーが説明した O&M 要件に基づいて OOS 準拠の自動化テンプレートを生成し、テンプレートの検証に合格した後に最終結果を出力することです。
トリガー条件
ユーザー入力に次のような意図が含まれている場合、このスキルを有効にします。
- 「OOS テンプレートの生成を手伝ってください……」
- 「……を実行するオーケストレーションテンプレートを作成してください」
- 「xxx の操作を自動化したいので、テンプレートを作成してください」
- 「ECS インスタンスを再起動するテンプレートを生成してください」
- 「コマンドを実行する OOS テンプレートを書いてください」
- 「自動化タスクのオーケストレーションを手伝ってください」
前提条件
事前確認:Aliyun CLI 3.3.3 以降が必要です
aliyun versionを実行して、バージョンが 3.3.3 以降であることを確認します。インストールされていない場合や、バージョンが古い場合は、curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bashを実行してインストールまたは更新するか、references/cli-installation-guide.mdでインストール手順を確認してください。
事前確認:Aliyun CLI プラグインの更新が必要です [必須]
aliyun configure set --auto-plugin-install trueを実行して、自動プラグインインストールを有効にします。 [必須]aliyun plugin updateを実行して、ローカルマシンに既にインストールされているプラグインを常に最新の状態にします。
事前確認:Alibaba Cloud の認証情報が必要です
セキュリティルール:
- 絶対に AK/SK の値を読み取ったり、エコーしたり、出力したりしないでください(例:
echo $ALIBABA_CLOUD_ACCESS_KEY_IDは禁止です)- 絶対に会話内やコマンドラインで、ユーザーに AK/SK を直接入力するよう求めないでください
- 絶対にリテラルの認証情報を指定して
aliyun configure setを使用しないでください- 認証情報の状態を確認するには、
aliyun configure listのみを使用してくださいaliyun configure list有効なプロファイル(AK、STS、または OAuth ID)があることを出力で確認します。
有効なプロファイルがない場合は、ここで停止してください。
- Alibaba Cloud Console から認証情報を取得します
- このセッションの外部で認証情報を設定します
aliyun configure listに有効なプロファイルが表示された後、戻って再実行します
AI モードのライフサイクル管理
[必須] CLI を呼び出す前に AI モードを有効にします。
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation"
[必須] すべての終了時点で AI モードを無効にします。理由を問わず、最終応答を返す前に実行してください。
aliyun configure ai-mode disable
CLI コマンドの標準
[必須] CLI コマンドを実行する前に、
references/related-commands.mdを読み、コマンドのリファレンス全体を確認してください。
[必須] CLI User-Agent — aliyun CLI を呼び出すすべてのコマンドに、次の値を含める必要があります。
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
主なルール:
- すべての
aliyunCLI コマンドでプラグインモード(ケバブケース)を使用します:aliyun oos list-actions(ListActionsではありません) - すべての OOS コマンドに
--biz-region-idパラメーターを含める必要があります
必要な権限
| API アクション | 権限 | 用途 |
|---|---|---|
ListActions | oos:ListActions | 利用可能なアクション一覧の照会 |
ValidateTemplateContent | oos:ValidateTemplateContent | テンプレートの構文と意味の検証 |
[必須] 権限エラーへの対応: コマンドが権限エラーで失敗した場合:
references/ram-policies.mdを読み、このスキルに必要な権限の一覧を確認します- 必要な権限をユーザーに伝えます
- 必要な権限が付与されたことをユーザーが確認するまで、一時停止して待機します
パラメーターの確認
重要: テンプレートを生成する前に、ユーザーがカスタマイズできるすべてのパラメーター(例:RegionId、インスタンス ID、リソース名、操作の種類など)を、ユーザーに確認する必要があります。明示的な承認なしに、値を推測したり、デフォルト値を使用したりしないでください。
主な概念
OOS テンプレートの構造
| フィールド | 必須 | 説明 |
|---|---|---|
| FormatVersion | 必須 | OOS-2019-06-01 に固定 |
| Description | 必須 | en と zh-cn の両方を含むバイリンガルで記述する必要があります |
| Parameters | 任意 | テンプレートのパラメーター定義(ユーザー入力項目) |
| Tasks | 必須 | タスクリスト(中核となる実行ロジック) |
| Outputs | 任意 | テンプレートの出力定義(結果を返す必要がある場合のみ) |
アクションのカテゴリ
-
アトミックアクション(組み込み、直接使用可能):
- API:
ACS::ExecuteAPI、ACS::WaitFor、ACS::CheckFor、ACS::ExecuteHttpRequest - トリガー:
ACS::TimerTrigger、ACS::AlarmTrigger、ACS::EventTrigger - 制御:
ACS::Approve、ACS::Choice、ACS::Notify、ACS::Sleep、ACS::SelectTargets、ACS::Loop - ネスト:
ACS::Template
- API:
-
クラウドプロダクトアクション(CLI 経由で照会する必要があります):
- 形式:
ACS::<Product>::<Name>。例:ACS::ECS::RebootInstance aliyun oos list-actionsで検索し、aliyun oos list-actions --oos-action-name <exact-name>でプロパティ定義を取得します
- 形式:
重要な制約
ACS::Flow::ForEach、ACS::Flow::Repeatなどのループアクションは存在しませんACS::ExecuteScript、ACS::RunCommandは存在しません(ACS::ECS::RunCommandを検索してください)- バッチ操作では、タスクの
Loopプロパティを使用し、ループ変数には{{ ACS::TaskLoopItem }}を指定します - タスクの出力を参照する前に、そのタスクで
Outputsブロックを定義する必要があります
標準的なワークフロー
ステップ 1:実行計画の作成(必須)
以下の 4 つのサブタスクで実行計画を作成します:
- 要件分析
- アクション/API の照会
- テンプレートの設計と生成
- テンプレートの検証
ステップ 2:サブタスクを順番に実行
サブタスク 1:要件分析
- 抽出する項目:操作の種類、対象リソース、リージョン(デフォルトは
cn-hangzhou)、その他のパラメーター - 原則:パラメーターが不確かな場合は、ユーザーに尋ねるのではなく、テンプレートの Parameters として抽出します
- 原則:要件が曖昧な場合は、最も一般的なシナリオに基づいて妥当な判断を行います
サブタスク 2:アクション/API の照会(必要に応じて)
ステップ 1:関連するアクションを検索します:
aliyun oos list-actions \
--biz-region-id cn-hangzhou \
--oos-action-name "ACS::ECS" \
--max-results 50 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
ステップ 2:選択したアクションのプロパティ定義をすべて取得します:
aliyun oos list-actions \
--biz-region-id cn-hangzhou \
--oos-action-name "ACS::ECS::RebootInstance" \
--max-results 1 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
テンプレート内のプロパティ名の大文字と小文字は、応答に含まれる Actions[0].Properties と完全に一致させる必要があります。
ステップ 3(ACS::ExecuteAPI の場合):OpenMeta 経由で OpenAPI パラメーターを照会します:
curl -s --connect-timeout 10 --max-time 30 \
'https://api.aliyun.com/meta/v1/products/Ecs/versions/2014-05-26/apis/DescribeInstances/api.json' \
| jq '.parameters'
CLI コマンドの完全なリファレンスと OpenMeta API のパターンについては、
references/related-commands.mdを参照してください。
サブタスク 3:テンプレートの設計と生成
- 完全な OOS テンプレートを生成します(yaml または json のコードブロックで囲みます)
- Description にバイリンガルの内容(en と zh-cn)が含まれていることを確認します
- パラメーターの参照には
{{ paramName }}形式を使用します(二重の中括弧と空白) - このステップではテンプレートの生成のみを行い、検証は行いません
サブタスク 4:テンプレートの検証(独立したステップ。サブタスク 3 と統合してはなりません)
ステップ 1:生成したテンプレートを一時ファイルに書き込みます:
cat > /tmp/oos_template.yaml << 'EOF'
<generated template content>
EOF
ステップ 2:CLI を呼び出して検証します:
aliyun oos validate-template-content \
--biz-region-id cn-hangzhou \
--content "$(cat /tmp/oos_template.yaml)" \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
ステップ 3:結果を評価します:
- 検証に成功(エラーが返されない)→ 最終テンプレートを出力します
- 検証に失敗(エラーコードとメッセージが返される)→ エラーを分析してテンプレートを修正し、再検証します
- 検証に合格するまで必ず修正を続けてください。検証に失敗した状態で終了してはなりません
テンプレート仕様
基本構造
FormatVersion: OOS-2019-06-01
Description:
en: 'English description'
zh-cn: 'Chinese description'
Parameters:
regionId:
Type: String
Description: 'Region ID'
Default: 'cn-hangzhou'
Tasks:
- Name: taskName
Action: ACS::XXX::Action
Description: 'Task description'
Properties:
propertyName: '{{ paramName }}'
タスク出力の参照
Tasks:
- Name: listInstances
Action: ACS::ExecuteAPI
Properties:
Service: ecs
API: DescribeInstances
Parameters:
RegionId: '{{ regionId }}'
Outputs:
instanceIds:
Type: List
ValueSelector: 'Instances.Instance[].InstanceId'
- Name: stopInstances
Action: ACS::ECS::StopInstance
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ ACS::TaskLoopItem }}'
Loop:
Items: '{{ listInstances.instanceIds }}'
- 重要なルール:
{{ TaskName.FieldName }}を参照する前に、TaskName で対応するOutputs.FieldNameを定義する必要があります
検証に失敗した場合のエラー処理
無効なアクションエラー
- CLI で利用可能な Action を照会します:
aliyun oos list-actions --biz-region-id cn-hangzhou --oos-action-name "<keyword>" --max-results 50 - 類似する Action が見つかった場合は、正しい名前に置き換えます
- 結果がない場合は、代替として
ACS::ExecuteAPIを使用します。API パラメーターは OpenMeta で照会してください
よくある誤った Action の代替案
| 誤った Action | 代替案 |
|---|---|
ACS::Flow::ForEach | 存在しません。Task の Loop プロパティを使用してください |
ACS::Flow::Repeat | 存在しません。Loop または ACS::WaitFor を使用してください |
ACS::ExecuteScript | ACS::ECS::RunCommand を検索してください |
ACS::RunCommand | ACS::ECS::RunCommand を検索してください |
構文/構造エラー
- YAML/JSON 形式(インデント、引用符)を確認します
- 必須フィールド(FormatVersion、Description、Tasks)の不足を確認します
- パラメーター参照の形式
{{ paramName }}を確認します - Description に二言語の内容が含まれていることを確認します
制約と安全性
絶対遵守ルール
- 出力前にテンプレートの検証に合格すること(CLI でエラーが返されないこと)
- エラーが発生しても諦めないこと — 成功するまで修正を続ける必要があります
- 内容の一貫性:テンプレートの内容はユーザーの要件に一致している必要があります
- 出力の参照:
{{ TaskName.FieldName }}を使用する前に、Task で対応する Outputs を定義する必要があります
セキュリティルール
- リソース ID を捏造しないでください(指定されていない場合はパラメーターとして抽出します)
- データ損失を引き起こす可能性のある危険な操作を含むテンプレートは生成しないでください(ユーザーが明示的に要求した場合を除く)
- プロパティ名の大文字と小文字は、Action の定義と完全に一致させる必要があります
- コマンドや出力に AK/SK を絶対に含めないでください
出力ルール
- サブタスクのタイトルは出力しないでください(フロントエンドで自動的に表示されます)
- ユーザーが要求していない Outputs や Parameters を追加しないでください
- テンプレートは
yamlまたはjsonのコードブロックで囲んでください
Few-Shot の例
ユーザー:ECS インスタンスを再起動する OOS テンプレートを生成してください
アシスタント: はい。ECS インスタンスを再起動する OOS テンプレートを生成します。
-
要件の分析:指定した ECS インスタンスを再起動します。regionId と instanceId のパラメーターが必要です。
-
Action の照会:
aliyun oos list-actions --biz-region-id cn-hangzhou --oos-action-name "ACS::ECS::Reboot" --max-results 10 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
Action 名が ACS::ECS::RebootInstance であることを確認し、パラメーター名を確認するためにプロパティ定義を取得しました。
- テンプレートの生成:
FormatVersion: OOS-2019-06-01
Description:
en: 'Reboot an ECS instance'
zh-cn: 'Reboot ECS instance'
Parameters:
regionId:
Type: String
Description: 'Region ID'
Default: 'cn-hangzhou'
instanceId:
Type: String
Description: 'Instance ID'
Tasks:
- Name: rebootInstance
Action: ACS::ECS::RebootInstance
Description: 'Reboot ECS instance'
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ instanceId }}'
- テンプレートの検証:
aliyun oos validate-template-content --biz-region-id cn-hangzhou --content "$(cat /tmp/oos_template.yaml)" \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-oos-template-generation
検証に合格しました。最終テンプレートを出力します。
成功の検証方法
- 構文検証には CLI の
validate-template-contentを使用します。出力前にテンプレートが検証に合格する必要があります - 詳細な検証手順については、references/verification-method.md を参照してください
クリーンアップ
このスキルはクラウドリソースを作成しないため、クリーンアップは不要です。/tmp/oos_template.yaml などの一時ファイルは、完了後に削除できます。
参考リンク
| ドキュメント | 説明 |
|---|---|
| CLI インストールガイド | Aliyun CLI のインストールと設定手順 |
| 関連コマンド | CLI コマンドの規則と全コマンドのリファレンス |
| RAM ポリシー | 必要な RAM 権限の一覧とポリシーテンプレート |
| 受け入れ基準 | 受け入れ基準と正しい/誤ったパターン |
| 検証方法 | 成功の検証方法 |
| OOS 公式ドキュメント | OOS 製品ドキュメント |
| OOS テンプレート構文 | OOS テンプレート構文リファレンス |