将命令行参数传递给vagrant shell脚本配置器

与此问题类似:将变量传递给vagrant中的shell脚本配置程序

我想将变量传递给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