Bạn chỉ cần chỉ định để shell
sử dụng inline
trong Vagrantfile
tệp của mình :
config.vm.provision "shell", inline: %Q(/usr/bin/env FOO=1 BAR=1 bash /path/to/script.sh)
Hoặc tải một số biến bổ sung từ tệp YAML:
require 'yaml'
dir = File.dirname(File.expand_path(__FILE__))
vconfig = YAML::load_file("#{dir}/config.yml")
config.vm.provision "shell", inline: %Q(/usr/bin/env FOO=#{vconfig['foo']} bash /path/to/script.sh)
Ngoài ra, bạn có thể triển khai một số đối số tùy chọn từ dòng lệnh, ví dụ:
# Parse optional arguments.
opts = GetoptLong.new(
[ '--foo', GetoptLong::OPTIONAL_ARGUMENT ], # With optional parameter.
[ '--bar', GetoptLong::OPTIONAL_ARGUMENT ], # With optional parameter.files.
)
opts.each do |opt, arg|
case opt
when '--foo'
foo==arg
when '--bar'
bar=arg
end
end
sau đó sử dụng: opt['--foo'].to_s
.
Xem thêm: Làm thế nào để truyền tham số trên Vagrant lên và có nó trong phạm vi của sách nấu ăn Chef?
env
tham số dường như chỉ hoạt động khi sử dụngpath
tập lệnh, không phảiinline
tập lệnh.