已保存连接与 Inventory
在企业使用场景里,saved connection 会成为 rauto 的运维骨架。
它们不只是为了少打几个参数,而是以下能力的基础:
- 可复用目标定义
- inventory 分组
- 变量继承
- 编排目标选择
- 长期执行历史
为什么 saved connection 很重要
Section titled “为什么 saved connection 很重要”在早期阶段,临时命令参数足够:
rauto exec "show version" \ --host 192.168.1.1 \ --username admin \ --password secret \ --device-profile cisco但企业级场景很快会需要:
- 更短、更安全的命令行
- 稳定的目标命名
- 可用于 job / orchestration 的一致目标选择
- 一致的设备 profile 绑定
- 与固定目标绑定的审计历史
这时 saved connection 就会变得必不可少。
连接生命周期
Section titled “连接生命周期”新增或更新已保存连接
Section titled “新增或更新已保存连接”rauto connection add lab1 \ --host 192.168.1.1 \ --username admin \ --ssh-port 22 \ --ssh-security balanced \ --device-profile cisco复用已保存连接
Section titled “复用已保存连接”rauto exec "show version" --connection lab1rauto connection listrauto connection show lab1rauto connection delete lab1成功后保存当前有效连接
Section titled “成功后保存当前有效连接”rauto connection test \ --connection lab1 \ --save-connection lab1_backup密码处理规则
Section titled “密码处理规则”当前密码策略是刻意偏保守的:
--save-connection默认不保存密码- 如需保存密码,显式加
--save-password connection add只有显式传入密码字段时才会保存密码- 已保存密码会加密写入
rauto.db - 主密钥保存在本地系统 keyring 中
运维层面的含义是:
- 数据库备份可以迁移大部分运行状态
- 但跨机器 / 跨账号恢复后,仍可能需要重新保存密码或迁移主密钥
批量导入是最重要的企业级接入能力之一。
rauto connection import ./devices.csvrauto connection import ./devices.xlsx支持的文件类型:
.csv.xlsx.xls.xlsm.xlsb
name,host,username,password,port,enable_password,ssh_security,linux_shell_flavor,device_profile,template_dircore-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.csvtemplates/examples/connection-import-template-zh.csv
saved connection 也是执行历史的挂载点。
当前 CLI 支持:
rauto history list lab1 --limit 20rauto history show lab1 <history-id>rauto history delete lab1 <history-id>这在企业环境里很重要,因为绑定到稳定目标名称的历史记录,比一次性命令参数更利于审计和追踪。
Inventory 模型
Section titled “Inventory 模型”当前已经没有独立的 inventory target 记录层。
而是:
- saved connection 是 inventory 目标的事实来源
- inventory CLI 重点负责 group 管理与变量合并预览
这是一个很重要的架构选择。
它意味着目标身份模型始终统一:
- 一条 saved connection
- 同时供 CLI 使用
- 同时供 Web 使用
- 同时供 group 使用
- 同时供编排使用
Group 管理
Section titled “Group 管理”当前 group 相关命令:
rauto inventory group listrauto inventory group show access --jsonrauto inventory group upsert access --file ./group-access.jsonrauto inventory group delete accessGroup JSON 结构
Section titled “Group JSON 结构”{ "name": "access", "description": "Campus access switches", "hosts": ["edge-sw-01", "edge-sw-02"], "vars": { "role": "access" }}变量合并预览
Section titled “变量合并预览”变量合并预览是企业级场景里非常有价值的功能。
rauto inventory resolve-vars \ --host edge-sw-01 \ --group access \ --vars-json '{"ticket":"CHG-42"}' \ --json当前合并顺序:
- group vars
- saved connection vars
- runtime vars
在工作流或编排上线前,强烈建议先用这个命令确认目标最终收到的变量集。
标签、分组与企业级 inventory 使用
Section titled “标签、分组与企业级 inventory 使用”README 明确把 saved connection 描述为这些字段的事实来源:
enabledlabelsgroupsvars
因此 saved connection 可以承担:
- 环境分层
- 区域 / 站点分组
- 角色分组
- staged orchestration 目标选择
- 更适合审批与审计的目标命名
企业级运维建议
Section titled “企业级运维建议”推荐成熟度路径
Section titled “推荐成熟度路径”阶段 1:临时执行
Section titled “阶段 1:临时执行”先用直连参数熟悉 CLI。
阶段 2:规范 saved connection
Section titled “阶段 2:规范 saved connection”统一命名、device profile 与 SSH 安全档位。
阶段 3:引入 group-based inventory
Section titled “阶段 3:引入 group-based inventory”例如定义这些组:
coreaccessedgelinux-applinux-jump
阶段 4:在工作流与编排中全面复用
Section titled “阶段 4:在工作流与编排中全面复用”把 rollout 逻辑建立在 saved connection 和 group 上,而不是到处内联主机参数。
目标名称应当长期稳定,并适合体现在任务历史和编排文件里。
例如:
core-sh-01access-bj-07fw-hq-01linux-jump-01