mcpField
A
alibabacloud-oos-template-generation

alibabacloud-oos-template-generation

github.com/aliyunクラウド・DevOps28180 回インストール1 日前に更新
リポジトリ

alibabacloud-oos-template-generation について

運用要件から Alibaba Cloud OOS の自動化テンプレートを作成するスキルです。Action の検索、テンプレート作成、CLI による検証を行い、検証に合格したものを出力します。

主な機能

  1. 01OOS テンプレートの生成
  2. 02Aliyun CLI による Action メタデータ検索
  3. 03テンプレート構文と意味の検証
  4. 04認証情報と権限の安全確認

活用シーン

  1. 01運用タスク用テンプレートの作成
  2. 02利用可能な OOS Action とプロパティの検索
  3. 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.md
cli-installation-guide.md
ram-policies.md
related-commands.md
verification-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)があることを出力で確認します。

有効なプロファイルがない場合は、ここで停止してください。

  1. Alibaba Cloud Console から認証情報を取得します
  2. このセッションの外部で認証情報を設定します
  3. 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

主なルール:

  • すべての aliyun CLI コマンドでプラグインモード(ケバブケース)を使用します:aliyun oos list-actions(ListActions ではありません)
  • すべての OOS コマンドに --biz-region-id パラメーターを含める必要があります

必要な権限

API アクション権限用途
ListActionsoos:ListActions利用可能なアクション一覧の照会
ValidateTemplateContentoos:ValidateTemplateContentテンプレートの構文と意味の検証

[必須] 権限エラーへの対応: コマンドが権限エラーで失敗した場合:

  1. references/ram-policies.md を読み、このスキルに必要な権限の一覧を確認します
  2. 必要な権限をユーザーに伝えます
  3. 必要な権限が付与されたことをユーザーが確認するまで、一時停止して待機します

パラメーターの確認

重要: テンプレートを生成する前に、ユーザーがカスタマイズできるすべてのパラメーター(例:RegionId、インスタンス ID、リソース名、操作の種類など)を、ユーザーに確認する必要があります。明示的な承認なしに、値を推測したり、デフォルト値を使用したりしないでください。


主な概念

OOS テンプレートの構造
フィールド必須説明
FormatVersion必須OOS-2019-06-01 に固定
Description必須en と zh-cn の両方を含むバイリンガルで記述する必要があります
Parameters任意テンプレートのパラメーター定義(ユーザー入力項目)
Tasks必須タスクリスト(中核となる実行ロジック)
Outputs任意テンプレートの出力定義(結果を返す必要がある場合のみ)
アクションのカテゴリ
  1. アトミックアクション(組み込み、直接使用可能):

    • 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
  2. クラウドプロダクトアクション(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 つのサブタスクで実行計画を作成します:

  1. 要件分析
  2. アクション/API の照会
  3. テンプレートの設計と生成
  4. テンプレートの検証
ステップ 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 を定義する必要があります

検証に失敗した場合のエラー処理

無効なアクションエラー
  1. CLI で利用可能な Action を照会します:aliyun oos list-actions --biz-region-id cn-hangzhou --oos-action-name "<keyword>" --max-results 50
  2. 類似する Action が見つかった場合は、正しい名前に置き換えます
  3. 結果がない場合は、代替として ACS::ExecuteAPI を使用します。API パラメーターは OpenMeta で照会してください
よくある誤った Action の代替案
誤った Action代替案
ACS::Flow::ForEach存在しません。Task の Loop プロパティを使用してください
ACS::Flow::Repeat存在しません。Loop または ACS::WaitFor を使用してください
ACS::ExecuteScriptACS::ECS::RunCommand を検索してください
ACS::RunCommandACS::ECS::RunCommand を検索してください
構文/構造エラー
  • YAML/JSON 形式(インデント、引用符)を確認します
  • 必須フィールド(FormatVersion、Description、Tasks)の不足を確認します
  • パラメーター参照の形式 {{ paramName }} を確認します
  • Description に二言語の内容が含まれていることを確認します

制約と安全性

絶対遵守ルール
  1. 出力前にテンプレートの検証に合格すること(CLI でエラーが返されないこと)
  2. エラーが発生しても諦めないこと — 成功するまで修正を続ける必要があります
  3. 内容の一貫性:テンプレートの内容はユーザーの要件に一致している必要があります
  4. 出力の参照:{{ TaskName.FieldName }} を使用する前に、Task で対応する Outputs を定義する必要があります
セキュリティルール
  • リソース ID を捏造しないでください(指定されていない場合はパラメーターとして抽出します)
  • データ損失を引き起こす可能性のある危険な操作を含むテンプレートは生成しないでください(ユーザーが明示的に要求した場合を除く)
  • プロパティ名の大文字と小文字は、Action の定義と完全に一致させる必要があります
  • コマンドや出力に AK/SK を絶対に含めないでください
出力ルール
  • サブタスクのタイトルは出力しないでください(フロントエンドで自動的に表示されます)
  • ユーザーが要求していない Outputs や Parameters を追加しないでください
  • テンプレートは yaml または json のコードブロックで囲んでください

Few-Shot の例

ユーザー:ECS インスタンスを再起動する OOS テンプレートを生成してください

アシスタント: はい。ECS インスタンスを再起動する OOS テンプレートを生成します。

  1. 要件の分析:指定した ECS インスタンスを再起動します。regionId と instanceId のパラメーターが必要です。

  2. 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 であることを確認し、パラメーター名を確認するためにプロパティ定義を取得しました。

  1. テンプレートの生成:
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 }}'
  1. テンプレートの検証:
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

検証に合格しました。最終テンプレートを出力します。

成功の検証方法

  1. 構文検証には CLI の validate-template-content を使用します。出力前にテンプレートが検証に合格する必要があります
  2. 詳細な検証手順については、references/verification-method.md を参照してください

クリーンアップ

このスキルはクラウドリソースを作成しないため、クリーンアップは不要です。/tmp/oos_template.yaml などの一時ファイルは、完了後に削除できます。

参考リンク

ドキュメント説明
CLI インストールガイドAliyun CLI のインストールと設定手順
関連コマンドCLI コマンドの規則と全コマンドのリファレンス
RAM ポリシー必要な RAM 権限の一覧とポリシーテンプレート
受け入れ基準受け入れ基準と正しい/誤ったパターン
検証方法成功の検証方法
OOS 公式ドキュメントOOS 製品ドキュメント
OOS テンプレート構文OOS テンプレート構文リファレンス

コメント