tcloud-unify
SKILL.md
支持的云厂商
完整的默认配置(地域、规格族、操作系统、计费方式)见
assets/defaults.json。
| 云厂商 | 代码 |
|---|---|
| 阿里云 | aliyun |
| 腾讯云 | tencent |
| 金山云 | ksyun |
| AWS | aws |
| 火山引擎 | volcengine |
| 谷歌云 | gcp |
| Azure | azure |
场景路由
根据用户意图,选择对应的脚本或文档:
| 用户意图 | 执行方式 |
|---|---|
| 创建云主机 / 购买服务器 / 新建 ECS | references/workflow_host.md + scripts/create-host.js |
| 查询工作流 / 工作流状态 / 重跑步骤 | node scripts/workflow.js status/list/rerun |
| 管理云账号 / 创建云账号 / 同步子账号 | node scripts/mutate.js account-add/edit/del/sync-sub |
| 搜索 IP / 搜索域名 / 搜索资源 ID | node scripts/query.js search-ip/search-domain/search-resource-id |
| 查询标签关系 / 自动打标 / 批量打标 | node scripts/query.js tag-relations/tag-arn-template + node scripts/mutate.js tag-auto/tag-batch |
| CDN 流量统计 / CDN 域名 / 同步 CDN 数据 | node scripts/query.js cdn-domain/cdn-stat/cdn-cost + node scripts/mutate.js cdn-sync |
| 查询 DNS Zone / DNS 记录 | node scripts/query.js dns-zone/dns-record |
| 查询负载均衡 | node scripts/query.js loadbalancer/loadbalancer-detail |
| CMDB 工具 / EasyOps 代理 / 堡垒机同步 | node scripts/mutate.js cmdb-*/easyops-* |
| FIMP 项目查询 / 创建 | node scripts/query.js project + node scripts/mutate.js fimp-project-add |
| 查询云资源(通用) | node scripts/query.js <resource> 见下方「常见查询场景」 |
常见查询场景
| 用户意图 | 脚本命令 |
|---|---|
| 查某台主机信息 | node scripts/query.js host --cloudUid=xxx --keyword=实例名或ID |
| 查某个 IP 属于哪台机器 | node scripts/query.js search-ip --ip=目标IP |
| 查某个域名解析到哪里 | node scripts/query.js search-domain --domain=目标域名 |
| 查某个资源 ID 的详情 | node scripts/query.js search-resource-id --resource_id=资源ID |
| 查某个 VPC 下有哪些子网 | node scripts/query.js subnet --vpcId=目标VPC |
| 查某个 VPC 下有哪些安全组 | node scripts/query.js security-group --cloudUid=xxx --regionId=xxx --vpcId=xxx |
| 查某个域名的 DNS 记录 | node scripts/query.js dns-zone → 获取 zone_id → node scripts/query.js dns-record --zone_id=xxx |
| 查某个 IP 的完整资源关系链 | node scripts/query.js tag-relations --query=IP地址 |
| 查各云账号资源数量统计 | node scripts/query.js resource-counts [--cloud_uid=xxx] |
| 查某个负载均衡详情 | node scripts/query.js loadbalancer-detail --load_balancer_id=xxx --cloud_uid=xxx |
| 查 CDN 域名流量 | node scripts/query.js cdn-stat --cloud_uid=xxx --domain=xxx --start_time=xxx --end_time=xxx |
| 查工作流执行状态 | node scripts/workflow.js status <runId> |
查询组合技巧
- 从 IP 反查完整信息:
node scripts/query.js search-ip→ resource_id →node scripts/query.js tag-relations获取关联资源树 - 从域名追踪到主机:
node scripts/query.js search-domain→ IP →node scripts/query.js search-ip→ 主机信息 - 查某地域所有资源:
node scripts/query.js host/vpc/security-group/loadbalancer等传入--cloudUid --regionId
错误处理
完整的错误分类和 HTTP 状态码处理策略见
references/common.md「常见错误」。
关键原则:
- 所有写操作失败后禁止自动重试,必须告知用户错误信息
- Token 过期(401)→ 提示用户重新提供,不要重试
- 限流(429)→ 等待 3-5 秒后重试,最多 2 次
脚本工具
所有 API 调用必须通过脚本执行,禁止直接使用 curl 或 HTTP 请求。脚本零依赖,仅使用 Node.js 内置模块。
| 脚本 | 用途 | 用法示例 |
|---|---|---|
scripts/lib.js |
公共模块(配置加载、HTTP、参数解析) | 被其他脚本 require('./lib') 引用 |
scripts/query.js |
所有 GET 查询(52 种资源) | node scripts/query.js account --cloudType=aliyun |
scripts/mutate.js |
所有写操作(账号/标签/CDN/CMDB等) | node scripts/mutate.js account-add --json='{...}' |
scripts/create-host.js |
创建主机流程 | node scripts/create-host.js --step=defaults --cloud=aliyun |
scripts/workflow.js |
工作流管理 | node scripts/workflow.js status 12345 |
配置优先级
脚本通过 lib.js 统一加载配置,优先级从高到低:
- 环境变量
TCLOUD_API_URL/IDSAAS_API_KEY - assets/config.json 中的
apiUrl/apiKey - SKILL.md 解析(兜底)
query.js 支持的资源类型
--参数为必填,[--参数]为可选。所有列表接口均支持[--page] [--pageSize]。
云账号:
account [--cloudType] [--cloudUid]
account-detail --cloudUid
地域/可用区:
region [--cloudType]
zone --cloudUid --regionId
主机/规格:
host --cloudUid [--keyword] [--regionId]
instance-type --cloudUid --regionId --zoneId [--instanceChargeType] [--instanceTypeFamily]
镜像/磁盘/快照:
image --cloudType --regionId [--imageType] [--platform] [--cloudUid]
imageType=system(默认)不需要cloudUid; imageType=customized需要cloudUid; gcp不需要regionId
disk --cloud_uid [--region_id]
disk-quota --cloudUid --regionId --zoneId --instanceType [--chargeType]
snapshot --cloud_uid [--region_id]
snapshot-policy --cloud_uid [--region_id]
网络:
vpc --cloudUid --regionId
subnet --vpcId [--cloudUid] [--regionId]
vpc-network --cloud_uid
vpc-peerconnect --cloud_uid [--region_id]
security-group --cloudUid --regionId [--vpcId]
security-group-rule --cloudUid --securityGroupId
nic --cloud_uid [--region_id]
route-table --cloud_uid [--region_id]
route --cloud_uid [--route_table_id]
vpn-gateway --cloud_uid [--region_id]
vpn-connection --cloud_uid [--region_id]
vpn-client --cloud_uid [--region_id]
nat-gateway --cloud_uid [--region_id]
directconnect --cloud_uid [--region_id]
负载均衡:
loadbalancer --cloud_uid [--region_id] [--load_balancer_type]
loadbalancer-detail --load_balancer_id --cloud_uid
DNS/CDN:
dns-zone --cloud_uid [--zone_name]
dns-record --cloud_uid --zone_id
cdn-domain --cloud_uid [--domain]
cdn-stat --cloud_uid --domain --start_time --end_time
cdn-cost --cloud_uid --start_time --end_time
容器:
k8s --cloud_uid [--region_id]
ecs --cloud_uid [--region_id]
其他:
elasticsearch --cloud_uid [--region_id]
api-gateway --cloudUid [--regionId]
function --cloud_uid [--region_id]
bucket --cloudUid [--regionId]
log-service --cloud_uid [--region_id]
nas --cloud_uid [--region_id]
waf --cloud_uid [--region_id]
pai-dsw --cloud_uid [--region_id]
pai-quota --cloud_uid [--region_id]
搜索/统计:
search-ip --ip
search-domain --domain
search-resource-id --resource_id
resource-counts [--cloud_uid]
标签:
tag-relations --query [--max_depth] [--cloud_uid]
tag-arn-template --cloud_type --product_type
项目/工作流:
project [--search]
workflow-dependency --workflowDefId
配置:
defaults [--cloud=aliyun]
create-host.js 步骤
| 步骤 | 说明 |
|---|---|
--step=defaults --cloud=<云厂商> |
输出默认配置模板(含 {{占位符}}) |
--step=submit --config=<file> |
提交创建请求 |
--step=price --config=<file> |
查询价格 |
mutate.js 支持的命令
写操作接受
--json='...'或--config=<file>传入 JSON body,简单参数可通过--key=value直接传入。
云账号:
account-add --cloudUid --cloudName --cloudType --accessKeyId --accessKeySecret [--parentUid]
account-edit --cloudUid [--cloudName] [--accessKeyId] [--accessKeySecret]
account-del --cloudUids(逗号分隔)
account-sync-sub --cloudUids(逗号分隔)
标签:
tag-auto [--cloud_uid] [--cloud_type] [--product_type] [--resource_id] [--dry_run]
tag-batch --table_name [--cloud_type] [--cloud_name] [--dry_run]
CDN:
cdn-sync --cloud_uid [--start_time] [--end_time] [--granularity]
主机:
host-price --json='...' 或 --config=<file>(完整创建配置)
FIMP:
fimp-project-add --id --name [--alias] [--budgetDepartment] [--devUser] [--level]
CMDB:
cmdb-tool --json='...' 或 --config=<file>
cmdb-tool-status --exec_id
cmdb-sync-jumpserver --json='...' 或 --config=<file>
cmdb-check-easyagent --ips(逗号分隔)
cmdb-install-node-exporter --ips(逗号分隔)
cmdb-init-system --ips(逗号分隔)
cmdb-sync-consul --json='...' 或 --config=<file>
cmdb-install-hids --ips(逗号分隔)[--region]
EasyOps:
easyops-agent-proxy --name --proxy --region --regionEn --uid --url
workflow.js 命令
| 命令 | 说明 |
|---|---|
status <runId> |
查询工作流详情和步骤状态 |
list [--type=host] |
查询工作流运行列表 |
step <stepRunId> |
查询步骤日志 |
poll <runId> [--interval=5] |
轮询工作流直到完成 |
rerun <stepRunId> |
重跑指定步骤 |
dependency <workflowDefId> |
查询工作流步骤依赖 |
资产文件
| 文件 | 内容 |
|---|---|
assets/config.json |
API 地址和 Key 配置(可通过环境变量覆盖) |
assets/defaults.json |
云厂商默认配置(地域/规格族/OS/镜像/计费/标签别名/表单默认值) |
参考文档
| 文件 | 内容 |
|---|---|
references/workflow_host.md |
创建主机完整流程(步骤依赖链、智能引导规则) |
references/common.md |
通用数据结构、参数命名约定、枚举值、错误处理策略 |