Merge pull request #712 from errordeveloper/vagrantfile-more-cleanup

Improve readability of Vagrantfile and cleanup this official image
This commit is contained in:
Paul Bellamy committed 2015-05-20 16:47:28 +01:00
commit c63d2e531a
3 files changed
+88 -29

No files matched your search

Vendored
+19 -24
View File
@@ -1,7 +1,20 @@
VAGRANTFILE_API_VERSION = "2"
require './vagrant-common.rb'
vm_ip = "172.16.0.3" # arbitrary private IP
pkgs = "lxc-docker aufs-tools build-essential ethtool iputils-arping libpcap-dev git mercurial bc"
pkgs = %w(
lxc-docker
aufs-tools
build-essential
ethtool
iputils-arping
libpcap-dev
git
mercurial
bc
)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
@@ -16,30 +29,12 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.synced_folder ".", "/home/vagrant/src/github.com/weaveworks/weave"
config.vm.provision :shell, :inline => "ln -sf /home/vagrant/src/github.com/weaveworks/weave /home/vagrant/"
config.vm.provision :shell, :inline => "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9"
config.vm.provision :shell, :inline => "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
pkg_cmd = "export DEBIAN_FRONTEND=noninteractive; " \
"apt-get update -qq; " \
"apt-get install -qq --no-install-recommends #{pkgs}"
install_go_toolchain = "curl -s https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz | tar xz -C /usr/local"
go_path = "/usr/local/go/bin"
config.vm.provision :shell, :inline => pkg_cmd
config.vm.provision :shell, :inline => install_go_toolchain
config.vm.provision :shell, :inline => "usermod -a -G docker vagrant"
config.vm.provision :shell, :inline => "echo export GOPATH=\"\${HOME\}\" >> ~vagrant/.profile", :privileged => false
config.vm.provision :shell, :inline => "echo export PATH=\"\${HOME}/bin:#{go_path}:\${PATH}\" >> ~vagrant/.profile", :privileged => false
config.vm.provision :shell, :inline => "chown -R vagrant:vagrant ~vagrant/src"
config.vm.provision :shell, :inline => "#{go_path}/go clean -i net; #{go_path}/go install -tags netgo std"
config.vm.provision :shell, :inline => "echo 'DOCKER_OPTS=\"-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375\"' >> /etc/default/docker"
config.vm.provision :shell, :inline => "service docker restart"
install_build_deps config.vm, pkgs
install_go_toochain config.vm
tweak_user_env config.vm
tweak_docker_daemon config.vm
cleanup config.vm
end
+5 -5
View File
@@ -9,8 +9,10 @@ n_machines = 2
ip_prefix = "192.168.48"
ip_suffix_base = 10
require '../vagrant-common.rb'
def configure_docker(host, hostname, ip)
pkgs = "lxc-docker ethtool"
pkgs = %w(lxc-docker ethtool)
host.vm.box = "ubuntu/ubuntu-14.10-amd64"
host.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/utopic/current/utopic-server-cloudimg-amd64-vagrant-disk1.box"
@@ -23,15 +25,13 @@ def configure_docker(host, hostname, ip)
host.vm.provision :shell, :inline => "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9"
host.vm.provision :shell, :inline => "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
pkg_cmd = "apt-get update -qq; " \
"apt-get install -q -y --force-yes --no-install-recommends "
pkg_cmd << pkgs
host.vm.provision :shell, :inline => pkg_cmd
install_packages host.vm, pkgs
host.vm.provision :shell, :inline => "usermod -a -G docker vagrant; "
# Listen on the remote API
host.vm.provision :shell, :inline => "echo 'DOCKER_OPTS=\"-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375\"' >> /etc/default/docker"
host.vm.provision :shell, :inline => "service docker restart"
cleanup(host.vm)
end
+64
View File
@@ -0,0 +1,64 @@
$go_version = "1.4.2"
$go_path = "/usr/local/go/bin"
def install_packages(vm, pkgs)
vm.provision :shell, :inline => <<SCRIPT
apt-get update -qq
apt-get install -qq -y --force-yes --no-install-recommends #{pkgs.join(' ')}
SCRIPT
end
def install_build_deps(vm, pkgs)
vm.provision :shell, :inline => <<SCRIPT
export DEBIAN_FRONTEND=noninteractive
apt-key adv \
--keyserver hkp://keyserver.ubuntu.com:80 \
--recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
echo 'deb https://get.docker.io/ubuntu docker main' \
> /etc/apt/sources.list.d/docker.list
SCRIPT
install_packages(vm, pkgs)
end
def install_go_toochain(vm)
vm.provision :shell, :inline => <<SCRIPT
curl -s https://storage.googleapis.com/golang/go#{$go_version}.linux-amd64.tar.gz \
| tar xz -C /usr/local
#{$go_path}/go clean -i net
#{$go_path}/go install -tags netgo std
SCRIPT
end
def tweak_user_env(vm)
script = <<SCRIPT
echo 'export GOPATH="${HOME}"' \
>> ~vagrant/.profile
echo 'export PATH="${HOME}/bin:#{$go_path}:${PATH}"' \
>> ~vagrant/.profile
ln -sf ~vagrant/src/github.com/weaveworks/weave ~vagrant/
sudo chown -R vagrant:vagrant ~vagrant/src
SCRIPT
vm.provision :shell, :inline => script, :privileged => false
end
def tweak_docker_daemon(vm)
vm.provision :shell, :inline => <<SCRIPT
usermod -a -G docker vagrant
echo 'DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375"' \
>> /etc/default/docker
service docker restart
SCRIPT
end
def cleanup(vm)
vm.provision :shell, :inline => <<SCRIPT
export DEBIAN_FRONTEND=noninteractive
## Who the hell thinks official images have to have both of these?
/etc/init.d/chef-client stop
/etc/init.d/puppet stop
apt-get -qq remove puppet chef
apt-get -qq autoremove
killall -9 chef-client
SCRIPT
end