Created
May 20, 2013 15:48
-
-
Save fields/5613110 to your computer and use it in GitHub Desktop.
Vagrantfile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- mode: ruby -*- | |
# vi: set ft=ruby : | |
# override these variables in ~/.vagrant.d/Vagrantfile for your local changes | |
$local_username ||= `whoami`.strip | |
$local_projects_directory ||= "~/projects/vagrant/" | |
$vm_memory ||= "4096" | |
$vm_cpus ||= "4" | |
$server_root_password = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | |
### Global vagrant config below this line | |
Vagrant.configure("2") do |config| | |
config.vm.box = "precise64" | |
config.vm.box_url = "http://files.vagrantup.com/precise64.box" | |
# rails | |
config.vm.network :forwarded_port, guest: 3000, host: 8000 | |
# sinatra | |
config.vm.network :forwarded_port, guest: 4567, host: 8001 | |
# mysql | |
config.vm.network :forwarded_port, guest: 3306, host: 8010 | |
# mongo | |
config.vm.network :forwarded_port, guest: 27017, host: 8011 | |
config.ssh.forward_agent = true | |
config.vm.synced_folder $local_projects_directory, "/home/vagrant/projects/" | |
config.vm.provider :virtualbox do |vb| | |
# # Don't boot with headless mode | |
vb.gui = true | |
vb.customize ["modifyvm", :id, "--memory", $vm_memory] | |
vb.customize ["modifyvm", :id, "--cpus", $vm_cpus] | |
end | |
# install some base packages | |
config.vm.provision :shell, :inline => "sudo aptitude -y install build-essential" | |
config.vm.provision :shell, :inline => "sudo aptitude -y install screen" | |
config.vm.provision :shell, :inline => "sudo aptitude -y install links" | |
config.vm.provision :shell, :inline => "sudo aptitude -y install xvfb" | |
config.vm.provision :shell, :inline => "sudo aptitude -y install firefox" | |
# upgrade the chef install that comes on the base box | |
config.vm.provision :shell, :inline => "gem install chef --version 11.4.2 --no-rdoc --no-ri --conservative" | |
# copy the custom hosts file to the vm | |
config.vm.provision :shell, :inline => "cp /vagrant/vm_files/vm_hosts /etc/hosts" | |
# configure ruby versions and gemsets | |
$ruby_19_version = "ruby-1.9.3" | |
$ruby_ree_version = "ree-1.8.7" | |
$sinatra_gemset = "sinatra" | |
$rails_gemset = "rails" | |
config.vm.provision :chef_solo do |chef| | |
chef.json = { | |
"mysql" => { | |
:server_root_password => $server_root_password, | |
:server_repl_password => $server_root_password, | |
:server_debian_password => $server_root_password | |
}, | |
"rvm" => {'version' => "1.20.5", | |
'default_ruby' => $ruby_19_version, | |
'rubies' => [$ruby_19_version, $ruby_ree_version], | |
'gems' => { | |
$ruby_19_version + '@' + $sinatra_gemset => [ | |
{ 'name' => 'bundler' } | |
], | |
$ruby_ree_version + '@' + $rails_gemset => [ | |
{ 'name' => 'bundler' } | |
] | |
} | |
}, | |
"authorization" => { | |
'sudo' => { | |
'agent_forwarding' => true, | |
'groups' => ["admin", "wheel", "sysadmin"], | |
'users' => ["vagrant"], | |
'passwordless' => true | |
} | |
} | |
} | |
chef.add_recipe "apt" | |
chef.add_recipe "sudo" | |
chef.add_recipe "openssl" | |
chef.add_recipe "emacs" | |
chef.add_recipe "curl" | |
chef.add_recipe "git" | |
chef.add_recipe "subversion" | |
chef.add_recipe "mongodb::10gen_repo" | |
chef.add_recipe "mongodb::default" | |
chef.add_recipe "mysql::client" | |
chef.add_recipe "mysql::server" | |
chef.add_recipe "rvm::vagrant" | |
chef.add_recipe "rvm::system" | |
end | |
# configure default users on mysql | |
config.vm.provision :shell, :inline => "mysql -u root -p#{$server_root_password} -e \"create database if not exists dev_db\"" | |
config.vm.provision :shell, :inline => "mysql -u root -p#{$server_root_password} -e \"GRANT ALL ON dev_db.* TO 'dev_user'@'localhost' IDENTIFIED BY 'YYYYYYYYYYYYYYYYYYYY'; FLUSH PRIVILEGES;\"" | |
# run the custom config and checkout script as the vagrant user, passing in some arguments it needs to set versions | |
$script = <<SCRIPT | |
chmod u+x /vagrant/config_and_checkout.sh | |
sudo -u vagrant /vagrant/config_and_checkout.sh #{$local_username} "#{$ruby_19_version + "@" + $sinatra_gemset}" "#{$ruby_ree_version + "@" + $rails_gemset}" | |
SCRIPT | |
# puts "Running #{$script}" | |
config.vm.provision :shell, :inline => $script | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment