跳转到内容

已保存连接与 Inventory

在企业使用场景里,saved connection 会成为 rauto 的运维骨架。

它们不只是为了少打几个参数,而是以下能力的基础:

  • 可复用目标定义
  • inventory 分组
  • 变量继承
  • 编排目标选择
  • 长期执行历史

在早期阶段,临时命令参数足够:

Terminal window
rauto exec "show version" \
--host 192.168.1.1 \
--username admin \
--password secret \
--device-profile cisco

但企业级场景很快会需要:

  • 更短、更安全的命令行
  • 稳定的目标命名
  • 可用于 job / orchestration 的一致目标选择
  • 一致的设备 profile 绑定
  • 与固定目标绑定的审计历史

这时 saved connection 就会变得必不可少。

Terminal window
rauto connection add lab1 \
--host 192.168.1.1 \
--username admin \
--ssh-port 22 \
--ssh-security balanced \
--device-profile cisco
Terminal window
rauto exec "show version" --connection lab1
Terminal window
rauto connection list
rauto connection show lab1
rauto connection delete lab1
Terminal window
rauto connection test \
--connection lab1 \
--save-connection lab1_backup

当前密码策略是刻意偏保守的:

  • --save-connection 默认不保存密码
  • 如需保存密码,显式加 --save-password
  • connection add 只有显式传入密码字段时才会保存密码
  • 已保存密码会加密写入 rauto.db
  • 主密钥保存在本地系统 keyring 中

运维层面的含义是:

  • 数据库备份可以迁移大部分运行状态
  • 但跨机器 / 跨账号恢复后,仍可能需要重新保存密码或迁移主密钥

批量导入是最重要的企业级接入能力之一。

Terminal window
rauto connection import ./devices.csv
rauto connection import ./devices.xlsx

支持的文件类型:

  • .csv
  • .xlsx
  • .xls
  • .xlsm
  • .xlsb
name,host,username,password,port,enable_password,ssh_security,linux_shell_flavor,device_profile,template_dir
core-sw-01,192.168.1.1,admin,secret,22,,balanced,,cisco,
linux-jump-01,192.168.1.10,root,secret,22,,secure,posix,linux,

根据 README 与现有实现:

  • 导入按连接名做 upsert
  • 如果缺少 name,可以基于 host 自动推导
  • 如果某个已存在目标在导入行中没有密码字段,则会保留现有加密密码
  • Web UI 也支持下载起始 CSV 模板

仓库示例文件:

  • templates/examples/connection-import-template-en.csv
  • templates/examples/connection-import-template-zh.csv

saved connection 也是执行历史的挂载点。

当前 CLI 支持:

Terminal window
rauto history list lab1 --limit 20
rauto history show lab1 <history-id>
rauto history delete lab1 <history-id>

这在企业环境里很重要,因为绑定到稳定目标名称的历史记录,比一次性命令参数更利于审计和追踪。

当前已经没有独立的 inventory target 记录层。

而是:

  • saved connection 是 inventory 目标的事实来源
  • inventory CLI 重点负责 group 管理与变量合并预览

这是一个很重要的架构选择。

它意味着目标身份模型始终统一:

  • 一条 saved connection
  • 同时供 CLI 使用
  • 同时供 Web 使用
  • 同时供 group 使用
  • 同时供编排使用

当前 group 相关命令:

Terminal window
rauto inventory group list
rauto inventory group show access --json
rauto inventory group upsert access --file ./group-access.json
rauto inventory group delete access
{
"name": "access",
"description": "Campus access switches",
"hosts": ["edge-sw-01", "edge-sw-02"],
"vars": {
"role": "access"
}
}

变量合并预览是企业级场景里非常有价值的功能。

Terminal window
rauto inventory resolve-vars \
--host edge-sw-01 \
--group access \
--vars-json '{"ticket":"CHG-42"}' \
--json

当前合并顺序:

  1. group vars
  2. saved connection vars
  3. runtime vars

在工作流或编排上线前,强烈建议先用这个命令确认目标最终收到的变量集。

标签、分组与企业级 inventory 使用

Section titled “标签、分组与企业级 inventory 使用”

README 明确把 saved connection 描述为这些字段的事实来源:

  • enabled
  • labels
  • groups
  • vars

因此 saved connection 可以承担:

  • 环境分层
  • 区域 / 站点分组
  • 角色分组
  • staged orchestration 目标选择
  • 更适合审批与审计的目标命名

先用直连参数熟悉 CLI。

统一命名、device profile 与 SSH 安全档位。

例如定义这些组:

  • core
  • access
  • edge
  • linux-app
  • linux-jump

阶段 4:在工作流与编排中全面复用

Section titled “阶段 4:在工作流与编排中全面复用”

把 rollout 逻辑建立在 saved connection 和 group 上,而不是到处内联主机参数。

目标名称应当长期稳定,并适合体现在任务历史和编排文件里。

例如:

  • core-sh-01
  • access-bj-07
  • fw-hq-01
  • linux-jump-01