正历经变革的 Linux 系统管理员技能
你上次编译内核是多久以前的事儿了?新生代 Linux 管理员的答案很简单:我压根儿没编译过内核。我也从没编译过内核,当然自己弄着玩儿的不算。我实在想不到我为啥需要自定义内核,所以我就用我的“开箱即用”内核了。
Linux 老鸟们可能会笑话我们,但你不能否认:随着越来越多的企业采用 Linux,新生代的 Linux 管理员虽然生就一身相当不错的技术实力,却因缺乏编译内核这类简单却基础的技能而和一个优秀的 Linux 管理员之间存在差距。我们能用时下最前沿的技术搭建一套高性能、高可用的 Web 基础设施,但你别让我们修理一台无法启动的 Linux 机器——我们会建议你扔了它,然后换个新的虚拟机。
过去的十来年里发生了很多有意思的事儿:Linux 不但变成了商品,而且其层出不穷的发行版也越来越强大和灵活。如今,一个普通的系统管理员完全不必掌握编译内核这类底层技能了。
然后,我们又见证了虚拟机技术的商品化。使用 Amazon 云主机或者 VPS 的用户也许永远不用在裸机上部署 Linux。随着混合云和私有云的日益普及,甚至很多企业级的系统管理员都不需要在裸机上部署 Linux——登录 Web 管理界面,一次性就能搞定不止 5 台 Apache 虚拟机。
时下最新的两个趋势:一个是配置管理,另一个看起来很前沿(其实一点儿都不前沿)—— 像 docker 这样的部署工具包,它们隐藏了更多 Linux 底层技术细节。每当客户要求我们在 OlinData 上配置 Linux 机器时,我们的第一个动作就是架设 Puppet。有了功能强大值得信赖的 Puppet 模块,手工配置也更快更简单了。
例如,我可以这样使用 Puppet 在新机器上安装 Apache:
node 'web01.olindata.com' { include apache apache::vhost{ 'www.olindata.com': docroot => '/var/www/olindata' } }
在这种环境下,我甚至都不用在机器上打开日志。通过 Jenkins 这样的不间断部署工具,我可以完全自动化部署我的基础设施代码,并确保它们通过了我预置的测试。
系统管理员技能日益升级
就算有更新的工具对我们隐藏更多的技术细节,坚持 Linux 训练对系统管理员来说仍然很有价值。了解基础知识很关键,这些抽象高级工具把管理员从旧的任务中解放了出来,那么系统管理员就应该强化自己使用这些高级工具的能力。熟悉高级工具对系统管理员提升层次来说很关键,这会迫使系统管理员不断练习编写代码一类的能力,并借此发挥这些新玩意儿更大的潜力。