如何使用vagrant和chef创建虚拟主机

我已经设置了我的第一台流浪汉机器,并通过刀下载了一些食谱。

我坚持使用虚拟主机的设置。

这是我的Vagrantfile:

Vagrant.configure("2") do |config| config.vm.box = "precise32" config.vm.box_url = "http://files.vagrantup.com/precise32.box" config.vm.network :forwarded_port, guest: 80, host: 8080 config.vm.network :private_network, ip: "192.168.33.10" config.vm.provision :chef_solo do |chef| chef.json = { "mysql" => { "server_root_password" => "admin", "server_repl_password" => "admin", "server_debian_password" => "admin" }, "apache" => { "listen_address" => "0.0.0.0" } } chef.add_recipe "apt" chef.add_recipe "vim" chef.add_recipe "openssl" chef.add_recipe "apache2" chef.add_recipe "mysql" chef.add_recipe "mysql::server" chef.add_recipe "php" # chef.add_recipe "php::module_apc" chef.add_recipe "php::module_curl" chef.add_recipe "php::module_mysql" chef.add_recipe "apache2::mod_php5" chef.add_recipe "apache2::mod_rewrite" end web_app "blog_site" do server_name "blog" server_aliases [ "blog.#{node['domain']}", node['fqdn'] ] docroot "/var/www/blog_site" end # end 

我在这里看到,如果我想通过apache cookbook设置虚拟主机,我必须使用“web_app”定义。

我已将web_app添加到vagrant文​​件中,但是我收到此错误

 in `block in ': undefined method `web_app' for main:Object (NoMethodError) 

这意味着(我认为)语法错误:)

我怎样才能解决这个问题? “web_app”的定义在哪里?

调用web_app必须进入配方。

例如,您可以在名为my-site的目录中创建my-site cookbook。 必须至少有3个文件:

  1. 具有基本元数据的my-site/metadata.rb metadata.rb:

     name "my-site" description "Adds Apache domain configuration for my site" 
  2. my-site/recipes/default.rb

     include_recipe "apache2" web_app "my_site" do server_name "my-site.localhost" server_aliases ["www.my-site.localhost"] docroot "/vagrant" end 
  3. my-site/templates/default/web_app.conf.erb – 从apache2 cookbook( apache2/templates/default/web_app.conf.erb )的示例模板中复制它的内容。

请注意,我使用"my-site.localhost"作为ServerName。 您应该将其替换为您的域名,因为您的代码中未定义node['fqdn']node['domain'] 。 DocRoot也必须是您网站的正确路径 – 它可能是您的流浪汉同步目录,默认情况下为"/vagrant" (您可以更改它)。

您可能还想将192.168.33.10 my-site.localhost添加到hosts (您的实际操作系统)上的hosts文件中。

我写了关于Vagrant和Chef solo的介绍性文章,它可能对你有用: http : //scriptin.github.io/2013-05-09/vagrant-chef-intro.html

它必须进入你必须编写的食谱的配方,因为它(显然?我不太熟悉Apache食谱)不可能通过普通节点配置( chef.json )配置Apache虚拟主机。