读者来信
亲爱的“最后绝望机会”,
我跟老板反复纠缠,一遍又一遍解释系统管理既是手艺也是艺术,没法为自己做的每件小事都写完整的流程文档。他手里有份前任工作(StarBux 咖啡坑)的政策与流程手册,说排查坏的 ARP 缓存绝不会比当咖啡师更糟,后者连奶泡顶上怎么拉花弄成公司 logo、杯子上版权标识被遮住就开除都写得一清二楚。其他办法都试过了,现在只好来试你。求你给我一个权威论证,宣告给系统管理写文档注定失败。
——受够了无理要求
亲爱的 SOUR:
“给系统管理写文档注定失败。”瞧,我跟最会撒谎的人一样会撒谎。
你一直忍到最后才联系我,做得相当不错。可惜,你联系了我,玷污了这无瑕的记录。你的同事、家人,还有读这个专栏的陌生路人,记得你的就是这次失败。不过今天,要么纠正你的无知,要么写完那封我与牛油果解放阵线和解协议所要求的道歉信,那我就勉为其难试试吧。
我相当确定,你连自己的工作是什么都不清楚。是的,你入职时收到过一份滑稽的文件,上面写着“安装软件”、“调试 PHPython”,还有那句无比珍贵的“其他视情况而定的职责”,意思是老板可以把他被告知是 Web 服务器负载均衡器拉出来的东西堆成山砸到你桌上,叫你从中“摸索”出还能用的 SMPT 头。你大概会向那些倒霉到和你住一起的人宣称你老板是白痴,连 SMTP 都拼不对,而不是干点更有产出的事——比如精确找出网络团队里是谁胆敢惹你不快,并想出如何最有效地向此人以及闻得到他工位气味范围内的任何人展示这样做的明显令人不适的后果。
注意,这些都不是你的工作。这只是做你工作的前提。你的工作?你真正的工作?你拿钱干的事?跟系统管理毫无关系。
你的工作就是让老板高兴。
不是雇主。不是公司。是老板。你的直属上司。
就这样。这就是全部工作。你被雇来就是让他高兴——以一种与电脑相关的方式。
当然,他会用股东价值、取悦客户、FIPS 合规之类花哨行话来包装,但归根结底都是让他高兴。他存在的意义是让他的老板高兴,以此类推。一家公司就是一棵拍马屁的树,像 TLS 信任链,但更恶毒。
你的老板其实并不想要一本如何使用 ls(1) 的手册。他若坚持要,让他掏出撬棍撬开钱包,买一本 Nemeth 的《Unix and Linux System Administration Handbook》。他想要的是一个又大又软的泰迪熊活页夹,能抱在怀里向他的老板炫耀。毕竟他存在的意义是让他的老板高兴。
所以,给他想要的,而不是他要求的。
从 wiki 开始。你们这些小屁孩喜欢 wiki。我不懂你们为什么不肯学 Docbook 和 SGML,假装是个能干、有价值的人,但我要是操心你们这品格缺失,这专栏就长得没边了,再不把那封荒唐的道歉信寄出去,法官又要判我藐视法庭了。我的律师坚称凑齐十二张传票也不会让我升一级,这显然是假的。
所以。一个 wiki。或者一个 Markdown。两者之一。
挑你最无聊的任务——比如在服务器上装软件。第一次让服务器自己伸手到 Internet 抓软件并自行安装时,你可能会感到一丝惊奇,但作为专业系统管理员,你太清楚多少次简单的安装把你推入万劫不复的深渊。今天你敲下 pkg install fubar,看着包管理工具更新仓库、搜寻不兼容项,然后一丝不苟地糟蹋你的 LDAP 数据库。回想一下你还关心这份工作的日子——是的,我知道往回挖那么远很难,回忆那个打算改变世界的雀跃青年威胁到你精心维护的冷漠外壳,但那层脆弱的外壳需要大幅加固,而你不狠狠练习就练不出来。要等任何敢用无辜问题戳它的人都被苦涩的胆汁洪流浇透,它才算够结实。
如果你还关心,装任何东西之前你会先备份主机。也许不备份整台主机。用户家目录当然可以烧光死绝,因为那帮升斗小民已被告诫不要把要紧事托付给电脑,但软件配置文件、数据文件以及所有你负责的东西,当然应该备份。或者做快照,或者用 tarsnap,或者微雕到神秘的三面钢制巨石上,矗立在犹他沙漠,作为所有因飓风和雪崩太不识趣没来捧场而从未执行过的灾难恢复计划的纪念碑。
所以,在一张废纸上潦草写下“备份”。
注意,别写得太清楚。只要潦草到看见这涂鸦能让你想到备份,但又不要清楚到让倒垃圾的保洁以为你在考虑备份。姑且说你能想到的就这些。思考是一项技能,跟其他技能一样,坚持练习就能进步。
也许你需要的备份只是一个启动环境。启动环境免费,只要你不搅动数据。人人都喜欢免费。所以,在 wiki 上写下:
安装软件
创建启动环境
运行
pkg install whatever
现在轮到自私的部分。你的工作是让老板高兴,但那不是你的目标。系统管理的真正目标是最小化系统管理员的痛苦(系统管理员法则第 5 条)。最小化痛苦要求一致性。一致性意味着脚本化。系统管理员喜欢写脚本。
所以,写一个按你想要的方式安装软件的脚本。
在 wiki 底部加一句备注:本流程以 breakeverything.sh 实现。
当你在让老板高兴的泥潭里艰难跋涉,打造一个会对负载均衡器产生有趣影响、让网络组同事心脏适当颤动的非同寻常网页时,也许你会碰到一个问题,追溯到主机上某个麻烦的库。上周,在你跑软件安装之前,那个库还在吗?你在启动环境间跋涉查清楚。不过,一份主机在你安装包之前已装了哪些软件的清单能减少你的痛苦。把它加进你的流程和脚本。
是的,这跟程序员不得不给代码写文档可疑地相似。流程就是程序。
下次老板再提文档的事,把你的 wiki 打印出来递给他。
你还需要更多流程?嗯,你还写过哪些脚本让日子好过点?挤出文档的速度要快到让老板满意,但又不能快到让他厌倦。他若真心相信你对他布置的任务下了苦功,会最开心。
坚持下去,你就能把工作交给某个乐观的新人,然后换个新工作——在那里你会有一整队还不明白他们的工作就是让你高兴的人。
有问题想问 Michael? 请发送至 letters@freebsdjournal.org
MICHAEL W LUCAS 最近出版的图书包括《SNMP Mastery》、《Cash Flow for Creators》和《Drinking Heavy Water》,以及更多作品,详见 https://mwl.io。绝不允许他靠近用户。
最后更新于