我应该用傀儡走多远?

时间:2012-11-10 01:49:39

标签: puppet

我想先说我是傀儡的新手。我一直在通过vagrant开始工作,我开始觉得写清单很舒服,但我缺乏可以回答我问题的经验或直觉。

我正在努力了解木偶的作用范围以及绘制线条的位置。我特别感兴趣的是它如何适用于模块及其创建和使用。

更具体的示例:puppletlabs-nginx模块。所以假设我正沿着我的快乐方式,为给定的服务器角色创建一个清单;说它是一个简单的静态文件网络服务器,我想使用nginx。该模块显然将帮助我;有try_files支持等。我甚至可以通过这个模块进行反向代理。但是如果事情变得更加棘手呢?如果我想以编程方式执行某些操作而无法使用该模块,该怎么办?

好吧,也许简短的回答是自己解决,做一个拉动请求,并以我的快乐方式。但那又停在哪里了?社区木偶模块的目标是支持给定软件包的每个方面吗?这似乎难以管理。另一方面,是不是会创建一堆主要由用例构建的大部分模块?

然后,有一个类似于Android UI:我认为最常见的XML UI定义有setter方法。在木偶中如果感觉相似。您可以通过编程方式构建配置文件,也可以通过填写ERB模板来创建配置文件。换句话说,我觉得配置文件的程序化创建和配置文件的模板化创建之间的木偶线是模糊的;我找不到Android的最佳方式,因此我不知道哪种方式可以使用木偶。

所以,问题是:什么构成了理想的木偶模块?它应该更多地依赖模板吗?在清单?它应该考虑所有配置方案吗?

从进一步退缩的角度来看,我似乎想要一些更自以为是的东西。 Puppet的力量似乎是灵活性和抽象性,但那里的模块感觉不一致而不是充实。

感谢阅读...

3 个答案:

答案 0 :(得分:2)

感谢马克。在短短的一段时间里,我已经转而与厨师一起玩,而且模块似乎在我提出的许多问题上都表现得更好。

答案 1 :(得分:1)

简而言之,我可以向你解释傀儡。

Puppet只是一个IT自动化工具,我们可以通过在master上创建清单(配方或脚本)来安装在目标计算机上的软件,从而在其他计算机上安装软件。 这里master表示软件的puppet清单的实现。      目标机器指示要安装软件的代理。

Puppet模块由以下结构构成,我们在master中执行此操作。

在master中,路径是/ etc / puppet / modules进入modules目录,你已经提到了puppletlabs-nginx module.so现在我们可以把这个模块作为一个例子。

在模块目录之后,我们必须创建文件并显示目录。此外,在清单目录中我们将创建.pp文件。例如,install.pp,uninstall.pp.this是模块结构的方式。我们通常运行这些使用少量资源(如包,服务,文件,exec等)来编写脚本。

模板在木偶清单中扮演次要角色只是为了硬化价值观。它不是木偶的主要部分。在木偶中,清单非常重要。

为了使用puppet自动化任何软件,我们可以遵循上述结构。

谢谢。

答案 2 :(得分:1)

这里的PuppetLabs解决方案是为每个功能使用不同类型的模块 - 组件,配置文件和角色。有关详细信息,请参阅演示文稿Designing Puppet: Roles/Profiles Pattern

PuppetForge提供的模块属于“组件”类型。他们的目的是尽可能灵活,同时专注于单个逻辑软件 - 例如,apache httpd服务器或apache tomcat,但不是两者兼而有之。

您可能编写的用于包装其中一个组件模块的模块类型将是“配置文件”模块的完美示例。这可以将apache httpd与tomcat和jboss以及其他一些组件(如mysql和php)联系在一起。但它是一个逻辑堆栈,具有多个组件。或者你可能有一个LAMP Profile模块和一个单独的tomcat + jboss Profile模块。

下一级是“角色”模块。除了指向适当的Profile模块的“include”语句之外,它们不应该包含任何内容。

有关详细信息,请参阅PuppetLabs演示文稿,但此逻辑与Chef世界中使用“wrapper cookbooks”的内容非常相似。