Передача переменной в оболочку script Proviser в бродяжнике
Я использую простую оболочку script для установки программного обеспечения для настройки бродяг, как показано здесь.
Но не может найти способ передать аргументы командной строки, переданные в бродягу, и отправить их во внешнюю оболочку script. Google показывает, что это было добавлено как функция, но я не могу найти никакой документации, охватывающей ее, или примеров там.
Ответы
Ответ 1
Ты прав. Способ передачи аргументов - это параметр :args
.
config.vm.provision :shell, :path => "bootstrap.sh", :args => "'first arg' second"
Обратите внимание, что одиночные кавычки вокруг first arg
нужны только в том случае, если вы хотите включить пробелы в часть переданного аргумента. То есть приведенный выше код эквивалентен вводу следующего в терминале:
$ bootstrap.sh 'first arg' second
Где внутри script $1 относится к строке "first arg", а $2 относится к строке "second".
Документы v2 можно найти здесь: http://docs.vagrantup.com/v2/provisioning/shell.html
Ответ 2
Действительно, он не работает с переменными!
Правильный snytax:
var1= "192.168.50.4"
var2 = "my_server"
config.vm.provision :shell, :path => 'setup.sh', :args => [var1, var2]
а затем в оболочке setup.sh:
echo "### $1 - $2"
> ### 192.168.50.4 - my_server
Ответ 3
Отвечая на мой собственный вопрос, основанный на некоторой информации, которую я нашел в старой версии страницы docs:
config.vm.provision :shell, :path => "bootstrap.sh", :args => "'abc'"
- @user1391445
Ответ 4
Вот альтернативный способ передачи переменных из среды:
config.vm.provision "shell" do |s|
s.binary = true # Replace Windows line endings with Unix line endings.
s.inline = %Q(/usr/bin/env \
TRACE=#{ENV['TRACE']} \
VERBOSE=#{ENV['VERBOSE']} \
FORCE=#{ENV['FORCE']} \
bash my_script.sh)
end
Пример использования:
TRACE=1 VERBOSE=1 vagrant up
Ответ 5
Для добавления явных аргументов я использовал это успешно:
config.vm.provision "shell", path: "provision.sh", :args => "--arg1 somearg --arg2 anotherarg"