|
| 1 | +# -*- mode: ruby -*- |
| 2 | +# vi: set ft=ruby : |
| 3 | + |
| 4 | +BOX_NAME = ENV['BOX_NAME'] || "ubuntu" |
| 5 | +BOX_URI = ENV['BOX_URI'] || "http://files.vagrantup.com/precise64.box" |
| 6 | +AWS_REGION = ENV['AWS_REGION'] || "us-east-1" |
| 7 | +AWS_AMI = ENV['AWS_AMI'] || "ami-d0f89fb9" |
| 8 | + |
| 9 | +Vagrant::Config.run do |config| |
| 10 | + # Setup virtual machine box. This VM configuration code is always executed. |
| 11 | + config.vm.box = BOX_NAME |
| 12 | + config.vm.box_url = BOX_URI |
| 13 | + |
| 14 | + # Provision docker and new kernel if deployment was not done |
| 15 | + if Dir.glob("#{File.dirname(__FILE__)}/.vagrant/machines/default/*/id").empty? |
| 16 | + # Add lxc-docker package |
| 17 | + pkg_cmd = "apt-get update -qq; apt-get install -q -y python-software-properties; " \ |
| 18 | + "add-apt-repository -y ppa:dotcloud/lxc-docker; apt-get update -qq; " \ |
| 19 | + "apt-get install -q -y lxc-docker; " |
| 20 | + # Add X.org Ubuntu backported 3.8 kernel |
| 21 | + pkg_cmd << "add-apt-repository -y ppa:ubuntu-x-swat/r-lts-backport; " \ |
| 22 | + "apt-get update -qq; apt-get install -q -y linux-image-3.8.0-19-generic; " |
| 23 | + # Add guest additions if local vbox VM |
| 24 | + is_vbox = true |
| 25 | + ARGV.each do |arg| is_vbox &&= !arg.downcase.start_with?("--provider") end |
| 26 | + if is_vbox |
| 27 | + pkg_cmd << "apt-get install -q -y linux-headers-3.8.0-19-generic dkms; " \ |
| 28 | + "echo 'Downloading VBox Guest Additions...'; " \ |
| 29 | + "wget -q http://dlc.sun.com.edgesuite.net/virtualbox/4.2.12/VBoxGuestAdditions_4.2.12.iso; " |
| 30 | + # Prepare the VM to add guest additions after reboot |
| 31 | + pkg_cmd << "echo -e 'mount -o loop,ro /home/vagrant/VBoxGuestAdditions_4.2.12.iso /mnt\n" \ |
| 32 | + "echo yes | /mnt/VBoxLinuxAdditions.run\numount /mnt\n" \ |
| 33 | + "rm /root/guest_additions.sh; ' > /root/guest_additions.sh; " \ |
| 34 | + "chmod 700 /root/guest_additions.sh; " \ |
| 35 | + "sed -i -E 's#^exit 0#[ -x /root/guest_additions.sh ] \\&\\& /root/guest_additions.sh#' /etc/rc.local; " \ |
| 36 | + "echo 'Installation of VBox Guest Additions is proceeding in the background.'; " \ |
| 37 | + "echo '\"vagrant reload\" can be used in about 2 minutes to activate the new guest additions.'; " |
| 38 | + end |
| 39 | + # Activate new kernel |
| 40 | + pkg_cmd << "shutdown -r +1; " |
| 41 | + config.vm.provision :shell, :inline => pkg_cmd |
| 42 | + end |
| 43 | +end |
| 44 | + |
| 45 | + |
| 46 | +# Providers were added on Vagrant >= 1.1.0 |
| 47 | +Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config| |
| 48 | + config.vm.provider :aws do |aws, override| |
| 49 | + aws.access_key_id = ENV["AWS_ACCESS_KEY_ID"] |
| 50 | + aws.secret_access_key = ENV["AWS_SECRET_ACCESS_KEY"] |
| 51 | + aws.keypair_name = ENV["AWS_KEYPAIR_NAME"] |
| 52 | + override.ssh.private_key_path = ENV["AWS_SSH_PRIVKEY"] |
| 53 | + override.ssh.username = "ubuntu" |
| 54 | + aws.region = AWS_REGION |
| 55 | + aws.ami = AWS_AMI |
| 56 | + aws.instance_type = "t1.micro" |
| 57 | + end |
| 58 | + |
| 59 | + config.vm.provider :rackspace do |rs| |
| 60 | + config.ssh.private_key_path = ENV["RS_PRIVATE_KEY"] |
| 61 | + rs.username = ENV["RS_USERNAME"] |
| 62 | + rs.api_key = ENV["RS_API_KEY"] |
| 63 | + rs.public_key_path = ENV["RS_PUBLIC_KEY"] |
| 64 | + rs.flavor = /512MB/ |
| 65 | + rs.image = /Ubuntu/ |
| 66 | + end |
| 67 | + |
| 68 | + config.vm.provider :virtualbox do |vb| |
| 69 | + config.vm.box = BOX_NAME |
| 70 | + config.vm.box_url = BOX_URI |
| 71 | + end |
| 72 | +end |
0 commit comments