Vagrant::Config.run do |global_config| aptdir = (ENV['APTCACHE'] or "#{ENV['HOME']}/aptcache/") checkout = (ENV['COOKBOOKS'] or "#{ENV['HOME']}/openstack-cookbooks") ip_prefix = (ENV['IP_PREFIX'] or "192.168.76.") mac_prefix = (ENV['MAC_PREFIX'] or "080027076") fixed = (ENV['FIXED'] or "10.0.76.0/24") global_config.vm.define :chef do |config| suffix = "100" ip = "#{ip_prefix}#{suffix}" config.vm.box = "base" config.vm.box_url = "http://images.anso.com/vagrant/maverick64.box" config.vm.customize do |vm| vm.memory_size = 1024 end config.vm.network(ip, :mac => "#{mac_prefix}#{suffix}") config.vm.share_folder("v-apt", "/var/cache/apt", aptdir) config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "#{checkout}/cookbooks" chef.roles_path = "#{checkout}/roles" chef.log_level = :debug chef.run_list = [ "recipe[apt]", #"recipe[apt::cacher]", "recipe[chef::bootstrap_server]", "recipe[anso::cookbooks]", "recipe[nginx]", "recipe[anso::tty]", #"recipe[anso::settings]", # vim / screen / git settings for testing ] chef.json.merge!({ :nova => { :my_ip => ip, }, :chef => { :server_url => "http://localhost:4000", :webui_enabled => true, }, :cookbooks => { :branch => "master" }, }) end end global_config.vm.define :head do |config| suffix = "101" ip = "#{ip_prefix}#{suffix}" config.vm.box = "base" config.vm.box_url = "http://images.ansolabs.com/vagrant/maverick64.box" config.vm.customize do |vm| vm.memory_size = 1024 end config.vm.network(ip, :mac => "#{mac_prefix}#{suffix}") config.vm.share_folder("v-apt", "/var/cache/apt", aptdir) config.vm.provision :chef_server do |chef| chef.chef_server_url = "http://#{ip_prefix}100:4000" chef.validation_key_path = "vagrant.pem" chef.validation_client_name = "vagrant" chef.node_name = "nova-head-vagrant" chef.provisioning_path = "/etc/chef" chef.log_level = :debug chef.run_list = [ "recipe[nova::hostname]", #"recipe[anso::apt_proxy]", "recipe[anso::packages]", "recipe[nova::mysql]", "recipe[nova::rabbit]", "recipe[nova::api]", "recipe[nova::scheduler]", "recipe[nova::network]", "recipe[nova::objectstore]", "recipe[nova::setup]", "recipe[nova::dashboard]", "recipe[nova::creds]", # put creds for admin user ] chef.json.merge!({ :nova => { :my_ip => ip, :fixed_range => fixed, :flat_dhcp_start => (fixed.split('.')[0..2].join('.') + ".2"), :floating_range => (ENV['FLOATING'] or "#{ip_prefix}128/28"), :public_interface => "br100", :images => [ "http://#{ip_prefix}100/tty.tgz" ], :creds => { :user => "vagrant", :group => "vagrant", :dir => "/vagrant", } }, :apt => { :distro => "maverick", :proxy_url => "http://#{ip_prefix}100:3142", } }) end end global_config.vm.define :node do |config| suffix = "102" ip = "#{ip_prefix}#{suffix}" config.vm.box = "base" config.vm.box_url = "http://images.ansolabs.com/vagrant/maverick64.box" config.vm.customize do |vm| vm.memory_size = 1024 end config.vm.network(ip, :mac => "#{mac_prefix}#{suffix}") config.vm.share_folder("v-apt", "/var/cache/apt", aptdir) config.vm.provision :chef_server do |chef| chef.chef_server_url = "http://#{ip_prefix}100:4000" # This needs to be set to the validator chef.validation_key_path = "vagrant.pem" chef.validation_client_name = "vagrant" chef.node_name = "nova-node-vagrant" chef.provisioning_path = "/etc/chef" chef.log_level = :debug chef.run_list = [ "recipe[nova::hostname]", #"recipe[anso::apt_proxy]", "recipe[anso::packages]", "recipe[nova::filevg]", "recipe[nova::volume]", "recipe[nova::compute]", #"recipe[anso::settings]", # vim / screen / git settings for testing ] chef.json.merge!({ :nova => { :my_ip => ip, :libvirt_type => "qemu", }, :apt => { :distro => "maverick", :proxy_url => "http://#{ip_prefix}100:3142", } }) end end end