Luca Invernizzi df32f6ac51 Update docker installer to work on custom kernels
The current docker installer attempt to install the linux-image-extra-`uname -r` DEB package on Debian systems.
This package may not exist, for example on custom kernels (e.g., Linode servers).
If this happens, Vagrant halts the provisioning. However, this package is not really needed in newer Debian releases (such as Ubuntu 14.04).

This small patch checks if the linux-image-extra-`uname -r` package exists, and it will install it if it does. In either case, it will continue provisioning.
2015-11-05 13:56:13 -08:00

34 lines
1.5 KiB
Ruby

module VagrantPlugins
module DockerProvisioner
module Cap
module Debian
module DockerInstall
def self.docker_install(machine, version)
package = 'lxc-docker'
package << "-#{version}" if version != :latest
machine.communicate.tap do |comm|
comm.sudo("apt-get update -y")
# TODO: Perform check on the host machine if aufs is installed and using LXC
if machine.provider_name != :lxc
# Attempt to install linux-image-extra for this kernel, if it exists
package_name = "linux-image-extra-`uname -r`"
comm.sudo("lsmod | grep aufs || modprobe aufs || apt-cache show #{package_name} && apt-get install -y #{package_name} || true")
end
comm.sudo("apt-get install -y --force-yes -q curl")
comm.sudo("curl -sSL https://get.docker.com/gpg | apt-key add -")
comm.sudo("echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list")
comm.sudo("apt-get update")
comm.sudo("echo lxc lxc/directory string /var/lib/lxc | debconf-set-selections")
comm.sudo("apt-get install -y --force-yes -q xz-utils #{package} -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold'")
# chmod the directory if it exists
comm.sudo("chmod 0755 /var/lib/docker")
end
end
end
end
end
end
end