在Vagrant中,我可以将配置程序设置为仅手动运行吗?

ski*_*ift 9 vagrant vagrantfile vagrant-windows

在我的Vagrantfile中,我有一个像这样的配置器:

config.vm.provision "reset", type: "shell", run: "always" do |s|
    s.privileged = false
    s.inline = "bash /path/to/my/reset/script.sh"
end
Run Code Online (Sandbox Code Playgroud)

通常情况下配置流浪汉,它运行正常.但我想做的是设置一个只在我手动调用时运行的配置器.所以,如果我有以下配置者:

config.vm.provision "otherScript", type: "shell", run: "manual" do |s|
    s.privileged = false
    s.inline = "bash /path/to/my/other/script.sh"
end
Run Code Online (Sandbox Code Playgroud)

我会用它来运行它vagrant provision --provision-with otherScript.我已经可以与其他供应商一起做了.但我无法找到一种方法来做到这一点,当我做的事情,vagrant provision它跳过任何运行设置manual.除了我可以"永远"使用之外,我在与之相关的文档中找不到任何内容.

我考虑过使用像fabric或者调用(python 3)这样的东西但是我必须在团队中的所有计算机上进行设置.我可以使用脚本设置,但我认为如果可能,这可能会更容易.

有没有办法实现这个目标?设置只在我手动调用它时才运行的配置器?

fam*_*kin 6

有一个合法需要手动/点播/明确的供应方,当你需要一个复杂的任务,需要时可用,可重复和整个团队重现性,如复位数据库,一个干净的石板.

不幸的是,Vagrant中仍然缺少这样的选项.有关功能请求,请参阅GitHub:https://github.com/mitchellh/vagrant/issues/5355.

幸运的是,通过Vagrantfile很容易解决这个限制.毕竟它只是Ruby.

if ARGV.include? '--provision-with'
  config.vm.provision 'db-reset', type: 'shell', inline: 'mysql ...'
end
Run Code Online (Sandbox Code Playgroud)