十几台服务器要改配置,别再一台台 SSH 了 上周接到一个需求所有服务器的时区从 UTC 改成 Asia/Shanghai。一共 14 台。如果是以前我大概会开 14 个终端窗口或者写个循环 ssh挨个执行timedatectl set-timezone Asia/Shanghai。但这次我换了个做法用了一个开源运维工具直接在网页上选中所有主机贴上命令一次执行完。聊聊我从手动挨个 SSH到网页上批量执行的过程。手动方式的问题先说清楚对于在多台服务器上执行同一条命令这件事技术上有很多方案方案一手动逐台 SSHssh root10.0.1.1 timedatectl set-timezone Asia/Shanghai ssh root10.0.1.2 timedatectl set-timezone Asia/Shanghai # ... 14 台14 台还能忍50 台就崩了。而且手动操作容易漏、容易错。方案二for 循环 SSHfor ip in 10.0.1.{1..14}; do ssh root$ip timedatectl set-timezone Asia/Shanghai done好一点但前提是你得维护一份 IP 列表。而且串行执行的话 14 台要等很久改成并行又得处理输出混乱的问题。方案三Ansible专业方案确实好用。但对于我这种只有十几台机器的小团队来说光是装 Ansible、写 inventory、学 playbook 语法就够折腾半天的。杀鸡用牛刀。我后来用的方式后来同事推荐了一个开源运维工具。GitHub 上有 1 万多 starAGPL-3.0 协议没有商业版直接用就行。它有个批量执行功能体验大概是这样的先把服务器加到主机列表里IP SSH 密钥或密码做一次就行进批量执行页面勾选要操作的主机贴上要执行的命令点执行结果实时回显不需要在目标服务器上装任何 agent走的还是 SSH 协议。只不过连接管理、并行执行、结果收集这些事情平台帮你干了。我那 14 台服务器改时区从勾选到执行完毕大概一分钟。每台的输出单独展示哪台成功哪台失败一目了然。除了批量执行还有什么既然提到这个工具顺便说一下它其他几个我在用的功能在线终端浏览器里直接开 SSH 终端不用开本地终端再 ssh 过去。临时上去看个日志、查个进程挺方便。文件管理上传下载文件比 scp 命令直观。虽然大文件还是 scp 快但传个配置文件、下个日志绰绰有余。任务计划相当于可视化的 crontab。定时任务加在平台上统一管理不用挨个机器去改 crontab 了。应用发布支持简单的部署流程编排。我们的发布流程比较简单拉代码、重启服务用这个够了。复杂流程可能还是得上 CI/CD。什么时候适合用这类工具说几个判断标准服务器数量在 10-100 台这个量级团队没有专职 DevOps运维工作是开发顺带做的不想花时间学 Ansible/SaltStack 那套体系需要一个有界面的东西不想全靠命令行和脚本如果你管着几百台以上或者有复杂的编排需求那 Ansible/Terraform 这类工具更合适。这个工具解决的是中小团队的日常运维效率问题不是替代专业 DevOps 工具链。有兴趣的可以去 GitHub 搜 openspug/spug 看看README 写得挺清楚的。