我正在使用 Chef 配置一个 Vagrant 虚拟机,它很棒,但我不确定应该将代码放在哪里来配置由第三方 Chef 食谱安装的软件。
例如,我正在使用以下方式安装 NGINX这个食谱但我需要配置默认虚拟主机来提供内容,/vagrant/public
而不是/var/www/nginx-default
。
我应该更改第三方配方的模板,还是创建另一个重新配置它的配方?
答案1
有几件事:
自从撰写这个问题以来,Opscode 已经将其存储库结构拆分为每个食谱一个存储库,以使项目更加清晰。
最新发布的稳定 nginx cookbook 可以在这里找到:http://community.opscode.com/cookbooks/nginx
至于从备用容器提供网页:
做这样的事情的惯例是编写一本更简单的食谱,它利用nginx
食谱但为您提供一种“做您想做的事情”的方法。
由于默认的 nginx 安装会删除一个配置文件并设置源目录,因此我在“包装器”手册中执行此操作的方法是:
- 创建我的食谱
- 声明
depends 'nginx'
于metadata.rb
在我的食谱中
attributes/default.rb
,将以下属性设置为 false:default['nginx']['default_site_enabled'] = false
在我的 中
recipes/default.rb
有:include_recipe 'nginx' cookbook_file '/etc/nginx/sites-available/mycustomwebapp' nginx_site 'mycustomwebapp' do action :enable end
创建一个如下所示的 nginx conf 文件
files/default/mycustomwebapp
:server { root /vagrant/public; index index.html index.htm; blah blah... }
那你就可以出发了!