returning a value from a provision script to vagrant

As far as I am aware I don't think it is possible to return a value like that.

You can however easily get around this by having your provisioning script write a file in the /vagrant directory of the guest machine.

You can then use Ruby to process this file which will be in the same folder as your Vagrantfile.


I was able to get it from the VMs by doing this way:

On Windows:

config.trigger.after :provision do |trigger|
    trigger.name = "create token"
    trigger.run = {"inline": "vagrant ssh --no-tty -c 'hostname' master01 > test.txt"}
end

On Mac:

config.trigger.after :provision do |trigger|
  trigger.name = "create token"
  trigger.run = {"inline": "/bin/bash -c 'vagrant ssh --no-tty -c "hostname" master01 > test.txt'"}
end

This will dump the output of the command from the VM to the given file in CWD on the host.

Notes:

  • About bash redirection - why '/bin/bash -c' is required? (here in case of Mac) - https://github.com/hashicorp/vagrant/issues/10674
  • I am using Vagrant 2.2.6

Tags:

Vagrant