Это то, что я хотел бы попробовать - я предполагаю, что есть возможности, как Vagrantfile является рубиновый скрипт, вы можете использовать большинство возможностей рубина
Будьте осторожны, хотя, как бродяга, возможно, потребуется проверить переменные, например, при выполнении 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
, например, исполнение даст
[email protected]:~/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
так что вы хотите сделать что-то вроде 'бродячей до arg1 arg2' и отправить arg1 и arg2 в Provisioner? –
Да, это правильно. – mhkeller