gpt4 book ai didi

vagrant - 在Vagrant中,我可以将预配器设置为仅手动运行吗?

转载 作者:行者123 更新时间:2023-12-04 04:10:47 26 4
gpt4 key购买 nike

在我的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)之类的东西,但是随后我将不得不在团队中的所有计算机上进行设置。我可以使用脚本进行设置,但是我认为这可能会更容易。

有没有办法做到这一点?要设置仅在我手动调用时才运行的预配器?

最佳答案

当您需要整个团队中可用,可重复和可复制的复杂任务时,对手动/按需/显式预配器的合法需求是合理的。在需要时将数据库重置为干净的状态。

不幸的是,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

关于vagrant - 在Vagrant中,我可以将预配器设置为仅手动运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29662640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com