使用 Skill 创建 OOS 自动化运维模板

更新时间:
复制 MD 格式

使用 OOS 模板生成 Skill,在 OpenClaw、Cursor 等 AI 智能体平台中通过自然语言对话,即可根据运维需求自动生成、验证 OOS 自动化运维模板。

功能概述

OOS 模板生成 Skill 基于阿里云系统运维管理(CloudOps Orchestration Service, OOS),通过 AI 智能体平台将自然语言运维需求转化为标准的 OOS 自动化模板。该 Skill 提供以下能力:

  • 需求分析与模板生成:根据自然语言描述的运维需求,自动提取操作类型、目标资源和参数,生成符合 OOS 规范的 YAML 格式模板。

  • 动作查询与匹配:通过阿里云 CLI 查询 OOS 可用的云产品动作(Action),自动匹配最合适的动作并获取属性定义。

  • 模板语法验证:调用 OOS ValidateTemplateContent API 对生成的模板进行语法和语义校验,确保模板可直接使用。

  • 迭代修复:验证失败时自动分析错误原因,修复模板并重新验证,直到通过为止。

适用范围

控制端(运行 AI 智能体平台的环境):

  • AI 智能体平台已就绪:已安装并配置支持 Skill 协议的 AI 智能体平台(如 OpenClaw、Cursor、Claude 等)。

  • 阿里云 CLI 版本:需要阿里云 CLI 3.3.3 及以上版本。运行 aliyun version 查看当前版本,版本过低请安装/更新 CLI

  • 阿里云账号凭证:已配置与管理身份凭证。运行 aliyun configure list 确认凭证状态。

  • RAM 权限:使用 OOS 模板生成 Skill,阿里云账号或 RAM 用户需要授予以下权限。具体操作,请参见管理RAM用户的权限

API

权限

用途

ListActions

oos:ListActions

查询可用的 OOS 动作列表

ValidateTemplateContent

oos:ValidateTemplateContent

验证模板语法和语义

添加 Skill

OOS 模板生成 Skill 已发布至阿里云 Skill 平台GitHub,支持以下添加方式:

对话添加(推荐)

在 AI 智能体平台的 Agent 模式对话界面中发送以下提示词,即可自动完成 Skill 添加和配置:

Install the skill "alibabacloud-oos-template-generation" from GitHub repo aliyun/alibabacloud-aiops-skills. Skill path: skills/migrationom/oos/alibabacloud-oos-template-generation. After install, inspect the skill metadata and help me finish setup.

手动添加

GitHub 仓库下载 Skill 定义文件,按照 AI 智能体平台的文档将 Skill 文件添加到项目中。

使用场景

Skill 支持以下使用场景。在 AI 智能体平台的对话界面中,使用自然语言描述需求即可触发模板生成流程。

生成基础运维模板

根据运维需求生成对应的 OOS 自动化模板。Skill 自动完成需求分析、动作查询、模板生成和语法验证。

示例对话:

  • "帮我生成一个重启 ECS 实例的 OOS 模板"

  • "写一个自动化模板,在指定实例上执行命令"

  • "创建一个定时停止 ECS 实例的运维编排模板"

Skill 从对话中提取操作类型、目标资源和地域信息,通过 CLI 查询合适的 OOS 动作,生成包含 FormatVersion、Description、Parameters 和 Tasks 的完整模板,最终调用 ValidateTemplateContent API 完成语法验证后输出。

生成批量操作模板

生成针对多个资源执行批量操作的模板。Skill 使用 OOS 的 Loop 机制实现批量逻辑。

示例对话:

  • "帮我写一个批量重启多个 ECS 实例的模板"

  • "生成一个模板,先查询所有实例,再逐个停止"

对于批量操作,Skill 通过 Task 的 Loop 属性和 {{ ACS::TaskLoopItem }} 循环变量实现遍历逻辑,并在前置 Task 中定义 Outputs 以供后续 Task 引用。

生成多步骤编排模板

生成包含多个步骤的复杂编排模板,支持步骤间的输出传递和条件分支。

示例对话:

  • "生成一个模板:先创建快照,等快照完成后再重启实例"

  • "帮我编排一个自动化任务,根据实例状态决定是否执行重启"

