前两天帮朋友重装服务器系统,顺手给他搭了个 Jenkins 流水线。他盯着屏幕看了半天,突然问:"这玩意儿,真能自学出来?"我手一抖,差点把 sudo reboot 敲成 sudo rm -rf /。
难,但不是玄学
DevOps 自学确实不轻松,但它不像考驾照要天天练坡起,也不像学修空调得先背压缩机原理图。它更像——你第一次自己给笔记本重装 Windows:查驱动、找激活码、调 BIOS 启动顺序,每一步都卡,但每解决一个,心里就踏实一分。
卡点在哪?
不是概念多,是工具链太碎。刚学 Git,发现还得配 SSH Key;刚配好,CI 又报错说没权限拉代码;好不容易跑通流水线,生产环境又因为 Docker 镜像版本不一致崩了。这不是你笨,是 DevOps 本来就是“缝合怪”——把开发、运维、测试、安全几条线拧成一股绳,自学时没人帮你剪掉打结的地方。
举个真实例子:
有位做 PHP 的兄弟,用宝塔面板干了五年,某天公司要求上 Kubernetes。他花两周啃完官方文档,结果第一次 kubectl apply -f 就报 no matches for kind "Deployment"。查了半天,才发现本地 kubectl 版本比集群低了两个大版本。这种坑,教程里不写,Stack Overflow 上答案藏在第 7 页。
怎么绕开最硌人的石头?
别一上来就死磕《SRE 工程实践》。先从你熟悉的系统重装场景切入:
比如每次重装 CentOS 后都要手动装 Nginx、配置防火墙、开自启——不如写个 shell 脚本一键搞定:
#!/bin/bash
yum install -y nginx firewalld
systemctl enable nginx firewalld
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
echo "Done. Try: curl http://localhost"这个脚本,就是你的第一个“基础设施即代码”(IaC)雏形。它不高级,但能立刻减少重复劳动——而 DevOps 的起点,往往就藏在这种“偷懒”里。
再往后,把脚本丢进 Git,加个 GitHub Action,每次 push 就自动检查语法、推到测试机上跑一遍。你没喊出“CI/CD”,但已经踩进了它的门坎。
别怕犯错,怕的是不敢删
我在虚拟机里重装过 37 次 Ubuntu,有 28 次是因为改坏了 /etc/fstab 或删错了 /boot。DevOps 自学也一样:
——Docker 容器起不来?docker logs <容器名> 看一眼;
——Ansible 报错?加个 -v 参数,让它把每一步干啥都说清楚;
——K8s Pod 一直 Pending?kubectl describe pod xxx 比瞎猜快十倍。
工具不会嘲笑你,系统重装失败也不会扣工资。真正拦路的,往往是那句没说出口的:“我是不是不适合干这个?”
其实,当你能靠查文档和日志,把一台裸机从 BIOS 界面变成跑着健康监控的 Web 服务,DevOps 的核心能力——自动化、可观测、快速迭代——你早就在用了。只是还没给它起名字而已。