十几台服务器要改配置,别再一台台 SSH 了

上周接到一个需求:所有服务器的时区从 UTC 改成 Asia/Shanghai。一共 14 台。

如果是以前,我大概会开 14 个终端窗口(或者写个循环 ssh),挨个执行 timedatectl set-timezone Asia/Shanghai。但这次我换了个做法,用了一个开源运维工具,直接在网页上选中所有主机,贴上命令,一次执行完。

聊聊我从"手动挨个 SSH"到"网页上批量执行"的过程。

手动方式的问题

先说清楚,对于"在多台服务器上执行同一条命令"这件事,技术上有很多方案:

方案一:手动逐台 SSH

bash 复制代码
ssh root@10.0.1.1 "timedatectl set-timezone Asia/Shanghai"
ssh root@10.0.1.2 "timedatectl set-timezone Asia/Shanghai"
# ... 14 台

14 台还能忍,50 台就崩了。而且手动操作容易漏、容易错。

方案二:for 循环 + SSH

bash 复制代码
for 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 万多 star,AGPL-3.0 协议,没有商业版,直接用就行。

它有个"批量执行"功能,体验大概是这样的:

  1. 先把服务器加到主机列表里(IP + SSH 密钥或密码,做一次就行)
  2. 进"批量执行"页面,勾选要操作的主机
  3. 贴上要执行的命令
  4. 点执行,结果实时回显

不需要在目标服务器上装任何 agent,走的还是 SSH 协议。只不过连接管理、并行执行、结果收集这些事情平台帮你干了。

我那 14 台服务器改时区,从勾选到执行完毕大概一分钟。每台的输出单独展示,哪台成功哪台失败一目了然。

除了批量执行还有什么

既然提到这个工具,顺便说一下它其他几个我在用的功能:

在线终端:浏览器里直接开 SSH 终端,不用开本地终端再 ssh 过去。临时上去看个日志、查个进程挺方便。

文件管理:上传下载文件,比 scp 命令直观。虽然大文件还是 scp 快,但传个配置文件、下个日志绰绰有余。

任务计划:相当于可视化的 crontab。定时任务加在平台上统一管理,不用挨个机器去改 crontab 了。

应用发布:支持简单的部署流程编排。我们的发布流程比较简单(拉代码、重启服务),用这个够了。复杂流程可能还是得上 CI/CD。

什么时候适合用这类工具

说几个判断标准:

  • 服务器数量在 10-100 台这个量级
  • 团队没有专职 DevOps,运维工作是开发顺带做的
  • 不想花时间学 Ansible/SaltStack 那套体系
  • 需要一个有界面的东西,不想全靠命令行和脚本

如果你管着几百台以上,或者有复杂的编排需求,那 Ansible/Terraform 这类工具更合适。这个工具解决的是"中小团队的日常运维效率"问题,不是替代专业 DevOps 工具链。

有兴趣的可以去 GitHub 搜 openspug/spug 看看,README 写得挺清楚的。

相关推荐
SkyWalking中文站3 小时前
SkyWalking 11 与 BanyanDB 0.11:在存储引擎内部实现 Trace 尾部采样
运维·监控·自动化运维
姚不倒3 小时前
etcd 学习系列(二):集群架构 —— 3 节点是如何工作的
运维·架构·etcd
pt10434 小时前
网络自动化Python课程:Cisco PyATS网络自动化测试框架
运维·自动化
小袁拒绝摆烂5 小时前
Jenkins部署经验
运维·jenkins
刚入门的大一新生6 小时前
Linux-进程控制
linux·运维·服务器·c++
上火的金鱼妹6 小时前
K8S基础组件作用和关系整理
linux·运维·服务器·kubernetes
Vcaker6 小时前
Linux学习25-harbor私有仓库部署
linux·运维·学习
醉颜凉6 小时前
网络安全必学:粘性MAC地址(Sticky MAC)原理与应用全解析
运维·服务器·网络·安全·web安全
不懂的浪漫7 小时前
ToDesk 连接 Linux 后分辨率过低的解决方法
linux·运维·数据库
姚不倒8 小时前
etcd 学习系列(七):排障指南 —— 常见问题与解决方案
运维·etcd