# -*- mode: ruby -*- # vi: set ft=ruby : BOX_NAME = ENV['BOX_NAME'] || "ubuntu" BOX_URI = ENV['BOX_URI'] || "http://files.vagrantup.com/precise64.box" VF_BOX_URI = ENV['BOX_URI'] || "http://files.vagrantup.com/precise64_vmware_fusion.box" AWS_REGION = ENV['AWS_REGION'] || "us-east-1" AWS_AMI = ENV['AWS_AMI'] || "ami-d0f89fb9" FORWARD_DOCKER_PORTS = ENV['FORWARD_DOCKER_PORTS'] Vagrant::Config.run do |config| # Setup virtual machine box. This VM configuration code is always executed. config.vm.box = BOX_NAME config.vm.box_url = BOX_URI config.ssh.forward_agent = true # Provision docker and new kernel if deployment was not done. # It is assumed Vagrant can successfully launch the provider instance. if Dir.glob("#{File.dirname(__FILE__)}/.vagrant/machines/default/*/id").empty? # Add lxc-docker package pkg_cmd = "wget -q -O - https://get.docker.io/gpg | apt-key add -;" \ "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list;" \ "apt-get update -qq; apt-get install -q -y --force-yes lxc-docker; " # Add Ubuntu raring backported kernel pkg_cmd << "apt-get update -qq; apt-get install -q -y linux-image-generic-lts-raring; " # Add guest additions if local vbox VM. As virtualbox is the default provider, # it is assumed it won't be explicitly stated. if ENV["VAGRANT_DEFAULT_PROVIDER"].nil? && ARGV.none? { |arg| arg.downcase.start_with?("--provider") } pkg_cmd << "apt-get install -q -y linux-headers-generic-lts-raring dkms; " \ "echo 'Downloading VBox Guest Additions...'; " \ "wget -q http://dlc.sun.com.edgesuite.net/virtualbox/4.2.12/VBoxGuestAdditions_4.2.12.iso; " # Prepare the VM to add guest additions after reboot pkg_cmd << "echo -e 'mount -o loop,ro /home/vagrant/VBoxGuestAdditions_4.2.12.iso /mnt\n" \ "echo yes | /mnt/VBoxLinuxAdditions.run\numount /mnt\n" \ "rm /root/guest_additions.sh; ' > /root/guest_additions.sh; " \ "chmod 700 /root/guest_additions.sh; " \ "sed -i -E 's#^exit 0#[ -x /root/guest_additions.sh ] \\&\\& /root/guest_additions.sh#' /etc/rc.local; " \ "echo 'Installation of VBox Guest Additions is proceeding in the background.'; " \ "echo '\"vagrant reload\" can be used in about 2 minutes to activate the new guest additions.'; " end # Add vagrant user to the docker group pkg_cmd << "usermod -a -G docker vagrant; " # Activate new kernel pkg_cmd << "shutdown -r +1; " config.vm.provision :shell, :inline => pkg_cmd end end # Providers were added on Vagrant >= 1.1.0 Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config| config.vm.provider :aws do |aws, override| aws.access_key_id = ENV["AWS_ACCESS_KEY_ID"] aws.secret_access_key = ENV["AWS_SECRET_ACCESS_KEY"] aws.keypair_name = ENV["AWS_KEYPAIR_NAME"] override.ssh.private_key_path = ENV["AWS_SSH_PRIVKEY"] override.ssh.username = "ubuntu" aws.region = AWS_REGION aws.ami = AWS_AMI aws.instance_type = "t1.micro" end config.vm.provider :rackspace do |rs| config.ssh.private_key_path = ENV["RS_PRIVATE_KEY"] rs.username = ENV["RS_USERNAME"] rs.api_key = ENV["RS_API_KEY"] rs.public_key_path = ENV["RS_PUBLIC_KEY"] rs.flavor = /512MB/ rs.image = /Ubuntu/ end config.vm.provider :vmware_fusion do |f, override| override.vm.box = BOX_NAME override.vm.box_url = VF_BOX_URI override.vm.synced_folder ".", "/vagrant", disabled: true f.vmx["displayName"] = "docker" end config.vm.provider :virtualbox do |vb| config.vm.box = BOX_NAME config.vm.box_url = BOX_URI end end if !FORWARD_DOCKER_PORTS.nil? Vagrant::VERSION < "1.1.0" and Vagrant::Config.run do |config| (49000..49900).each do |port| config.vm.forward_port port, port end end Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config| (49000..49900).each do |port| config.vm.network :forwarded_port, :host => port, :guest => port end end end