Я бы хотел монтировать общие папки динамически, получая данные из файла YAML.
Я пробовал разные методы, но ни один из них не подходит.
Это соответствующий код:
Vagrant.configure("2") do |config|
config.vm.synced_folder 'site/project/templates/' , '/tmp/vagrant-puppet/templates'
config.vm.synced_folder 'site/project/lib/facter', '/var/lib/puppet/lib/facter', create: 'true'
config.vm.synced_folder 'site/project/lib/puppet/parser/functions', '/var/lib/puppet/parser/functions', create: 'true'
config.vm.synced_folder '.', '/vagrant', create: 'true', owner: 'root', group: 'root'
config.vm.synced_folder '~/projects', '/root/projects'
{
:'onebox' => {
:os => 'Ubuntu1404',
:puppetmode => 'apply',
:ip => "192.168.56.120",
:public_network => false,
:manifest_file => 'site.pp',
:autostart => true
},
}.each do |name,cfg|
config.vm.define name , autostart: cfg[:autostart] do |local|
vagrantconfig = YAML.load(File.open(File.join(File.dirname(__FILE__), "vagrantconfig.yaml"), File::RDONLY).read)
if vagrantconfig
cfg[:ram] = vagrantconfig["ram"]
cfg[:cpus] = vagrantconfig["cpus"]
cfg[:public_network] = vagrantconfig["public_network"]
else
puts "no vagrantconfig.yaml found, skipping custom local settings"
end
Я хотел бы заменить
config.vm.synced_folder '~/projects', '/root/projects'
на
if cfg[:synced_folder]
config.vm.synced_folder cfg[:synced_folder], '/root/projects'
end
или что-то подобное.
Я уже пытался вставить вif vagrantconfig
заявление, но не сработало