A raíz de las pruebas realizadas en la segunda toma de contacto con Vagrant, he creado un script para instalar Docker-CE como prueba de concepto de shell provisioning sobre Vagrant.
En vez de instalar una y otra vez Docker desde los repositorios, es mucho más eficiente crear una box personalizada con el software que necesitamos.
El fichero Vagrantfile
usa la imagen base generic/debian9
para crear una máquina virtual con 2 vCPUs y 2GB de RAM conectada al vSwitch de la red externa (con acceso a internet).
Fichero Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "generic/debian9"
config.vm.network "public_network", bridge: "EXTERNAL-vSwitch"
config.vm.hostname = "vagrant-debian-9"
# Configuración de recursos de la VM
config.vm.provider "hyperv" do |v, override|
v.vmname = "vagrant-debian-9"
v.cpus = 2
v.memory = 2048
v.maxmemory = 2048
v.enable_virtualization_extensions = true
v.differencing_disk = true
end
config.vm.provision "shell" do |s|
s.path= "bootstrap-docker.sh"
end
end
Fichero bootstrap-docker.sh
El fichero bootstrap-docker.sh
recoge las instrucciones de la guía de instalación para Docker sobre Debian.
# Remove older versions of Docker
echo "Removing older versions of Docker"
sudo apt-get remove docker docker-engine docker.io
# Kernel version must be over 3.2
echo "[INFO] Keep in mind that kernel version must be at least 3.2"
echo "[INFO] Current version is " $(uname -r)
# Update and install
echo "\nUpdate and install pre-requisites"
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common -y
# Docker's official GPG key
echo "\nAdding Docker's official GPG key"
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg -o docker-ce.gpgkey
sudo apt-key add docker-ce.gpgkey
# Add stable branch repository
echo "\nAdd Docker-CE repository"
sudo echo "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable" >> /etc/apt/sources.list
# Update repository info and install Docker-CE
echo "\nUpdate repository info and installing Docker-CE"
sudo apt-get update
sudo apt-get install docker-ce -y
Las diferencias en algunos pasos con respecto a la documentación oficial han sido necesarias debido a que el script no se ejecuta en un terminal, por lo que algunas instrucciones generaban un error.