如何在流浪汉上用厨师独奏配置nginx?

时间:2014-01-15 23:13:11

标签: nginx chef vagrant

我有一个可以启动的流浪汉VM,我已经通过以下方式为其配置了nginx:

config.vm.provision "chef_solo" do |chef|
chef.add_recipe "nginx"

当它启动时,nginx已安装并正在运行。完善。 (我使用berkshelf管理食谱,一个来自opscode)
现在我想实际配置nginx,在这种情况下作为反向代理运行。我似乎无法找到如何。我可以准备一个conf文件并将其发送到VM但我确信还有另一种方法可以利用这本菜谱。最好的选择是能够按照上述方法在Vagrant文​​件中直接配置它。也许使用像http://docs.vagrantup.com/v2/provisioning/chef_solo.html所述的自定义json数据 它看起来像是:

chef.json = {
    "nginx" => {

http://community.opscode.com/cookbooks/nginx的食谱页面对我来说有点神秘,有一些有趣的选项,但我不知道如何包含/使用它们。

2 个答案:

答案 0 :(得分:0)

如果要将nginx配置为反向代理,则需要编写调用cookbook_file资源或template资源的cookbook配方。我建议使用后者,因为它稍后会更灵活,并会为您提供可重复使用的模板供其他食谱使用。

我建议你在这里阅读文档: http://docs.opscode.com/resource_template.html#using-templates

如果你想从真正的食谱中看到反向代理示例。看看这里:

https://github.com/lusis/chef-kibana/blob/master/recipes/nginx.rb

https://github.com/lusis/chef-kibana/blob/master/templates/default/kibana-nginx.conf.erb

希望这有帮助。

答案 1 :(得分:0)

这对我有用:

Vagrant.configure("2") do |config|

    config.vm.box = "opscode-ubuntu-14.04"
    config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_ubuntu-14.04_chef-provisionerless.box"

    config.omnibus.chef_version = :latest

    config.vm.provision "shell", inline: "echo 'set nocp' > /home/vagrant/.vimrc"

    config.vm.define "nginx" do |nginx|

        nginx.vm.network "private_network", ip: "192.168.33.14"

        nginx.vm.provision :chef_solo do |chef|
            chef.cookbooks_path = "cookbooks"
            chef.add_recipe "nginx"

            chef.json = {
                :nginx => {
                    dir: '/etc/nginx'  # this is the default value, sample only
                }
            }
        end

        nginx.vm.provision "shell",
            inline: "echo -e $1 > /etc/nginx/conf.d/nginx.conf",
            args: [<<-EOS
                server {
                    listen *:80;

                    location ~ ^/ {
                        proxy_pass http://192.168.33.11:8080;
                    }
                }
            EOS
            ]

    end

请注意,在我编写nginx.config的地方,我可以编写其他的每站点配置(domain1.conf,domain2.conf),它们都将被加载。

我最终需要拉下一些食谱:

https://github.com/opscode-cookbooks/nginx
    https://github.com/opscode-cookbooks/build-essential
    https://github.com/opscode-cookbooks/ohai
    https://github.com/opscode-cookbooks/bluepill       
        https://github.com/opscode-cookbooks/rsyslog
    https://github.com/hw-cookbooks/runit
    ??
        https://github.com/opscode-cookbooks/yum