在Chef Cookbook中使用自定义nginx.conf

时间:2013-10-21 07:31:32

标签: nginx chef vagrant cookbook

我正在使用http://community.opscode.com/cookbooks/nginx在Vagrant上安装Nginx

我希望Nginx从我的配置文件/home/vagrant/nginx/nginx.conf开始,但它似乎坚持使用etc/nginx/nginx.conf

我的Vagrantfile的相关部分是:

chef.add_recipe "ohai"
chef.add_recipe "runit"
chef.add_recipe "nginx"

chef.json = {
    :nginx => {
        :install_method => "source",
        :source => {
            :version => "1.4.1",
            :conf_path => "#{VAGRANT_HOME_DIRECTORY}/nginx/nginx.conf",
        }
    }
}

这里发生了什么?

1 个答案:

答案 0 :(得分:5)

我按照以下要求安装和配置nginx。这是我安装和配置nginx的方法:

include_recipe "apt"

apt_repository 'nginx' do
  uri          'http://nginx.org/packages/ubuntu/'
  distribution node['lsb']['codename']
  components   ['nginx']
  key          'http://nginx.org/keys/nginx_signing.key'
  deb_src      true
end

apt_package 'nginx' do
  action :install
end

file "/etc/nginx/nginx.conf" do
   action :delete
end

cookbook_file "/etc/nginx/nginx.conf" do
   source "nginx.conf"
   action :create
end

service "nginx" do
   action :start
end

说明:

  1. sources.list下配置nginx仓库。这需要提供apt_repository LWRP的apt食谱,
  2. 删除现有/etc/nginx/nginx.conf并使用cookbook_file复制预定义的nginx.conf。我已根据我的要求配置files并将其保存在食谱的{{1}}目录下。
  3. 底线,我不使用nginx cookbook安装nginx;相反,我将它作为一个包安装,然后根据我的需要进行配置。