Is your feature request related to a problem? Please describe.
With a multi-machine config, bringing up the whole cluster of machines can become more involved for the user, due to differences in how vagrant up and vagrant provision handle parallelism.
vagrant up will optionally run operations in parallel, including provisioning, which happens as soon as that specific VM is ready (started).
Alternatively, vagrant up --no-parallel will boot, and then attempt to provision each machine in order, more akin to vagrant provision which has no parallel ability, and processes each host one after the other.
When a provisioning step(s) require all the machines be 'up' to succeed (i.e. doing an SSH keyscan of other members) there is currently no built in way to have vagrant up first boot all the machines, and then run the provisioning.
Describe the solution you'd like
An ideal solution here would be a parameter in the Vagrantfile (e.g. perhaps config.vagrant.defer_provisioners = true or similar) to tell Vagrant that provisioning should wait till all machines being affected, are up.
Describe alternatives you've considered
Telling users to use vagrant up --no-provision && vagrant provision achieves the same goal, it's just a lot more for people to remember, and it can't be communicated directly (i.e. using output from Vagrant) because they need to know to run it that way before they invoke Vagrant.
A shell script to do this is literally a one liner, but suffers the same issue as above: people expect to be able to do vagrant up and have it work.
Is your feature request related to a problem? Please describe. With a multi-machine config, bringing up the whole cluster of machines can become more involved for the user, due to differences in how
vagrant up
andvagrant provision
handle parallelism.vagrant up
will optionally run operations in parallel, including provisioning, which happens as soon as that specific VM is ready (started).Alternatively,
vagrant up --no-parallel
will boot, and then attempt to provision each machine in order, more akin tovagrant provision
which has no parallel ability, and processes each host one after the other.When a provisioning step(s) require all the machines be 'up' to succeed (i.e. doing an SSH keyscan of other members) there is currently no built in way to have
vagrant up
first boot all the machines, and then run the provisioning.Describe the solution you'd like An ideal solution here would be a parameter in the Vagrantfile (e.g. perhaps
config.vagrant.defer_provisioners = true
or similar) to tell Vagrant that provisioning should wait till all machines being affected, are up.Describe alternatives you've considered
Telling users to use
vagrant up --no-provision && vagrant provision
achieves the same goal, it's just a lot more for people to remember, and it can't be communicated directly (i.e. using output from Vagrant) because they need to know to run it that way before they invoke Vagrant.A shell script to do this is literally a one liner, but suffers the same issue as above: people expect to be able to do
vagrant up
and have it work.