【发布时间】:2015-06-22 03:31:12
【问题描述】:
在我的 Vagrantfile 中,我有一个这样的配置器:
config.vm.provision "reset", type: "shell", run: "always" do |s|
s.privileged = false
s.inline = "bash /path/to/my/reset/script.sh"
end
当正常配置 vagrant 时,它运行良好。但我想做的是设置一个配置器,它只在我手动调用它时运行。因此,如果我有以下供应商:
config.vm.provision "otherScript", type: "shell", run: "manual" do |s|
s.privileged = false
s.inline = "bash /path/to/my/other/script.sh"
end
我会用vagrant provision --provision-with otherScript 运行它。我已经可以使用其他供应商做到这一点。但是我找不到办法做到这一点,所以当我执行vagrant provision 之类的操作时,它会跳过运行设置为manual 的任何操作。除了可以使用“始终”之外,我在文档中找不到任何相关内容。
我考虑过使用类似 fabric 或 invoke (python 3) 的东西,但是我必须在团队中的所有计算机上进行设置。我可以使用脚本进行设置,但我认为如果可能的话这可能会更容易。
有没有办法做到这一点?要设置仅在我手动调用时才运行的配置器?
【问题讨论】:
-
shell 配置器看起来只支持两种运行模式:一次(默认)或总是,所以我认为您发布的问题的答案是“不,不可能”。你想用这个来完成什么?可能有一些替代解决方案可以达到相同的结果。
-
我同意@BrianC,如果你绝对需要它只能手动运行,那么通过 SSH 连接到盒子然后执行脚本有什么问题?
-
是的,这就是我的想法。我只是找不到任何其他文档。我已经在编写一个 ssh 脚本来运行我的脚本。谢谢。
标签: vagrant vagrantfile vagrant-windows