首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >rails堆栈的Puppet设置示例?(nginx,varnish,thin,postgres,memcached,redis)

rails堆栈的Puppet设置示例?(nginx,varnish,thin,postgres,memcached,redis)
EN

Stack Overflow用户
提问于 2011-04-26 07:06:37
回答 1查看 5.9K关注 0票数 17

我才刚刚开始使用Puppet。示例演练和教程很好地帮助我理解了Puppet的用处和基本工具集,但我很难对整个堆栈进行概念化。即使是advanced tutorial似乎也没有给我一个需要发生什么的清晰画面。

有没有什么完整的rails堆栈的例子可以让我学习?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-28 01:35:00

很难找到完整堆栈的示例。但是,您应该能够找到管理其中一些特定示例的模块示例。一个问题是,创建一个抽象了所有特定于站点的假设的模块可能会有很多额外的工作,而且是真正的跨平台。

http://forge.puppetlabs.com/是人们希望共享的模块的规范位置。通过快速扫描,我找到了用于nginxvarnishpostgres的模块。

您需要从Puppet Best Practices开始进行基本设置。

在此基础上,您将(至少)需要一个用于nginx、varnish、thin、postgres、memcached、redis的模块和一个site模块(可能以您的站点命名)。

在您的nodes.pp中,每个系统都有一个相当简单的角色分配。(“包含角色”)

在您的"site“模块中,您需要为每个系统角色创建一个子类(我假设您将拥有多组服务器,并且在一组服务器中,它们应该彼此基本相同。我还假设您可能包含以上多项内容)。您可能还需要一个site::class变量类(或类似的类),用于存储跨多个其他模块或类可能需要的内容(如角色中的服务器列表、密码等)。最佳实践似乎是将这些site::role放在名称更像s_role的/services辅助模块区域中,因此您可能希望遵循这种命名/放置方案。这些角色类将包括那些角色、调用定义等所需的实际组件的类。

对于你提到的6个组件中的每一个,你都会有一个模块。在该模块中,您可能希望拥有类似于"server“和"client”的子类。可能还有第三个类包含在客户端和服务器端,用于两者所需的东西(通用库等)。在server子类中,定义设置特定的实例(虚拟主机、数据库等)。(如果它绝对只是一个服务器,也许可以跳过这个级别的子类化)。

所以,举个例子:

  • postgres模块(清单,文件,模板等)
    • postgres类(在init.pp中):可能是空类,可能是客户端和服务器需要的东西
      • postgres::client类: install postgres客户端libraries
      • postgres::server类:安装postgres服务器代码,确保postgres服务正在运行,配置它,设置备份等
        • postgres::server::database定义:在服务器类内部,一个定义,它接受参数,如数据库名称,用户名,密码,并创建数据库和用户,并给予用户访问数据库的权限。这可能是两个或三个不同的定义,这取决于您喜欢如何对things.

建模

如果组件模块保持相当独立(和可重用),并且角色类是发生更多特定于站点的配置的地方,这是最好的,但如果您的组件模块包含一些特定于站点的内容,这并不是世界末日。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5784264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档