|
3 | 3 | require 'yaml' |
4 | 4 |
|
5 | 5 | PLAYBOOK = 'vagrant.yml' |
| 6 | +CONFIGURATION_FILE = 'group_vars/all.yml' |
6 | 7 |
|
7 | 8 | Vagrant.configure('2') do |config| |
8 | 9 |
|
9 | | - config.hostmanager.enabled = true |
10 | | - config.hostmanager.manage_host = true |
11 | | - config.hostmanager.ignore_private_ip = false |
| 10 | + puts "[INFO] loading box settings from #{CONFIGURATION_FILE}..." |
| 11 | + vagrant_environment = YAML.load_file(File.expand_path(CONFIGURATION_FILE, File.dirname(__FILE__))) |
12 | 12 |
|
13 | | - Dir.glob('host_vars/*').each do |host_var_file| |
| 13 | + vagrant_environment['vagrant'].each do |box_name, box_settings| |
| 14 | + if not box_settings['enabled'] |
| 15 | + puts "[INFO] #{box_name} is not enabled. skipping..." |
| 16 | + next |
| 17 | + done |
14 | 18 |
|
15 | | - puts "[INFO] loading #{host_var_file} box settings..." |
16 | | - vagrant_host_var = YAML.load_file(host_var_file) |
| 19 | + puts "[INFO] applying #{box_name} settings..." |
| 20 | + config.vm.define "#{box_name}" do |host| |
17 | 21 |
|
18 | | - # removed 'host_vars/' prefix and '.yml' suffix |
19 | | - vagrant_box_name = host_var_file[10..-5] |
| 22 | + host.vm.box = box_settings['box'] unless not box_settings.key? 'box' |
| 23 | + host.vm.hostname = box_name |
20 | 24 |
|
21 | | - puts "[INFO] applying #{vagrant_box_name} settings..." |
22 | | - config.vm.define "#{vagrant_box_name}" do |host| |
23 | | - host.vm.box = vagrant_host_var['box'] unless not vagrant_host_var.key? 'box' |
24 | | - host.vm.hostname = vagrant_host_var['name'] unless not vagrant_host_var.key? 'name' |
| 25 | + host.vm.network box_settings['network']['name'], ip: box_settings['network']['ip'] unless box_settings.key? 'network' |
25 | 26 |
|
26 | | - host.vm.network vagrant_host_var['network']['name'], ip: vagrant_host_var['network']['ip'] unless vagrant_host_var.key? 'network' |
27 | | - |
28 | | - puts "[INFO] applying virtualbox provider settings for #{vagrant_box_name} box..." |
29 | | - config.vm.provider "#{vagrant_host_var['provider']}" do | provider | |
30 | | - vagrant_host_var['provider'].each do |key, value| |
| 27 | + puts "[INFO] applying virtualbox provider settings for #{box_name} box..." |
| 28 | + config.vm.provider "#{box_settings['provider']}" do | provider | |
| 29 | + box_settings['provider'].each do |key, value| |
31 | 30 | next if key == 'name' |
32 | 31 | provider.send("#{key}=", value) |
33 | 32 | end |
34 | 33 | end |
35 | 34 |
|
36 | | - puts "[INFO] provisioning #{vagrant_box_name} using ansible vagrant playbook..." |
| 35 | + puts "[INFO] provisioning #{box_name} using ansible vagrant playbook..." |
37 | 36 | config.vm.provision 'ansible' do |ansible| |
38 | 37 | ansible.playbook = PLAYBOOK |
39 | 38 | ansible.verbose = 'v' |
|
0 commit comments