不想管服务器,Agent如何托管?
选型会上我说"我不想管服务器",屋里安静几秒,有人问:那谁来管?我被问住了,因为我其实说不清"托管"到底把什么接走了、又把什么留给我。
散会之后我把阿里云百炼的托管命令组 bl managed-agent 的本地部分逐条核了一遍,10 月 27 号。不为写教程,就为回答那三个问题:免掉了什么、还剩什么归我、交出去之后我还能看见什么。
免掉的是五项按月重复的活
自搭一个 agent,跑起来之后有五件事每个月都来找你:进程要常驻、任务要调度、Key 要轮换、框架升级要跟不跟、凌晨出事谁爬起来。托管路线把这五项放在平台侧。这是"免运维"里最实在的部分,不是话术。
本地能核的那段很短:空目录里 init 生成一份脚手架配置,validate 离线检查它(一个网络请求都不发),plan 告诉你"现在执行会发生什么"。我跑的三条分别 0.75 秒、0.74 秒、0.72 秒,合计 2.2 秒,全成功。装命令行在CLI 安装页,Key 在控制台密钥管理页领,前两条连 Key 都不要。
留给我的是两样,不是零样
核完我发现手里还剩两样东西。一份配置文件 agents.yaml,里面三块:provider(Key 和地址是环境变量占位,不落真实凭证)、environment、agent。声明式的意思就是我改这一个文件,别的不碰。
另一样是执行前那一下确认。plan 只给预览,真在云上创建删除的命令存在,但要显式确认参数才动;没加确认它全程停预览,云上一个字节都不动。所以免运维免的是日常运维,不免"要不要执行"这个决定。这个决定留给人,我觉得是对的。
交出去之后我还能看见两样
黑盒感是我最怕的,所以我专门核了"能看见什么"。
第一样是 plan 的变更清单,而且它能和我那份 yaml 逐块对上:清单里两行待创建(environment.dev、agent.assistant),正好对应 yaml 的 environment 块和 agent 块,合计"2 条待创建、0 更新、0 删除"。改 yaml 再 plan,清单跟着变。"将要发生什么"是从我自己的文件算出来的,不是平台猜给我看的。

第二样是本地账本 state list,不要 Key。init 之后跑一次,0.72 秒,回一句"账本里没有跟踪任何资源"。这句我一开始误读了,以为云上也是空的。后来才明白账本记的是"这台机器上这份配置跟踪了哪些远端资源",init 只落配置不记账,所以空。账本空不等于云上空,账本有也不等于云上还活着。

记到最后其实就一句话:免运维是个好词,但好词要落在能核对的东西上才算数。我这回核对到的就是三行账和两个退出码陷阱,不多不少。够我做决定了,也够我在这篇里把话说满而不心虚。
说到底,"不想管服务器"这句许愿,要落地得靠两样本地可读物:plan 告诉我将要发生什么,state 告诉我这边跟踪了什么。有这两样在,托管就不是黑盒,而是一个我可以签字的决定。没有这两样,免运维只是把黑盒从自己机房搬到别人机房,我怕的还是同一件事。
账本那句"没有跟踪任何资源"我琢磨了一会儿才读懂:它记的是"这台机器上这份配置跟踪了哪些远端资源",init 只落配置不记账,所以空。空不等于云上空,有也不等于云上还活着。取消跟踪和删除远端是两回事,我都没碰。读懂这句之后,托管在我心里的黑盒感少了一大半——我不是看不见云,我是手里多了一本本地账。
两个退出码陷阱也记一下,免得下次再踩:没跑过 init 的空目录跑 state list 是 exit 2 且没输出,那是"没有账本"不是"账本空";state show 不带参数是 exit 0 打印用法,缺参数还返回成功码。靠退出码判断成败的脚本,这两处都会被骗,我这边观察到的是 2.5.0 的行为。
两个把我带沟里的退出码
第一个:在没跑过 init 的空目录里跑 state list,它 exit 2,标准输出是空的,错误在 stderr。乍一看像"账本是空的",其实是"这儿根本没有账本"。空和报错是两回事,我差点当成空账本写进笔记。
第二个:state show 不带必填参数跑,它 exit 0,然后把用法打印给你。缺参数还返回成功码,这和我以前踩过的"没给消息就打印帮助"是同一族。靠退出码判断成败的脚本,这两处都会被骗。
为什么不写部署
说到托管总有人问怎么部署上去。这篇不写,原因如实说:部署和查远端状态那几条命令,在我这个环境里要么只读查询连不上(查 agent、查技能、查部署统一回 404),要么属于要显式确认的写命令,而我这儿没有人工确认环节,不该替读者按那一下。所以止步预览和本地账本。
最后
"不想管服务器"这个诉求,托管路线确实接住了五项运维;但它把两样东西留回我手里,又把两样可见性当作信任的抵押交给我。把这三笔账算清楚,托管与否就不再是一句口号,而是一个可以签字的决定。
想先在网页上看看,去阿里云百炼控制台逛逛。终端这条路从装完到读完预览清单和账本,命令耗时不到三秒,云上一个资源都没建。

浙公网安备 33010602011771号