1.3循环
当我们创建多个虚拟机时,会用到循环
(1..3).each do |i|
config.vm.define "node-#{i}" do |node|
node.vm.provision "shell",
inline: "echo hello from node #{i}"
end
end
注意,不能使用for循环
Vagrant.configure("2") do |config|
# ... other configuration
config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
注意,此文件不会自动保持同步
3.2.1 脚本读入方式
inline
直接将脚本文件写入到Vagrantfile里面
$script = <<SCRIPT
echo I am provisioning...
date > /etc/vagrant_provisioned_at
SCRIPT
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: $script
end
也可以从指定path读入脚本
Vagrant.configure("2") do |config|
config.vm.provision "shell", path: "script.sh"
end
甚至可以从网络路径读入脚本:
Vagrant.configure("2") do |config|
config.vm.provision "shell", path: "https://example.com/provisioner.sh"
end
3.2.2脚本参数传入
Vagrant.configure("2") do |config|
config.vm.provision "shell" do |s|
s.inline = "echo $1"
s.args = "'hello, world!'"
end
end