6

我使用 Vagrant 来启动我的测试环境。可悲的是,我必须在启动我的 Vagrant 盒子之前检索信息(密码)。到目前为止,我使用 Vagrant-Triggers 来执行此操作并有多个run "do something"命令。

[: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

如何将我的所有命令移动到一个批处理文件中,然后我只包含该文件?

应该

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

谢谢您的帮助!

4

3 回答 3

5

您可以使用run说明直接运行脚本

[:up, :provision].each do |cmd|
    config.trigger.before cmd, stdout: true do
      run "Vagrant_trigger_before.sh"
    end
end
于 2017-01-05T16:22:50.467 回答
4

触发插件合并到 vagrant 主线后,语法似乎更改为

config.trigger.before :up, :provision do |trigger|
  trigger.run = {inline: "Vagrant_trigger_before.sh"}
end

参考:https ://www.vagrantup.com/docs/triggers/configuration#inline

于 2020-08-03T04:47:46.337 回答
0

除了这是一个相当古老的线程之外,还有一些有用的提示给到这里的其他人:

  1. 正如@frederic-henri 和@lin-n 指出的那样,您可以使用trigger.run当前触发器语法在特定Vagrant 命令之前或之后在主机上执行脚本
  2. trigger.run接受脚本的参数

总结(未测试):

config.trigger.before :up, :provision do |trigger|
  trigger.run do |run|
    run.args = cookbooks_path
    run.path = <Script>
  end
end
于 2021-09-28T15:45:17.440 回答