Chef LWRP,Definition或Cookbook,用于抽象Nginx虚拟主机的创建

时间:2014-04-19 22:37:10

标签: chef-recipe chef

我试图找出构建自动配置新Rails App服务器的解决方案的正确方法。

我看过chef-rails食谱,看起来有点冗长。在我们的例子中,我们总是以某种方式部署Nginx,总是以某种方式执行备份等,因此从一个节点定义到下一个节点定义的配置将是多余的。

我的目标是通过定义以下信息来创建新的Rails应用服务器。

wh_webhead "test_app" do
  ssl :enable
  backups :enable
  passenger :enable
  ruby_version 2.0.0
  db_type :mysql
  db_user "testuser"
  db_pass "3207496r9w6"
  nagios_ssl_string_match "login"
end

然后我希望Chef执行以下操作:

  • 创建用户帐户
  • 设置框并安装
  • 使用通配符SSL证书安装Nginx
  • 配置日志轮换
  • 设置防火墙规则以允许流量到端口80和443
  • 使用Ruby 2.0.0安装Passenger和RVM
  • 按照模板创建Rails app dirs(例如/ opt / local / test_app)
  • 在MySQL服务器上创建新数据库,授予访问权限并设置防火墙规则
  • 为Nagios创建防火墙规则并配置Nagios进行监控:
    • 端口80,用于重定向到端口443
    • 端口443,用于HTTP 200状态
    • 文本的端口443"登录"
  • 配置app dir的备份(例如/ opt / local / test_app)

我已经在使用Nginx,Nagios,Ufw等社区食谱,并在自定义食谱中创建配方以配置Mysql和Nginx。从一个应用程序的Nginx / Mysql菜谱到下一个菜单中只有很多重复的代码。

我正在努力解决的问题是在哪里使用Cookbook,Recipes,LWRPs和Definitions来正确抽象。

我应该在定义中放入Nginx和Mysql的默认配置,然后在配方中使用它们或使用默认值创建自定义包装器烹饪书吗?

1 个答案:

答案 0 :(得分:2)

首先,请查看 application_ruby artifact 食谱,两者都可以为您自动执行这些工作流程。

我特别喜欢使用神器食谱,因为它提供了很大的灵活性,但 application_ruby 食谱内置了对乘客,独角兽和其他工具的支持。 #39; d通常在Rails应用程序要求中找到。

关于食谱,食谱,LWRP和定义的问题,我肯定会在https://stackoverflow.com/a/21733093/747032查看@ sethvargo的回答。它为Opscode(现在称为Chef(公司))的员工以及经常参与Chef社区并因此具有该主题知识的人提供了一个很好的指导。

就我的建议而言(我将简明扼要):

  • 使用LWRP来包装总是一起调用的大量资源,例如,我们使用" AWS EBS" LWRP,用于创建,安装和格式化新的EBS'。
  • 使用食谱来呼叫所有LWRP(自定义和公共)和资源。
  • 不要使用定义,我认为LWRP确实弃用了这些定义。