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

我看了一下厨师铁轨食谱,似乎有些冗长。 在我们的案例中,我们总是以某种方式部署Nginx,总是以某种方式执行备份,等等,因此从一个节点定义到下一个节点定义,大部分配置都是多余的。

我的目标是仅通过定义以下信息就能创建新的Rails App服务器。

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应用目录(例如/ opt / local / test_app)
  • 在MySQL服务器上创建新数据库,授予访问权限,并设置防火墙规则
  • 为Nagios创建防火墙规则并配置Nagios进行监视:
    • 端口80重定向到端口443
    • HTTP 443状态的端口443
    • 文本“ login”的端口443
  • 配置应用程序目录的备份(例如/ opt / local / test_app)

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

我正在努力的是在哪里使用食谱,食谱,LWRP和定义来适当地抽象这些内容。

我应该将Nginx和Mysql的默认配置放在“定义”中,然后在配方中使用它们还是使用默认值创建自定义包装食谱?

===============>>#1 票数:2 已采纳

首先,看一下application_ruby工件食谱,它们都可以为您自动化这些工作流程。

我特别喜欢使用工件菜谱,因为它提供了很多灵活性,但是application_ruby菜谱具有对乘客,Unicorn和其他在Rails应用程序需求中通常会发现的工具的内置支持。

至于关于菜谱,食谱,LWRP和定义的问题,我一定会在https://stackoverflow.com/a/21733093/747032上查看@sethvargo的答案。 它为Opscode的一名员工(现称为Chef(公司))以及经常参与Chef社区并因此对此主题有丰富知识的人提供了有关何时使用的良好指南。

就我的建议(我将保持简洁):

  • 使用LWRP打包通常总是一起调用的许多资源,例如,我们使用“ AWS EBS” LWRP创建,安装和格式化新的EBS。
  • 使用配方调用所有LWRP(自定义和公共)和资源。
  • 不要使用定义,我认为LWRP确实不赞成使用它们。

  ask by Andrew Hopper translate from so

未解决问题?本站智能推荐:

关注微信公众号