2.7 KiB
Drupal VM allows you to run extra shell scripts and ansible task files in the beginning and at the end of the provisioning process, in case you need to do extra setup, further configure the VM, or install extra software outside the purview of Drupal VM.
Shell scripts
To use an extra script, configure the path to the script (relative to provisioning/playbook.yml
) in config.yml
:
pre_provision_scripts:
- "../scripts/pre-provision.sh"
post_provision_scripts:
- "../scripts/post-provision.sh"
The above example results in a pre-provision.sh
script running before the provisioning starts and a post-provision.sh
script running after the main Drupal VM setup is complete. Pre and post provision scripts run after the first vagrant up
, and then any time you run Vagrant provisioning (e.g. vagrant provision
or vagrant up --provision
).
Note: The pre provision scripts run before any other packages are installed. If you want to use commands such as git
, you need to install the packages yourself.
You can define as many scripts as you would like, and any arguments after the path will be passed to the shell script itself (e.g. "- "../scripts/setup-paths.sh --option"
).
Place your pre and post provision scripts inside a scripts
directory in the root of your Drupal VM project directory; this directory is gitignored, so you can continue to update Drupal VM without overwriting your scripts.
Ansible task files
To use an extra ansible task file, configure the path to the file (relative to provisioning/playbook.yml
) in config.yml
:
pre_provision_tasks_dir: "../scripts/pre/*"
post_provision_tasks_dir: "../scripts/post-provision.yml"
The path will be evaluated as a glob pattern so you can point to a single file or a directory matching a set of files.
The files matched will run in alphabetical order, and as with shell scripts, pre-provision task files will run before any other packages are installed.
Ansible playbooks
Out of the box Drupal VM does not support running additional playbooks or adding your own roles but using Vagrantfile.local
you can add any number of additional provisioners to vagrant.
As an example you might have a local.playbook.yml
with it's own dependencies defined in local.requirements.yml
. Place both of these next to your config.yml
and add the following Vagrantfile.local
.
config.vm.provision 'ansible' do |ansible|
ansible.playbook = "#{host_config_dir}/local.playbook.yml"
ansible.galaxy_role_file = "#{host_config_dir}/local.requirements.yml"
end
When you run vagrant provision
this playbook will run after Drupal VM's own playbook.