“我们不是程序员,我们是系统管理员”
我怎么时代变了,变得更糟:像我这样的樽被预计会比专业程序员更好的程序员,要不然也从来没有能够通过一个系统管理员。
现在,我们有了“系统管理员”,他们基本上是Windows桌面用户,他们在某些时候已经转换为Linux,并且无法编程,也没有发现任何错误。
房间里的大象是管理层宽容这种破坏性态度的原因。对谁或什么具有破坏性?对于企业和基础设施。
回到Puppet [,CFEngine,Chef]主题:一旦提出了这样的解决方案,就会输掉。每个人都输了。为什么?因为无论是谁提出的,都无法以美观,干净,Kickstart [,JumpStart,自动安装程序,AutoYaST,Ignite-UX,NIM]操作系统软件包的形式设计封装的配置管理。当您必须使用自动黑客工具(例如Puppet(或Chef或CFEngine))时,这意味着您缺乏设计和实施过程的资金,而该过程将通过相同的设计完全执行原始操作,并完全淡化托管系统。自动化且完全非交互。
另一个重要的一点是,如果您必须拥有Puppet或某些此类解决方案来手动纠正某人的黑客系统或应用程序配置,那又可以追溯到没有设计流程的经验,并且在该流程中没有打包配置的框架分成离散的组件。实际上,无论谁实现Puppet等,都没有组件所有者,发布,配置管理,能力成熟度模型的概念。这正在迅速发展成为行业中非常严重的问题。
与Puppet一起工作还帮助我学习了Ruby,它已取代Bash成为我的默认系统工具语言。”
仅通过使用Bourne Shell程序,AWK和sed,就可以在操作系统软件包的安装前,安装后,移除前和移除后部分中封装全面的端到端配置管理,为什么需要Ruby?完全没有必要花一些时间去学习Ruby的一种深奥的语言,以及在Puppet上下文中的一种方言。使用shell程序和AWK以及在这里和那里一点点sed(1)作为胶水,很容易解决(而且已经解决了)配置管理的问题。
看到您的Puppet清单从头开始配置整个计算机或新服务,这是一种很酷的感觉。
看到它是由Kickstart,AutoYaST或JumpStart完成的,甚至没有一件简单的代码,并且能够使用内置工具来查询操作系统,而无需任何深奥或额外的软件,也不需要客户端服务器,这是一件更酷的事情。所需的体系结构(SSH远远超过了罚款,远远超过了罚款),并且看到您的操作系统知道对其进行的每一个更改。
5.将代码与数据分开。这是较难学习的概念之一。将“监视主机”之类的值硬编码到模块代码中是不好的。将它们放在模块可以使用的数据存储区(db,yaml(Hiera使用此默认值),csv等)中是很好的。一个示例是使用Mysql的Web应用程序。这允许的是分别推送代码和数据的能力。这使您的开发过程更加简单。
...或者您可以仅使用shell变量,甚至用反引号(例如)将您的配置文件模板化,ls -1 ...
并编写一个使用AWK调用eval(1)并扩展模板中所有变量的shell脚本,从而充分利用相同的强大功能解析器内置了哪些shell。当它真的可以真的很简单时,为什么还要使其复杂?您将在哪里存储配置值?为什么在您喜欢的任何地方(例如pkginfo(4)文件,Oracle之类的数据库)或几乎任何地方都可以。无需超复杂的解决方案。我上面提到的文库可以简单地来源于从安装前或安装后的部分中的操作系统软件包,从而去除重复和利用一个中央一段代码...
但是最重要的是,我发现以上引用是下一代系统管理员的一个示例,该系统管理员不需要系统管理员,而是需要系统工程师进行辅导。找到一个白胡子,然后作为学徒登录。