Vagrant
We rely on Vagrant to create local VMs for your purposes. You can use those Vagrant boxes to develop your application, but also to make changes at our Puppet environment itself.
OS Support
Right now we support Vagrant on Ubuntu Linux (LXC Provider), Windows 10 (VirtualBox Provider) and Mac OS (VirtualBox Provider). Does not work on Windows 7, running Ubuntu 15.10 in a virtual box, following the Ubuntu installation guide. Probably because of some privilege problems.
Mac OS
VirtualBox
Files reside on host and get mounted into VM trough NFS
Ubuntu Linux
LXC
Files reside on host and get mounted into VM trough NFS
Windows 10
VirtualBox (Make sure using the latest stable version - at the time of writing tested with 5.0.x)
File mount currently not supported (Use SSH deployment instead)
Requirements
working VirtualBox (Mac OS/Windows 10) or LXC (Ubuntu) installation
NFS server daemon (pre-installed on Mac OS X, “nfs-kernel-server” package on Ubuntu)
(Ubuntu only) AppArmor configuration for LXC mounts in
/etc/apparmor.d/lxc/lxc-default
profile lxc-container-default flags=(attach_disconnected,mediate_deleted) { ... mount options=(rw, bind), ... }
Restart the apparmor service with
/etc/init.d/apparmor reload
(Ubuntu only) additional LXC configuration
/etc/lxc/default.conf
lxc.network.type = veth lxc.network.link = lxcbr0 lxc.network.flags = up
(Temporarily) manually implement the following change until it’s merged into vagrant:
https://github.com/mitchellh/vagrant/pull/5986/files
Vagrant Plugins Vagrant plugins should be installed without sudo (Ubuntu only)
vagrant plugin install vagrant-hostmanager # required to access VM trough name/aliases vagrant plugin install vagrant-cachier vagrant plugin install vagrant-lxc # Ubuntu only
SSH Key loaded into ssh-agent (Windows 10: Pageant for PuTTY): SSH Keys
Access to snowflake Puppet repositories
Hint: As long as our Puppet modules are not published under an open source license, send us your SSH public key. We will add those to the required GIT repositories and provide you the relevant informations
Setup project
To add a Vagrant box to your project, copy the following files from the
puppet-modules
repository into your project repository:
Vagrantfile
cnf/vagrant-puppet.yaml
Ajust the values in cnf/vagrant-puppet.yaml
to your needs,
especially:
vagrantconf:name
: VM hostnamevagrantconf:domain
: VM domainnamevagrantconf:aliases
: VM aliases, use those to access your project with differnt (sub-) domains
Warning: Do not override the other settings within vagrantconf
unless you know what you are doing
Vagrant commands
vagrant up # start VM
vagrant provision # update Debian packages and Puppet modules
vagrant ssh # connect trough SSH
vagrant halt # stop VM
vagrant destroy # delete VM
vagrant ssh-config # output valid SSH configuration
Tips & tricks
Symlink your cache- and lock-folders into your guest’s
/tmp/
folder after first provision to significantly inprove performance of the guestload your SSH key into ssh-agent (VM has to access different repositorys with your key)
use Vagrant commands like
vagrant up
to control your VM onlyGit bash for Windows provides agent forwarding support & doesn’t need to run in administrator mode
Fixes and Workarounds for known problems
Error during start because of NFS-Issues (e.g. Deleted Projects): empty the file
/etc/exports
on your host-machine.cannot connect to VM: check your host’s
/etc/hosts
for duplicated entriesMySQL-Error during first provisioning: just let vagrant finish and then do a
vagrant reload --provision
If you are unable to install vagrant-hostmanager try installing zlib1g-dev first with
sudo apt-get install zlib1g-dev