我刚刚开始使用Puppet。示例演练和教程很好地帮助我理解Puppet的有用性和基本工具集,但是我很难概念化整个堆栈。即使是advanced tutorial似乎也没有给我一个清晰的图像,说明需要发生什么。示例轨道栈的Puppet设置? (nginx,varnish,thin,postgres,memcached,redis)
是否有任何完整的轨道栈示例,我可以从中学习?
我刚刚开始使用Puppet。示例演练和教程很好地帮助我理解Puppet的有用性和基本工具集,但是我很难概念化整个堆栈。即使是advanced tutorial似乎也没有给我一个清晰的图像,说明需要发生什么。示例轨道栈的Puppet设置? (nginx,varnish,thin,postgres,memcached,redis)
是否有任何完整的轨道栈示例,我可以从中学习?
完整堆栈的例子很难得到。但是,您应该能够找到管理某些特定示例的模块示例。一个问题是,创建一个抽象出所有站点特定假设并且是真正跨平台的模块可能需要额外的工作。
http://forge.puppetlabs.com/是人们希望分享的模块的规范位置。通过快速扫描,我发现模块为nginx,varnish和postgres。
您需要从Puppet Best Practices开始进行基本设置。
从那里,你要(至少),需要一个模块nginx,varnish,thin,postgres,memcached,redis和一个站点模块(可能以您的站点命名)。
在你的nodes.pp中,每个系统都有一个相当简单的角色分配。 (“包含角色”)
在你的“网站”模块中,你需要为每个系统角色分配一个子类(我假设你将有多组服务器,意图是基本相同的,我也假设你可能有多于一个以上的)。您可能还需要一个site :: commonvariables类(或类似的东西),用于跨多个其他模块或类可能需要的东西(例如角色中的服务器列表,密码等)。最佳做法似乎在名称更像s_role的/服务辅助模块区域中包含这些site :: role事件,因此您可能需要遵循该命名/布置方案。这些角色类将包括这些角色所需的实际组件的类别,调用定义等。
对于您提到的6个组件中的每一个,都会有一个模块。在该模块中,您可能需要以拥有类似“服务器”和“客户端”子类的内容。客户端和服务器可能包含第三个类,用于两个(公共库等)需要的东西。并且在服务器子类中定义一个设置特定实例(虚拟主机,数据库等)的定义。 (如果它绝对只有一台服务器,可能跳过子级别)。
因此,举例来说:
这是最好的,如果组件模块都保持相对独立(和可重复使用)和你的角色等级是所有更具体的站点配置情况,但它不是结束世界,如果你的组件模块包含一些网站特定的东西。
感谢这个信息。这可能是我希望得到关于这个问题的明确答案的最接近的结果。我碰到的一个障碍是,要开始时,我将只运行2个具有混合“类”的虚拟机 - 将负载均衡器和应用程序服务器称为一个,将数据库称为另一个。随着网站的增长,我想要分离应用服务器(并可能增加更多)。我没有看到很多这样的例子(分裂课程),所以很难在这方面衡量一个“最佳实践”的设置。如果您有任何其他提示,他们会非常感激。再次感谢。 – markquezada 2011-04-27 20:26:59
创建至少与您认为最终可以分割内容的单个类相同的类,并为每个VM“类型”定义一个主类,以定义这些类中包含哪些类。在成长过程中,为新的角色拆分创建新的主类,并将服务器分配给新的主类而不是旧的主类。您可能还需要一些“否定”类,它们删除一个类,并将这些类包含在已从系统角色中删除的东西上。 – freiheit 2011-04-27 22:01:45
超级有用。谢谢! – markquezada 2011-04-28 00:42:38