我有一个多机器的vagrant设置,其中有些块需要更改执行顺序。
由于vagrant的顺序是从外到内的,最嵌套的块最后执行。
我需要一种方法使提供程序块更嵌套,以便它们最后执行。我已经尝试添加mach.vm.define,但这些块没有执行,我不明白为什么。
正常执行,错误的顺序。
理想的解决方案,但是额外的嵌套块不会执行。
有没有一种方法可以使配置更深层次,以便在提供程序块的内容之后运行?
编辑:任何特定于提供程序的内容都不可接受(例如,另一个提供程序块)或任何导致重复代码的内容。
由于vagrant的顺序是从外到内的,最嵌套的块最后执行。
我需要一种方法使提供程序块更嵌套,以便它们最后执行。我已经尝试添加mach.vm.define,但这些块没有执行,我不明白为什么。
正常执行,错误的顺序。
Vagrant.require_version ">= 1.6.0"
VAGRANTFILE_API_VERSION = "2"
require 'yaml'
machines = YAML.load_file('vagrant.yaml')
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
machines.each do |machine|
config.vm.define machine["name"] do |mach|
machine['run_this'].each do |run_this|
mach.vm.provider "virtualbox" do |v, override|
# should run first
end
end
# Do a puppet provision to install the rest of the software
mach.vm.provision "puppet" do |puppet|
# puppet stuff
end
mach.vm.box = 'ubuntu/trusty64'
end
end
理想的解决方案,但是额外的嵌套块不会执行。
Vagrant.require_version ">= 1.6.0"
VAGRANTFILE_API_VERSION = "2"
require 'yaml'
machines = YAML.load_file('vagrant.yaml')
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
machines.each do |machine|
config.vm.define machine["name"] do |mach|
machine['run_this'].each do |run_this|
mach.vm.provider "virtualbox" do |v, override|
# should run first but it doesn't because it's in an extra provider block
end
end
mach.vm.define :prov do |prov| # This block doesn't execute
# Do a puppet provision to install the rest of the software
prov.vm.provision "puppet" do |puppet|
# puppet stuff
end
end
mach.vm.box = 'ubuntu/trusty64'
end
end
end
有没有一种方法可以使配置更深层次,以便在提供程序块的内容之后运行?
编辑:任何特定于提供程序的内容都不可接受(例如,另一个提供程序块)或任何导致重复代码的内容。