Search code examples
bashvagrantvagrant-provisionvagrant-plugin

Use Vagrant trigger to execute bash script on host


I use Vagrant to start my testing environment. Sadly I have to retrieve information (passwords) before spinning up my Vagrant box. So far I use Vagrant-Triggers to do this and have multiple run "do something" commands.

IS

[:up, :provision].each do |cmd|
    config.trigger.before cmd, stdout: true do
      run "rm -rf #{cookbooks_path}"
      run "mkdir -p #{cookbooks_path}"
      run "touch fileX"
      run "touch fileY"
      run "touch fileZ"
    end
end

How can I move all my commands to one batch file which I then only include?

SHOULD

[:up, :provision].each do |cmd|
    config.trigger.before cmd, stdout: true do
      include_script "Vagrant_trigger_before.sh"
    end
end

Thank you for your help!


Solution

  • You can run your script directly using the run instructions

    [:up, :provision].each do |cmd|
        config.trigger.before cmd, stdout: true do
          run "Vagrant_trigger_before.sh"
        end
    end