Skip to content

Instantly share code, notes, and snippets.

@Xifax
Last active August 3, 2018 08:45
Show Gist options
  • Save Xifax/cf8ddf7f21a9c7c94e27f7594265eeb3 to your computer and use it in GitHub Desktop.
Save Xifax/cf8ddf7f21a9c7c94e27f7594265eeb3 to your computer and use it in GitHub Desktop.
Vagrant image for Ubuntu 16.04 with docker and kubernetes + GUI options and other paraphernalia
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/xenial64"
# alternative box
# config.vm.box = "bento/ubuntu-16.04"
# create this folder on host machine before 'vagrant up'
config.vm.synced_folder "./repos", "/home/vagrant/repos"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true
vb.memory = "6128"
vb.cpus = 2
# by default will be capped at 50% cpu load
# vb.customize ["modifyvm", :id, "--accelerate3d", "on"]
vb.customize ["modifyvm", :id, "--cpuexecutioncap", "90"]
vb.customize ["modifyvm", :id, "--vram", "256"]
vb.customize ["modifyvm", :id, "--clipboard", "bidirectional"]
vb.customize ["modifyvm", :id, "--draganddrop", "bidirectional"]
end
config.vm.provision "shell", inline: <<-SHELL
apt-get update
# java
sudo apt-get install -y default-jre
sudo apt-get install -y default-jdk
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
# preemptively accept oracle license
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections
echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections
sudo apt-get install -y oracle-java8-installer
# python (call python3.6 for this version)
sudo add-apt-repository -y ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install -y python3.6
curl https://bootstrap.pypa.io/get-pip.py | sudo python3.6
# use python3.6 as python3 (BEWARE: may break some packages installed afterwards)
# sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
# docker
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key -y fingerprint 0EBFCD88
sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# allow non-root to use docker
sudo usermod -aG docker $USER
# docker-ce
sudo apt-get update
sudo apt-get install -y docker-ce
# kops binaries
wget https://github.com/kubernetes/kops/releases/download/1.8.0/kops-linux-amd64
chmod +x kops-linux-amd64
sudo mv kops-linux-amd64 /usr/local/bin/kops
# kubectl
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo touch /etc/apt/sources.list.d/kubernetes.list
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
kubectl version
# aliases
sudo apt-get install -y zsh
sudo chsh -s /bin/zsh vagrant
bash -c 'echo alias ai=\"sudo apt-get install\"' >> /home/vagrant/.zshrc
bash -c 'echo alias au=\"sudo apt-get update\"' >> /home/vagrant/.zshrc
# UI stuff (startx to launch GUI)
sudo apt-get install -y xorg mate virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
echo 'exec mate-session' >> /home/vagrant/.xinitrc
sudo VBoxClient --clipboard --display
# UI: terminal
sudo -u vagrant wget -O xt https://git.io/v7eBS && chmod +x xt && ./xt && rm xt
# UI: fonts
wget "https://github.com/be5invis/Iosevka/releases/download/v2.0.0/01-iosevka-2.0.0.zip"
unzip 01-iosevka-2.0.0.zip
sudo mkdir -p /usr/share/fonts/truetype/Iosevka
sudo cp ttf/*.ttf /usr/share/fonts/truetype/Iosevka/
sudo fc-cache -fv
SHELL
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment