开源网络自动化

rauto 是一个基于 Rust 的网络自动化工具集。

它提供 CLI、本地 Web 和 agent API,用来处理命令执行、模板、事务、编排、回放、备份和可复用连接状态。

执行网格
exec · template · orchestrate
控制平面 ready · 7 connections · last task success
campus-access
inventory group hosts=3
edge-prod-01
runtime history active
task-center
records ready
变更预览
rauto flow --template scp --connection edge-prod-01 --vars-json '{"peer":"edge-prod-02","local_path":"/tmp/rauto-demo.txt","remote_path":"/tmp/rauto-demo.txt"}'
rauto orchestrate campus-vlan-orchestration.json --view
回放流
[info] runtime loaded: 7 saved connections
[step] flow template: scp
[ok] replay available for last exec record
[ok] orchestration preview generated
7 saved connections
2 inventory groups
2 flow templates
success last task status
CLI + Web + Agent APIInventory + 模板回放 + 任务编排 + 备份

核心能力

当前 rauto 运行时的能力范围。

CLI 与本地 Web 现在覆盖执行、Inventory、模板、流程模板、任务追踪、回放、备份、上传与策略防护。

标准执行面

在一个面板内完成直接执行、模板执行和命令流程执行,并共享连接与模式上下文。

编排执行面

通过 Tx Block、Tx Workflow 与分阶段 Orchestrate 计划,完成可分批下发、可回滚的执行。

运行时资产工作台

把已保存连接、Prompt Profile、模板、流程模板与 Inventory 分组作为共享资产统一管理。

安全与运维中心

将命令黑名单、录制等级、回放/历史、备份恢复与任务中心纳入同一条运维闭环。

执行流程

当前执行流程。

与当前 Web 和 CLI 执行面一致的典型操作路径。

设置目标与运行时上下文

先选择已保存连接或 Inventory 分组,再确认设备 Profile、SSH 安全档位和运行时变量。

选择执行模式

根据变更风险选择标准执行(exec/template/flow)或编排执行(tx block/workflow/orchestrate)。

带防护执行并记录

执行前做黑名单校验,按任务设置录制等级,并通过模式感知 Prompt 和结构化任务事件执行。

复盘、回放与恢复

通过任务中心、历史和回放审计结果;需要迁移或恢复运行状态时使用备份恢复。

操作界面

当前本地运行时布局。

连接、Inventory、Profile、模板、任务、录制与备份都落在同一个运行时内。

CLI、Web、回放、黑名单与备份流程共享同一套本地运行时状态。

保存并复用连接

按名称管理主机、认证、端口、SSH 安全档位和 Profile 上下文,并把新保存的密码转到系统 keychain。

模板与设备 Profile

用 MiniJinja 渲染命令,用继承自 rneter 的 TOML Profile 描述 Prompt 状态切换。

会话录制与历史

把执行细节落成结构化事件,让复盘和排障不再依赖终端滚屏和记忆。

备份与恢复

~/.rauto 运行目录做归档,在需要时恢复连接、模板、Profile 与录制数据;keychain 中的密钥不会被导出进备份。

典型场景

当前运行时里的典型操作流。

用真实命令和返回结果描述当前的执行方式。

批量交换机变更

在多台接入设备上渲染并执行同一类变更,同时保持连接状态和 Prompt 处理的一致性。

命令
rauto orchestrate campus-vlan-orchestration.json --view
返回结果
# orchestration_plan: campus-vlan-rollout
file: campus-vlan-orchestration.json
overview: fail_fast=true rollback_on_stage_failure=true rollback_completed_stages_on_failure=false stages=2 inventory_groups=2

[Stage 1/2] core
strategy=serial fail_fast=false jobs=1
  [Job 1/1] core-job
  strategy=serial fail_fast=true targets=2 action=tx_workflow (workflow_file=./core-vlan-workflow.json)
  target_groups=core
  - core-01
  - core-02

[Stage 2/2] access
strategy=serial fail_fast=false jobs=1
  [Job 1/1] access-job
  strategy=parallel fail_fast=true targets=2 action=tx_block (template=configure_vlan.j2, mode=Config)
  max_parallel=10
  target_groups=access
  - sw-01
  - sw-02

基于模板的防火墙或路由器更新

通过模板和变量文件驱动重复性策略或接口变更,而不是手动逐条敲命令。

命令
rauto template configure_vlan.j2 --vars templates/example_vars.json --dry-run
返回结果
--- Rendered Commands ---
conf t

vlan 10
 name Marketing

