我有一个可以启动的流浪汉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的食谱页面对我来说有点神秘,有一些有趣的选项,但我不知道如何包含/使用它们。
答案 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