Skill 将需求拆解为多个 Task,通过 {{ taskName.outputField }} 格式传递步骤间的输出数据,并使用 ACS::Choice 动作实现条件分支逻辑。

模板生成流程

Skill 按照以下流程生成 OOS 模板:

  1. 需求分析:从对话中提取操作类型、目标资源、地域(默认 cn-hangzhou)等参数。不确定的参数提取为模板的 Parameters,无需反复询问用户。

  2. 动作查询:通过阿里云 CLI 查询可用的 OOS 动作,匹配最合适的动作并获取属性定义。动作分为两类:

    • 原子动作(内置):如 ACS::ExecuteAPIACS::WaitForACS::Choice 等,可直接使用。

    • 云产品动作(需查询):格式为 ACS::<Product>::<Name>,如 ACS::ECS::RebootInstance。通过 aliyun oos list-actions 命令查询。

  3. 模板生成:生成包含 FormatVersion、中英文 Description、Parameters 和 Tasks 的完整 OOS 模板(YAML 格式)。

  4. 语法验证:调用 aliyun oos validate-template-content 命令验证模板。验证通过后输出最终模板;验证失败则自动分析错误、修复并重新验证,直到通过为止。

模板示例

以下为 Skill 生成的重启 ECS 实例模板示例:

FormatVersion: OOS-2019-06-01
Description:
  en: 'Reboot an ECS instance'
  zh-cn: '重启一台ECS实例'
Parameters:
  regionId:
    Type: String
    Description: '地域ID'
    Default: 'cn-hangzhou'
  instanceId:
    Type: String
    Description: '实例ID'
Tasks:
  - Name: rebootInstance
    Action: ACS::ECS::RebootInstance
    Description: '重启ECS实例'
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ instanceId }}'

模板中的参数使用 {{ paramName }} 格式引用(双花括号加空格)。创建 OOS 执行时填入实际参数值即可运行。

常见问题

模板验证失败如何处理?

Skill 在验证失败时会自动分析错误并修复。常见的错误类型包括:

  • 无效动作:使用了不存在的动作名称。Skill 通过 CLI 重新查询正确的动作名称后修复。

  • 属性名大小写不匹配:动作属性名的大小写必须与 API 定义完全一致。Skill 根据查询到的属性定义自动修正。

  • YAML 格式错误:缩进或引号不正确。Skill 自动修正格式后重新验证。

  • 缺少必填字段:如 FormatVersion、Description 或 Tasks。Skill 自动补充后重新验证。

CLI 版本过低如何处理?

OOS 模板生成 Skill 需要阿里云 CLI 3.3.3 及以上版本。运行以下命令安装或更新:

curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash

安装后运行 aliyun version 确认版本号。

常见的动作使用误区

以下动作在 OOS 中不存在,Skill 会自动使用替代方案:

不存在的动作

替代方案

ACS::Flow::ForEach

使用 Task 的 Loop 属性

ACS::Flow::Repeat

使用 Loop 或 ACS::WaitFor

ACS::ExecuteScript

使用 ACS::ECS::RunCommand

ACS::RunCommand

使用 ACS::ECS::RunCommand

如何在模板中引用其他 Task 的输出?

引用其他 Task 输出前,该 Task 必须先定义 Outputs 块。引用格式为 {{ taskName.outputField }}

例如,先通过 ACS::ExecuteAPI 查询实例列表并定义输出,再在后续 Task 中通过 Loop 遍历查询结果:

Tasks:
  - Name: listInstances
    Action: ACS::ExecuteAPI
    Properties:
      Service: ecs
      API: DescribeInstances
      Parameters:
        RegionId: '{{ regionId }}'
    Outputs:
      instanceIds:
        Type: List
        ValueSelector: 'Instances.Instance[].InstanceId'
  - Name: rebootInstances
    Action: ACS::ECS::RebootInstance
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ ACS::TaskLoopItem }}'
    Loop:
      Items: '{{ listInstances.instanceIds }}'

权限不足如何处理?

执行 CLI 命令时如果遇到权限错误,Skill 会提示所需的 RAM 权限。请联系管理员为当前账号授予 oos:ListActionsoos:ValidateTemplateContent 权限后重试。