This is a Multi Machine system for vagrant with Virtualbox provider.
- vagrant multi machine: create multiple machine at the same time
- YAML config file. No more Vagrantfile to edit!
- choose your favourite box, or get pre-configured box (see BOXES.md)
- vagrant provision with script or ansible (configurable via yaml)
- share your folder with Virtualbox, NFS or Rsync system directly from yaml file
- integration - vagrant plugin HostsUpdater: no more /etc/hosts file to edit!
- virtualbox 5.x
- vagrant > 1.8.4
- (optional)vagrant HostsUpdater plugin: https://github.com/cogitatio/vagrant-hostsupdater
install with
vagrant plugin install vagrant-hostsupdater
- (in case of error of shared folder mount errors) vagrant vagrant-vbguest plugin (install with the command
vagrant plugin install vagrant-vbguest
)
See BOXES.md
for software installed list.
- giuseppemorelli/lamp-stack 1.1.0 (debian stretch 9.3)
- giuseppemorelli/lamp-stack 1.0.3 (debian jessie 8.6)
- giuseppemorelli/lamp-stack 1.0.2 (debian jessie 8.6)
- giuseppemorelli/lamp-stack 1.0.1 (debian jessie 8.6) (deprecated)
- download latest version https://github.com/gmdotnet/vagrant-multi-machine-virtualbox/releases
- extract on your favorite work folder
- rename
config/config.yaml.sample
inconfig/config.yaml
- change settings in
config/config.yaml
- install git submodule with
git submodule init && git submodule update
- run
vagrant up
on folder where isVagrantfile
- (optional) make your configuration on vagrant machine entering by run
vagrant ssh
- have fun and happy coding!
Tab indent: 4 spaces or tab
Field | Type | Description | Note |
---|---|---|---|
host | group field | Each group of host create a machine in virtualbox |
|
enable | boolean | Enable or not the machine | Disabled machine aren't managed by Vagrant file, so if you want to destroy it you have to make this flag with yes |
vagrantbox_name | string | Name for vagrant software | |
hostname | string | Hostname of the machine | |
box | |||
box > name | string | Name of the public vagrant box | Need to be publish in https://app.vagrantup.com/boxes/search |
box > version | version x.y.z | Vagrant box version | Leave empty if you want to get latest version |
box > check_update | boolean | Check for update of your box | |
private_ip | ipv4 | Internal ipv4 of the machine | Don't use same subnet of your computer |
ram | int | Amount of ram to allocate | |
cpu | int | Amount of cpu to use | |
extra_hard_disk | |||
extra_hard_disk > create | boolean | Flag to create new extra hard disk | |
extra_hard_disk > filepath | string | Relative or absolute path for new extra hard disk | |
extra_hard_disk > size | int | Size in GB | |
provision | |||
provision > ansible > enable | boolean | Enable Ansible provisioning | |
provision > ansible > playbook_path | string | Relative path from Vagrantfile of your Ansible Playbook | |
provision > script > enable | boolean | Enable script provisioning | |
provision > script > path | string | Relative path from Vagrantfile of your script | |
plugins | |||
plugins > hostsupdater > enable | boolean | Enable or not hostsupdater plugin | https://github.com/cogitatio/vagrant-hostsupdater |
plugins > hostsupdater > permanent | boolean | Your changes to /etc/hosts will be permanent | Only if you destroy the machine, entries in /etc/hosts will be removed |
plugins > hostsupdater > aliases | array | domain aliases for the same ip | Leave blank for no aliases |
share | |||
share > folder | group field | Group of shared folder via virtualbox system | https://www.vagrantup.com/docs/synced-folders/basic_usage.html |
share > folder > host_folder | string | Path of the folder on your machine | |
share > folder > vagrant_folder | string | Path of the folder inside vagrant machine | |
share > folder > owner | string | Change owner folder inside vagrant machine | Default: vagrant |
share > folder > group | string | Change owner folder inside vagrant machine | Default: vagrant |
rsync | |||
rsync > folder | group field | Group of sync folder via rsync | |
rsync > folder > host_folder | string | Path of the folder on your machine | |
rsync > folder > vagrant_folder | string | Path of the folder inside vagrant machine | |
rsync > folder > owner | string | Change owner folder inside vagrant machine | Default: vagrant |
rsync > folder > group | string | Change owner folder inside vagrant machine | Default: vagrant |
rsync > folder > options | group field | Rsync parameters. One per line | https://www.vagrantup.com/docs/synced-folders/rsync.html |
rsync > folder > exclude | group field | Exclude folders from rsync | https://www.vagrantup.com/docs/synced-folders/rsync.html#rsync__exclude |
nfs | |||
nfs > folder | group field | Group of sync folder via nfs | https://www.vagrantup.com/docs/synced-folders/nfs.html |
nfs > folder > host_folder | string | Path of the folder on your machine | |
nfs > folder > vagrant_folder | string | Path of the folder inside vagrant machine | |
nfs > folder > options | group field | Nfs options. One per line | https://www.vagrantup.com/docs/synced-folders/nfs.html#nfs-synced-folder-options |
- Vagrant multi machine for Amazon AWS: vagrant-multi-machine-amazon-aws
- Vagrant multi machine for Digital Ocean: vagrant-multi-machine-digital-ocean
Any contribution is highly appreciated. The best way to contribute code is to open a pull request on GitHub.
Please create your pull request against the develop
branch