类似于这个问题:Passing variable to a shell script provisioner in vagrant

我想将变量传递给 shell 脚本供应商,但我想在调用供应商时在命令行上设置这些变量。这可能吗?

最佳答案

这就是我要尝试的 - 我想有可能,因为 Vagrantfile 是一个 ruby​​ 脚本,您可以使用大部分 ruby​​ 可能性

但是要小心,因为 vagrant 可能需要检查变量,例如在执行 vagrant up arg1 arg2 时,它​​期望 arg1 和 arg2 是在 Vagrantfile 中定义的机器名称,并且由于找不到它会引发错误

所以你需要传递这些变量,比如

vagrant --arg1 --arg2 up

要阅读它们,您可以
# -*- mode: ruby -*-
# vi: set ft=ruby :

v1 = ARGV[0]
v2 = ARGV[1]
array_arg = [v1, v2]


Vagrant.configure("2") do |config|

  blabla config

  array_arg.each do |arg|
    config.vm.provision "shell", run: "always" do |s|
      s.inline = "echo $1"
      s.args   = arg
    end
  end
end

例如,执行会给
fhenri@machine:~/project$ vagrant --arg1 --arg2 up
    . . . . .
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default: --arg1
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default: --arg2

关于ruby - 将命令行参数传递给 vagrant shell 脚本配置器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33070700/

10-14 14:08
查看更多