2012-11-10 26 views
4

我想说我是新来的傀儡。我一直在通过vagrant与它合作,并开始感到舒适写作清单,但我缺乏可能回答我的问题的经验或直觉。我应该用木偶去多远?

我想要了解傀儡的范围以及绘制线的位置。我特别感兴趣的是这如何适用于模块及其创建和使用。

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

好吧,也许最简单的答案是自己修复它,做一个拉动请求,然后沿着我的快乐方式走。但是,这停止在哪里?社区傀儡模块的目标是支持给定软件包的每个方面吗?这似乎难以管理。另一方面,这是不是创建了一堆大多数的烘焙模块,仅从用例构建?

然后,有一种类似于Android的UI:我认为这是大多数XML UI定义的setter方法。在傀儡如果感觉相似。您可以通过编程方式构建配置文件,也可以通过填写ERB模板来创建配置文件。换句话说,我觉得配置文件的编程创建和配置文件的模板化创建之间的傀儡界线模糊不清;我发现没有Android的最佳方式,所以我不知道哪种方式去与木偶。

那么,对于这个问题:什么构成理想的傀儡模块?它应该更多地依赖模板吗?在清单?它是否应该考虑所有配置方案?

从进一步撤回的角度来看,我似乎想要一些更有见地的东西。木偶的力量似乎是灵活性和抽象性,但是那些在外面的模块感觉不一致并且没有充实。

感谢您阅读...

+0

你的担心似乎反映了那些切换到[厨师](http://wiki.opscode.com/display/chef/Home)的人。 –

+0

曾经见过厨师;至今没有调查过。你能给个例子吗? –

回答

2

感谢Mark。在很短的时间内,我已经转而和厨师一起玩,并且这些模块似乎更适合我所表达的许多担忧。

1

总之,我可以解释你的傀儡。

Puppet不过是一个IT自动化工具,我们可以在其他机器上安装软件,方法是在主机上创建清单(配方或脚本),以便将这些软件安装到目标机器上。 这里master表示软件的puppet清单的实现。 目标机器指示要安装软件的代理。

傀儡模块由以下的结构构成,在主人做这个。

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

模块目录之后,我们必须创建文件和清单目录。此外,在清单目录中,我们将创建.pp文件。例如,install.pp,uninstall.pp.this是模块结构的样子。我们通常使用包装,服务,文件,可执行文件等少量资源来运行这些脚本。

模板在木偶清单中扮演的角色仅仅是为了强化值。它不是puppet的主要部分。清单有很好的在傀儡的重要性。

对于使用puppet自动化任何软件,我们可以按照上面的结构。

谢谢。

0

这里的PuppetLabs解决方案是为每个功能使用不同类型的模块 - 组件,配置文件和角色。请参阅介绍Designing Puppet: Roles/Profiles Pattern了解更多信息。

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

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

下一级是“角色”模块。除了指向相应Profile模块的“include”语句外,他们不应该有任何内容。

请参阅PuppetLabs演示文稿以获取更多细节,但是这种逻辑与厨师世界中使用“包装食谱”所看到的非常相似。