Vagrant - Provision (Code, Software Installation)
Table of Contents
1 - Script
Code Shipping - Provisioning in Vagrant.
config.vm.provision :shell, path: "mydir/myScript.sh"
where:
- :shell is the provisioner
- mydir/myScript.sh is relative to the project directory
2 - Command
2.1 - Run
Provisioning happens at certain points during the lifetime of your Vagrant environment:
- On the first vagrant up that creates the environment, provisioning is run. If the environment was already created and the up is just resuming a machine or booting it up, they will not run unless the –provision flag is explicitly provided.
- When vagrant provision is used on a running environment.
- When vagrant reload –provision is called. The –provision flag must be present to force provisioning.
- Reload quickly restart the virtual machine, skipping the initial import step.
- –provision: instructs Vagrant to run the provisioners, since usually Vagrant will only do this on the first vagrant up.
2.2 - Not run
You can also bring up your environment and explicitly not run provisioners by specifying –no-provision.
3 - Example
3.1 - Apache
- In Vagrant - Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision :shell, path: "installApache.sh"
end
- In the same directory than the Vagrant - Vagrantfile
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -fs /vagrant /var/www
fi