Skip to content

Instantly share code, notes, and snippets.

@wheresalice
Forked from vishvananda/devserver.rb
Created June 22, 2012 18:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wheresalice/2974339 to your computer and use it in GitHub Desktop.
Save wheresalice/2974339 to your computer and use it in GitHub Desktop.
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 => "devpackages"
},
})
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::devpackages]",
"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::devpackages]",
"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
Vagrant::Config.run do |config|
aptdir = (ENV['APTCACHE'] or "#{ENV['HOME']}/aptcache/")
checkout = (ENV['COOKBOOKS'] or "#{ENV['HOME']}/openstack-cookbooks")
ip_prefix = (ENV['IP_PREFIX'] or "192.168.86.")
mac_prefix = (ENV['MAC_PREFIX'] or "080027086")
suffix = "100"
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_solo do |chef|
chef.cookbooks_path = "#{checkout}/cookbooks"
chef.roles_path = "#{checkout}/roles"
chef.log_level = :debug
chef.run_list = [
"recipe[nova::hostname]",
"recipe[anso::devpackages]",
"recipe[nova::filevg]",
"recipe[nova]", # shortcut for nova::all + nova::setup
"recipe[nova::creds]", # put creds for admin user
#"recipe[anso::settings]", # vim / screen / git settings for testing
]
chef.json.merge!({
:nova => {
:my_ip => ip,
:flatdhcp => false,
:fixed_range => (ENV['FIXED'] or "10.0.86.0/24"),
:floating_range => (ENV['FLOATING'] or "#{ip_prefix}128/28"),
:libvirt_type => "qemu",
:images => [
"http://images.ansolabs.com/tty.tgz"
],
:creds => {
:user => "vagrant",
:group => "vagrant",
:dir => "/vagrant",
}
},
})
end
end
curl -O https://github.com/vishvananda/novascript/raw/master/nova.sh
chmod 755 nova.sh
./nova.sh branch
./nova.sh install
sudo ./nova.sh run
# shutdown your old machines
# install new virtualbox
# os x
curl -O http://download.virtualbox.org/virtualbox/4.1.4/VirtualBox-4.1.4-74291-OSX.dmg
open VirtualBox-4.1.4-74291-OSX.dmg
# maverick
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
echo "deb http://download.virtualbox.org/virtualbox/debian maverick contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
sudo apt-get update
sudo apt-get install -y virtualbox-4.0
# lucid
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
echo "deb http://download.virtualbox.org/virtualbox/debian lucid contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
sudo apt-get update
sudo apt-get install -y virtualbox-4.0
# install new vagrant
# os x
sudo gem install vagrant
# maverick
sudo gem install vagrant
sudo ln -s /var/lib/gems/1.8/bin/vagrant /usr/local/bin/vagrant
# lucid
wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.6.zip
sudo apt-get install -y unzip
unzip rubygems-1.3.6.zip
cd rubygems-1.3.6
sudo ruby setup.rb
sudo gem1.8 install vagrant
git clone git://github.com/ansolabs/openstack-cookbooks ~/openstack-cookbooks
mkdir ~/aptcache
mkdir ~/chef
cd ~/chef
# solo version
curl -o Vagrantfile https://gist.github.com/raw/786945/solo.rb
vagrant up
# server version
# curl -o Vagrantfile https://gist.github.com/raw/786945/server.rb
# the chef server takes two runs to provision properly
# vagrant up chef; vagrant provision chef; vagrant up
# if you want to hit the instances you can
# os x
route add -net 10.0.0.0/8 192.168.76.12 # or .112 for server version
# linux
route add -net 10.0.0.0/8 gw 192.168.76.12 # or .112 for server version
# to run smoketests, make sure you have eucatools
. novarc
euca-authorize -P icmp -t -1:-1 default
euca-authorize -P tcp -p 22 default
# run smoketests with --nouse_ipv6
cd /path/to/trunk_safe/smoketests && python user_smoketests.py --nouse_ipv6; cd -
# cleanup when you are done
# os x
route delete -net 10.0.0.0/8 192.168.76.12
# linux
route delete -net 10.0.0.0/8 gw 192.168.76.12
rm .pem novarc
vagrant destroy
# if you want to use the devpackages:
cd ~/openstack-cookbooks/; git checkout devpackages; cd -
sed -i s/packages/devpackages/ Vagrantfile
sed -i s/master/devpackages/ Vagrantfile
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
#!/usr/bin/env bash
SMOKETESTS=${1:-$HOME/trunk_safe/smoketests}
VAGRANT=${VAGRANT:-$HOME/chef-solo}
RC=${RC:-$VAGRANT/novarc}
export FIXED=${FIXED:-10.0.86.0/24}
export IP_PREFIX=${IP_PREFIX:-192.168.86.}
export MAC_PREFIX=${MAC_PREFIX:-080027086}
cd $VAGRANT
vagrant up
cd -
sleep 10
IP=${IP:-`grep EC2_URL $RC | cut -d"/" -f3 | cut -d":" -f1`}
. $RC
euca-authorize -P icmp -t -1:-1 default
euca-authorize -P tcp -p 22 default
sudo route add -net $FIXED gw $IP
cd $SMOKETESTS
python run_tests.py --with-xunit --xunit-file=$WORKSPACE/nosetests.xml
cd -
sudo route del -net $FIXED gw $IP
cd $VAGRANT
vagrant destroy
cd -
Vagrant::Config.run do |config|
aptdir = (ENV['APTCACHE'] or "#{ENV['HOME']}/aptcache/")
checkout = (ENV['COOKBOOKS'] or "#{ENV['HOME']}/openstack-cookbooks")
mac_prefix = (ENV['MAC_PREFIX'] or "080027086")
suffix = "100"
ip = "10.1.2.100"
config.vm.box = "base"
config.vm.box_url = "http://images.ansolabs.com/vagrant/maverick64.box"
config.vm.customize do |vm|
vm.memory_size = 4096
end
config.vm.network :hostonly, ip
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[nova::hostname]",
"recipe[anso::packages]",
"recipe[nova::filevg]",
"recipe[nova]", # shortcut for nova::all + nova::setup
"recipe[nova::creds]", # put creds for admin user
#"recipe[anso::settings]", # vim / screen / git settings for testing
]
chef.json.merge!({
:nova => {
:my_ip => ip,
:flatdhcp => false,
:fixed_range => (ENV['FIXED'] or "10.0.86.0/24"),
:floating_range => (ENV['FLOATING'] or "10.1.2.128/28"),
:libvirt_type => "qemu",
:images => [
"http://images.ansolabs.com/tty.tgz"
],
:creds => {
:user => "vagrant",
:group => "vagrant",
:dir => "/vagrant",
}
},
})
end
end
Vagrant::Config.run do |config|
sshdir = "#{ENV['HOME']}/.ssh/"
aptdir = (ENV['APTCACHE'] or "#{ENV['HOME']}/aptcache/")
bzrdir = (ENV['BZRDIR'] or "#{ENV['HOME']}/bzr/")
checkout = (ENV['COOKBOOKS'] or "#{ENV['HOME']}/openstack-cookbooks")
ip_prefix = (ENV['IP_PREFIX'] or "192.168.26.")
mac_prefix = (ENV['MAC_PREFIX'] or "080027026")
source_branch = (ENV['SOURCE_BRANCH'] or "lp:nova")
suffix = "100"
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.share_folder("v-bzr", "/tmp/bzr", bzrdir)
config.vm.share_folder("v-ssh", "/home/vagrant/.host-ssh", sshdir)
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[nova::hostname]",
"recipe[anso::settings]", # vim / screen / git settings for testing
"recipe[nova::filevg]",
"recipe[nova::novascript]",
]
chef.json.merge!({
:nova => {
:source_branch => source_branch,
:my_ip => ip,
:flatdhcp => false,
:fixed_range => (ENV['FIXED'] or "10.0.26.0/24"),
:floating_range => (ENV['FLOATING'] or "#{ip_prefix}128/28"),
:libvirt_type => "qemu",
:images => [
"http://images.ansolabs.com/tty.tgz"
],
:creds => {
:user => "vagrant",
:group => "vagrant",
:dir => "/vagrant",
}
},
})
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment