全栈的例子很难找到。但是你应该能够找到管理某些特定示例的模块的示例。问题在于创建一个抽象了所有特定网站假设并真正跨平台的模块可能需要大量额外的工作。
http://forge.puppetlabs.com/ 是人们希望分享模块的规范位置。通过快速扫描,我找到了nginx、varnish和postgres的模块。
您将从Puppet最佳实践开始进行基本设置。
从那里开始,您至少需要一个nginx、varnish、thin、postgres、memcached、redis和站点模块(可能以您的站点命名)。
在nodes.pp中,每个系统都会分配到一个相当简单的角色。("include role")
在你的“站点”模块中,你需要为每个系统角色创建一个子类(我假设你会有多组服务器,并且在一个组内,它们应该基本相同。我还假设你可能会包含多个以上的内容)。您还可能需要一个site::commonvariables类(或类似的东西)来存储一些跨多个其他模块或类需要的内容(例如角色中的服务器列表、密码等)。最好的实践是将这些site::role放置在/services二级模块区域中,名称更像是s_role,因此您可能希望遵循该命名/位置方案。这些角色类将包括所需组件的类、调用定义等。最好保持组件模块相对独立(可重用),您的角色类是所有更具站点特定性质的配置发生的地方,但如果您的组件模块包含一些站点特定的内容,也不是世界末日。