devops工具生态系统令我感到困惑。 服务器编排/pipe理空间中的每个人都在使用自己的专有格式,而不是使用shell脚本。 Ansible有他们的YAML游戏手册,Puppet有它的类/graphics语言,salt像ansible有某种YAML格式,厨师是一个embedded的Ruby DSL。 在所有这些方法中,我最喜欢厨师,因为它做的是最简单的事情。 所以我想一个好处是当你使用这些工具之一时,对机群的可视性更好,但是这与实际的configuration和configuration组件是正交的。
我不明白为什么每个人都试图用YAML来重新发明shell脚本,因为往往不是ssh -t就是我需要做的事情,以及一些shell脚本的库。 这些脚本通常打包为自包含的tar文件,并且足够小而且足够简单,可以根据需要进行混合和匹配。 除了bash ,它们具有零依赖关系,几乎可以在任何地方工作。 那么为什么这样一个简单的解决scheme不足以胜任真人,傀儡,厨师等呢? 通过用其他格式replacebash脚本,所有这些解决scheme能获得什么?
有很多很好的理由使用configurationpipe理软件。 虽然有很多不同的工具,但我会专注于Puppet的一些function(主要概念大致相同)。
注意:尽pipe您可能会认为编写自己的脚本可能会获得相同的结果,但是大概您必须编写和维护一个较大的代码库才能完成相同的任务。
作为一种基于模型的声明式IT自动化方法,您可以使用Puppetconfiguration语言定义基础架构的所需状态或“什么”。
一旦部署了这些configuration,Puppet会自动安装必要的软件包并启动相关的服务,然后定期执行所需的状态。
在自动化世俗化过程中,Puppet让您可以在更具挑战性的项目上工作,从而产生更高的业务影响力。
您可以执行各种有趣的事情,比如安装软件包(在各种操作系统上),或者确保只安装特定版本的软件包。
package { "screen": ensure => "installed" }
上面的代码确保安装了“屏幕”包,这将在Debian(使用apt)或Redhat(使用yum)上运行。 你不需要为每个包pipe理系统维护自己的脚本或逻辑,木偶为你做。
在模板,事实,集体,angular色,graphics用户界面,事件检查,干运行,支持和木偶铸造等方面还有很多其他的好处。