vlan 20
 name Engineering

end
-------------------------

维护窗口后的回放复盘

利用录制事件和历史详情重建执行过程,不再依赖终端滚屏和口头回忆。

命令
rauto history list edge-prod-01 --limit 5
rauto replay /private/tmp/website-demo-exec.jsonl --list
返回结果
# connection: edge-prod-01
- [1777824859401] template: scp mode=User level=full file=sqlite://~/.rauto/rauto.db#history/1777824859401_command_flow
- [1777824843199] touch /tmp/rauto-demo.txt mode=Root level=full file=sqlite://~/.rauto/rauto.db#history/1777824843199_exec
- [1777824800314] uname -a mode=Root level=full file=sqlite://~/.rauto/rauto.db#history/1777824800314_exec
- [1777824795188] template: scp mode=User level=full file=sqlite://~/.rauto/rauto.db#history/1777824795188_command_flow
- [1777367945542] load-and-restart mode=Root level=key-events-only file=sqlite://~/.rauto/rauto.db#history/1777367945542_orchestrate_tx_block

# context: device=<USER>@<HOST>:22 prompt=<PROMPT> fsm_prompt=root
1. mode=root success=true exit_code=0 command=uname -a

从实验室到生产的复用工作流

先在实验环境验证 Profile 和执行路径,再把同一套操作资产复用到生产变更。

命令
rauto profile diagnose cisco --json
rauto flow-template show scp
rauto backup list
返回结果
{
  "total_states": 7,
  "graph_states": [
    "config",
    "enable",
    "login"
  ],
  "entry_states": [],
  "missing_edge_sources": [],
  "missing_edge_targets": [],
  "unreachable_states": [],
  "dead_end_states": [],
  "duplicate_prompt_patterns": [],
  "potentially_ambiguous_prompt_states": [],
  "self_loop_only_states": []
}

name = "scp"
description = "Use one peer var, then resolve peer.host/peer.username/peer.password in rauto."
stop_on_error = true
default_mode = "User"

[[vars]]
name = "peer"
label = "Target Connection Name"
type = "string"
required = true

[[vars]]
name = "local_path"
label = "Local File Path"
type = "string"
required = true

[[vars]]
name = "remote_path"
label = "Remote File Path"
type = "string"
required = true

[[steps]]
command = "scp -P {{peer.port}} {{local_path}} {{peer.username}}@{{peer.host}}:{{remote_path}}"

- ~/.rauto/backups/rauto-backup-1777824868.tar.gz

产品组成

当前运行时包含的组成。

执行、Inventory 驱动编排、资产管理、审计轨迹、本地界面与托管 agent 模式。

交付执行引擎

同一执行引擎支撑直接执行、模板执行、命令流程、tx block、tx workflow 与编排计划。

状态与资产存储

已保存连接、Inventory 分组、模板、流程模板与 Prompt Profile 在 CLI 与 Web 间共享复用。

审计与安全平面

录制、回放、历史、黑名单与任务追踪共同提供执行前防护与执行后可审计能力。

本地与托管控制

可通过 `rauto web` 做本地控制,或通过 `rauto agent` 注册到 `rauto-manager` 进入中心化控制模式。

开源生态

当前生态里的项目分工。

`rauto` 负责执行运行时,`rauto-manager` 负责多个托管 Agent 的中心化控制层。

rauto

基于 Rust 的执行运行时,提供 CLI、本地 Web、agent API、连接复用、模板、编排、回放、备份和命令黑名单能力。

rauto-manager

面向多个 `rauto` Agent 的自托管控制平面,支持 HTTP/gRPC Agent、共享设备清单、集中任务下发、工作流/编排设计、实时执行过程、历史和通知。

常见问题

当前行为说明。

几个和运行时行为、数据处理相关的简短说明。

CLI 和 Web 控制台是什么关系?

它们共享同一套本地运行数据和执行模型,所以连接、模板、Profile、录制和备份都会保持一致。

在碰设备之前能先预览命令吗?

可以。Dry Run 流程可以先查看模板渲染结果,在涉及模板和变量文件时尤其关键。

可以自定义设备 Prompt 行为吗?

可以。rauto 支持继承自 rneter 的内置 Profile,也支持自定义 TOML Profile 来描述状态和执行模式。

哪些数据是保存在本地的?

连接、模板、Profile、录制记录和备份归档都保存在本地运行目录中。当前产品定位明确是本地优先、开源优先。

仓库与文档。

查看文档、浏览仓库,或者直接查看发布版本。