【发布时间】:2014-06-04 06:37:39
【问题描述】:
我正在尝试找出构建解决方案以自动配置新 Rails 应用服务器的正确方法。
我查看了 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 安装乘客和 RVM
- 按照模板创建 Rails 应用程序目录(例如 /opt/local/test_app)
- 在 MySQL 服务器上创建新数据库、授予访问权限并设置防火墙规则
- 为 Nagios 创建防火墙规则并配置 Nagios 进行监控:
- 端口 80 用于重定向到端口 443
- 端口 443 用于 HTTP 200 状态
- 端口 443 用于文本“登录”
- 为应用目录配置备份(例如 /opt/local/test_app)
我已经在使用 Nginx、Nagios、Ufw 等社区食谱,并在自定义食谱中创建了食谱来配置 Mysql 和 Nginx。从一个应用程序的 Nginx/Mysql 食谱到下一个应用程序,只有很多重复的代码。
我正在努力解决的问题是在哪里使用 Cookbooks、Recipes、LWRP 和 Definitions 来正确地抽象它。
我应该将 Nginx 和 Mysql 的默认配置放在定义中,然后在食谱中使用它们还是使用默认值创建自定义包装食谱?
【问题讨论】:
-
谢谢@sethvargo。您对下面chef libraries or definitions? 和 JeanMetz cmets 的解释正是我所需要的。