vagrant-config_builder 0.15.1 → 1.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.travis.yml +18 -4
 - data/CHANGELOG +44 -0
 - data/Gemfile +3 -4
 - data/lib/config_builder/model/base.rb +182 -8
 - data/lib/config_builder/model/network/forwarded_port.rb +34 -13
 - data/lib/config_builder/model/network/private_network.rb +17 -1
 - data/lib/config_builder/model/network/public_network.rb +39 -0
 - data/lib/config_builder/model/nfs.rb +33 -0
 - data/lib/config_builder/model/provider/aws.rb +16 -39
 - data/lib/config_builder/model/provider/azure.rb +11 -33
 - data/lib/config_builder/model/provider/base.rb +37 -0
 - data/lib/config_builder/model/provider/libvirt.rb +33 -39
 - data/lib/config_builder/model/provider/openstack.rb +69 -0
 - data/lib/config_builder/model/provider/openstack_plugin.rb +46 -0
 - data/lib/config_builder/model/provider/softlayer.rb +85 -0
 - data/lib/config_builder/model/provider/virtualbox.rb +84 -17
 - data/lib/config_builder/model/provider/vmware.rb +6 -4
 - data/lib/config_builder/model/provider/vsphere.rb +33 -15
 - data/lib/config_builder/model/provisioner/base.rb +33 -0
 - data/lib/config_builder/model/provisioner/file.rb +1 -10
 - data/lib/config_builder/model/provisioner/puppet.rb +32 -22
 - data/lib/config_builder/model/provisioner/puppet_server.rb +21 -15
 - data/lib/config_builder/model/provisioner/shell.rb +28 -10
 - data/lib/config_builder/model/root.rb +28 -4
 - data/lib/config_builder/model/ssh.rb +29 -11
 - data/lib/config_builder/model/synced_folder.rb +83 -14
 - data/lib/config_builder/model/vm.rb +111 -52
 - data/lib/config_builder/model/winrm.rb +27 -7
 - data/lib/config_builder/model.rb +9 -1
 - data/lib/config_builder/model_delegator.rb +5 -24
 - data/lib/config_builder/version.rb +1 -1
 - data/spec/integration/vagrant/root_config_spec.rb +89 -0
 - data/spec/integration/vagrant/vm_config_spec.rb +101 -0
 - data/spec/integration/vagrant/vm_provider_spec.rb +57 -0
 - data/spec/integration/vagrant/vm_provisioner_spec.rb +90 -0
 - data/spec/spec_helper.rb +6 -2
 - data/spec/{config_builder → unit}/filter/boxes_spec.rb +0 -0
 - data/spec/{config_builder → unit}/filter/roles_spec.rb +0 -0
 - data/spec/{config_builder → unit}/loader/yaml_spec.rb +0 -0
 - data/spec/unit/model/base_spec.rb +122 -0
 - data/spec/{config_builder → unit}/model/provider/vmware_fusion_spec.rb +6 -5
 - data/templates/locales/en.yml +4 -0
 - metadata +33 -20
 
| 
         @@ -1,49 +1,59 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # @see http://docs.vagrantup.com/v2/provisioning/puppet_apply.html
         
     | 
| 
       2 
     | 
    
         
            -
            class ConfigBuilder::Model::Provisioner::Puppet < ConfigBuilder::Model::Base
         
     | 
| 
      
 2 
     | 
    
         
            +
            class ConfigBuilder::Model::Provisioner::Puppet < ConfigBuilder::Model::Provisioner::Base
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              # @!attribute [rw] binary_path
         
     | 
| 
      
 5 
     | 
    
         
            +
              #   @return [String] The path to Puppet's `bin` directory.
         
     | 
| 
      
 6 
     | 
    
         
            +
              def_model_attribute :binary_path
         
     | 
| 
       3 
7 
     | 
    
         | 
| 
       4 
8 
     | 
    
         
             
              # @!attribute [rw] manifests_path
         
     | 
| 
       5 
9 
     | 
    
         
             
              #   @return [String] The path to the puppet manifests.
         
     | 
| 
       6 
     | 
    
         
            -
               
     | 
| 
      
 10 
     | 
    
         
            +
              def_model_attribute :manifests_path
         
     | 
| 
       7 
11 
     | 
    
         | 
| 
       8 
12 
     | 
    
         
             
              # @!attribute [rw] manifest_file
         
     | 
| 
       9 
13 
     | 
    
         
             
              #   @return [String] The name of the manifest to apply
         
     | 
| 
       10 
     | 
    
         
            -
               
     | 
| 
      
 14 
     | 
    
         
            +
              def_model_attribute :manifest_file
         
     | 
| 
       11 
15 
     | 
    
         | 
| 
       12 
16 
     | 
    
         
             
              # @!attribute [rw] module_path
         
     | 
| 
       13 
17 
     | 
    
         
             
              #   @return [String] A colon separated set of filesystem paths for Puppet
         
     | 
| 
       14 
     | 
    
         
            -
               
     | 
| 
      
 18 
     | 
    
         
            +
              def_model_attribute :module_path
         
     | 
| 
       15 
19 
     | 
    
         | 
| 
       16 
20 
     | 
    
         
             
              # @!attribute [rw] facter
         
     | 
| 
       17 
21 
     | 
    
         
             
              #   @return [Hash] A hash of values to use as facts
         
     | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
      
 22 
     | 
    
         
            +
              def_model_attribute :facter
         
     | 
| 
       19 
23 
     | 
    
         | 
| 
       20 
24 
     | 
    
         
             
              # @!attribute [rw] options
         
     | 
| 
       21 
25 
     | 
    
         
             
              #   @return [String] An arbitrary set of arguments for the `puppet` command
         
     | 
| 
       22 
     | 
    
         
            -
               
     | 
| 
      
 26 
     | 
    
         
            +
              def_model_attribute :options
         
     | 
| 
       23 
27 
     | 
    
         | 
| 
       24 
28 
     | 
    
         
             
              # @!attribute [rw] hiera_config_path
         
     | 
| 
       25 
29 
     | 
    
         
             
              #   @return [String] Path to the Hiera configuration file stored on the host
         
     | 
| 
       26 
30 
     | 
    
         
             
              #   @since 0.15.0
         
     | 
| 
       27 
     | 
    
         
            -
               
     | 
| 
      
 31 
     | 
    
         
            +
              def_model_attribute :hiera_config_path
         
     | 
| 
       28 
32 
     | 
    
         | 
| 
       29 
33 
     | 
    
         
             
              # @!attribute [rw] working_directory
         
     | 
| 
       30 
34 
     | 
    
         
             
              #   @return [String] Path in the guest that will be the working directory when Puppet is executed
         
     | 
| 
       31 
35 
     | 
    
         
             
              #   @since 0.15.0
         
     | 
| 
       32 
     | 
    
         
            -
               
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
               
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
               
     | 
| 
      
 36 
     | 
    
         
            +
              def_model_attribute :working_directory
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              # @!attribute [rw] environment
         
     | 
| 
      
 39 
     | 
    
         
            +
              #   @return [String] Name of the Puppet environment.
         
     | 
| 
      
 40 
     | 
    
         
            +
              def_model_attribute :environment
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              # @!attribute [rw] environment_path
         
     | 
| 
      
 43 
     | 
    
         
            +
              #   @return [String] Path to the directory that contains environment files on the host disk.
         
     | 
| 
      
 44 
     | 
    
         
            +
              def_model_attribute :environment_path
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              # @!attribute [rw] synced_folder_type
         
     | 
| 
      
 47 
     | 
    
         
            +
              #   @return [String] The type of synced folders to use when sharing the data required for the provisioner to work properly.
         
     | 
| 
      
 48 
     | 
    
         
            +
              def_model_attribute :synced_folder_type
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              # @!attribute [rw] synced_folder_args
         
     | 
| 
      
 51 
     | 
    
         
            +
              #   @return [Array<String>] Arguments that are passed to the folder sync.
         
     | 
| 
      
 52 
     | 
    
         
            +
              def_model_attribute :synced_folder_args
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              # @!attribute [rw] temp_dir
         
     | 
| 
      
 55 
     | 
    
         
            +
              #   @return [String] The directory where the data associated with the Puppet run will be stored on the guest machine.
         
     | 
| 
      
 56 
     | 
    
         
            +
              def_model_attribute :temp_dir
         
     | 
| 
       47 
57 
     | 
    
         | 
| 
       48 
58 
     | 
    
         
             
              ConfigBuilder::Model::Provisioner.register('puppet', self)
         
     | 
| 
       49 
59 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,27 +1,33 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # @see http://docs.vagrantup.com/v2/provisioning/puppet_agent.html
         
     | 
| 
       2 
     | 
    
         
            -
            class ConfigBuilder::Model::Provisioner::PuppetServer < ConfigBuilder::Model::Base
         
     | 
| 
      
 2 
     | 
    
         
            +
            class ConfigBuilder::Model::Provisioner::PuppetServer < ConfigBuilder::Model::Provisioner::Base
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              # @!attribute [rw] binary_path
         
     | 
| 
      
 5 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 6 
     | 
    
         
            +
              def_model_attribute :binary_path
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              # @!attribute [rw] client_cert_path
         
     | 
| 
      
 9 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 10 
     | 
    
         
            +
              def_model_attribute :client_cert_path
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              # @!attribute [rw] client_private_key_path
         
     | 
| 
      
 13 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 14 
     | 
    
         
            +
              def_model_attribute :client_private_key_path
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              # @!attribute [rw] facter
         
     | 
| 
      
 17 
     | 
    
         
            +
              #   @return [Hash]
         
     | 
| 
      
 18 
     | 
    
         
            +
              def_model_attribute :facter
         
     | 
| 
       3 
19 
     | 
    
         | 
| 
       4 
20 
     | 
    
         
             
              # @!attribute [rw] puppet_server
         
     | 
| 
       5 
21 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       6 
     | 
    
         
            -
               
     | 
| 
      
 22 
     | 
    
         
            +
              def_model_attribute :puppet_server
         
     | 
| 
       7 
23 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
              # @!attribute [rw]  
     | 
| 
      
 24 
     | 
    
         
            +
              # @!attribute [rw] puppet_node
         
     | 
| 
       9 
25 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       10 
     | 
    
         
            -
               
     | 
| 
      
 26 
     | 
    
         
            +
              def_model_attribute :puppet_node
         
     | 
| 
       11 
27 
     | 
    
         | 
| 
       12 
28 
     | 
    
         
             
              # @!attribute [rw] options
         
     | 
| 
       13 
29 
     | 
    
         
             
              #   @return [String]
         
     | 
| 
       14 
     | 
    
         
            -
               
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
              def to_proc
         
     | 
| 
       17 
     | 
    
         
            -
                Proc.new do |vm_config|
         
     | 
| 
       18 
     | 
    
         
            -
                  vm_config.provision :puppet_server do |puppet_config|
         
     | 
| 
       19 
     | 
    
         
            -
                    with_attr(:puppet_server) { |val| puppet_config.puppet_server = val }
         
     | 
| 
       20 
     | 
    
         
            -
                    with_attr(:node_name)     { |val| puppet_config.node_name     = val }
         
     | 
| 
       21 
     | 
    
         
            -
                    with_attr(:options)       { |val| puppet_config.options       = val }
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
              def_model_attribute :options
         
     | 
| 
       25 
31 
     | 
    
         | 
| 
       26 
32 
     | 
    
         
             
              ConfigBuilder::Model::Provisioner.register('puppet_server', self)
         
     | 
| 
       27 
33 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # @see http://docs.vagrantup.com/v2/provisioning/shell.html
         
     | 
| 
       2 
     | 
    
         
            -
            class ConfigBuilder::Model::Provisioner::Shell < ConfigBuilder::Model::Base
         
     | 
| 
      
 2 
     | 
    
         
            +
            class ConfigBuilder::Model::Provisioner::Shell < ConfigBuilder::Model::Provisioner::Base
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
              # @!attribute [rw] inline
         
     | 
| 
       5 
5 
     | 
    
         
             
              #   @return [String] The inline shell command to run
         
     | 
| 
         @@ -13,15 +13,33 @@ class ConfigBuilder::Model::Provisioner::Shell < ConfigBuilder::Model::Base 
     | 
|
| 
       13 
13 
     | 
    
         
             
              #   @return [String] A string acting as an argument vector to the command.
         
     | 
| 
       14 
14 
     | 
    
         
             
              def_model_attribute :args
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
               
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
               
     | 
| 
      
 16 
     | 
    
         
            +
              # @!attribute [rw] env
         
     | 
| 
      
 17 
     | 
    
         
            +
              #   @return [Hash] A hash of values passed in as environment variables to the script.
         
     | 
| 
      
 18 
     | 
    
         
            +
              def_model_attribute :env
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              # @!attribute [rw] binary
         
     | 
| 
      
 21 
     | 
    
         
            +
              #   @return [Boolean] Whether Windows line endings are replaced with Unix line endings.
         
     | 
| 
      
 22 
     | 
    
         
            +
              def_model_attribute :binary
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              # @!attribute [rw] privileged
         
     | 
| 
      
 25 
     | 
    
         
            +
              #   @return [Boolean] Specifies whether to execute the script as a privileged user or not.
         
     | 
| 
      
 26 
     | 
    
         
            +
              def_model_attribute :privileged
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              # @!attribute [rw] upload_path
         
     | 
| 
      
 29 
     | 
    
         
            +
              #   @return [String] The remote path where the shell script will be uploaded to.
         
     | 
| 
      
 30 
     | 
    
         
            +
              def_model_attribute :upload_path
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              # @!attribute [rw] keep_color
         
     | 
| 
      
 33 
     | 
    
         
            +
              #   @return [Boolean] Whether Vagrant should use coloring for the output.
         
     | 
| 
      
 34 
     | 
    
         
            +
              def_model_attribute :keep_color
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              # @!attribute [rw] powershell_args
         
     | 
| 
      
 37 
     | 
    
         
            +
              #   @return [String] Extra arguments to pass to PowerShell if you are provisioning with PowerShell on Windows.
         
     | 
| 
      
 38 
     | 
    
         
            +
              def_model_attribute :powershell_args
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              # @!attribute [rw] powershell_elevated_interactive
         
     | 
| 
      
 41 
     | 
    
         
            +
              #   @return [Boolean] Whether to run an elevated script in interactive mode on Windows.
         
     | 
| 
      
 42 
     | 
    
         
            +
              def_model_attribute :powershell_elevated_interactive
         
     | 
| 
       25 
43 
     | 
    
         | 
| 
       26 
44 
     | 
    
         
             
              ConfigBuilder::Model::Provisioner.register('shell', self)
         
     | 
| 
       27 
45 
     | 
    
         
             
            end
         
     | 
| 
         @@ -2,11 +2,9 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
3 
     | 
    
         
             
            # @see http://docs.vagrantup.com/v2/vagrantfile/index.html
         
     | 
| 
       4 
4 
     | 
    
         
             
            class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              include ConfigBuilder::ModelDelegator
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
5 
     | 
    
         
             
              def_model_delegator :vagrant
         
     | 
| 
       9 
6 
     | 
    
         
             
              def_model_delegator :vms
         
     | 
| 
      
 7 
     | 
    
         
            +
              def_model_delegator :vm_defaults
         
     | 
| 
       10 
8 
     | 
    
         | 
| 
       11 
9 
     | 
    
         
             
              # @!attribute [rw] ssh
         
     | 
| 
       12 
10 
     | 
    
         
             
              #   @return [Hash<Symbol, Object>] The ssh configuration for all VMs
         
     | 
| 
         @@ -18,6 +16,16 @@ class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base 
     | 
|
| 
       18 
16 
     | 
    
         
             
              #        }
         
     | 
| 
       19 
17 
     | 
    
         
             
              def_model_delegator :ssh
         
     | 
| 
       20 
18 
     | 
    
         | 
| 
      
 19 
     | 
    
         
            +
              # @!attribute [rw] nfs
         
     | 
| 
      
 20 
     | 
    
         
            +
              #   @return [Hash<Symbol, Object>] The nfs configuration for all VMs
         
     | 
| 
      
 21 
     | 
    
         
            +
              #   @example
         
     | 
| 
      
 22 
     | 
    
         
            +
              #     >> config.nfs
         
     | 
| 
      
 23 
     | 
    
         
            +
              #     => {
         
     | 
| 
      
 24 
     | 
    
         
            +
              #           :nfs_export  => true,
         
     | 
| 
      
 25 
     | 
    
         
            +
              #           :nfs_version => 4
         
     | 
| 
      
 26 
     | 
    
         
            +
              #        }
         
     | 
| 
      
 27 
     | 
    
         
            +
              def_model_delegator :nfs
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       21 
29 
     | 
    
         
             
              # @!attribute [rw] winrm
         
     | 
| 
       22 
30 
     | 
    
         
             
              #   @return [Hash<Symbol, Object>] The winrm configuration for all VMs
         
     | 
| 
       23 
31 
     | 
    
         
             
              #   @example
         
     | 
| 
         @@ -40,10 +48,19 @@ class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base 
     | 
|
| 
       40 
48 
     | 
    
         | 
| 
       41 
49 
     | 
    
         
             
              private
         
     | 
| 
       42 
50 
     | 
    
         | 
| 
      
 51 
     | 
    
         
            +
              def eval_vm_defaults(root_config)
         
     | 
| 
      
 52 
     | 
    
         
            +
                with_attr(:vm_defaults) do |hash|
         
     | 
| 
      
 53 
     | 
    
         
            +
                  v = ConfigBuilder::Model::VM.new_from_hash(hash)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  v.call(root_config)
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       43 
58 
     | 
    
         
             
              def eval_vms(root_config)
         
     | 
| 
       44 
59 
     | 
    
         
             
                attr(:vms).each do |hash|
         
     | 
| 
       45 
60 
     | 
    
         
             
                  v = ConfigBuilder::Model::VM.new_from_hash(hash)
         
     | 
| 
       46 
     | 
    
         
            -
                  v. 
     | 
| 
      
 61 
     | 
    
         
            +
                  root_config.vm.define(v.instance_id, v.instance_options) do |vm_config|
         
     | 
| 
      
 62 
     | 
    
         
            +
                    v.call(vm_config)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  end
         
     | 
| 
       47 
64 
     | 
    
         
             
                end
         
     | 
| 
       48 
65 
     | 
    
         
             
              end
         
     | 
| 
       49 
66 
     | 
    
         | 
| 
         @@ -53,6 +70,13 @@ class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base 
     | 
|
| 
       53 
70 
     | 
    
         
             
                end
         
     | 
| 
       54 
71 
     | 
    
         
             
              end
         
     | 
| 
       55 
72 
     | 
    
         | 
| 
      
 73 
     | 
    
         
            +
              def eval_nfs(root_config)
         
     | 
| 
      
 74 
     | 
    
         
            +
                with_attr(:nfs) do |nfs_config|
         
     | 
| 
      
 75 
     | 
    
         
            +
                  f = ConfigBuilder::Model::NFS.new_from_hash(nfs_config)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  f.call(root_config)
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
              end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
       56 
80 
     | 
    
         
             
              def eval_ssh(root_config)
         
     | 
| 
       57 
81 
     | 
    
         
             
                with_attr(:ssh) do |ssh_config|
         
     | 
| 
       58 
82 
     | 
    
         
             
                  f = ConfigBuilder::Model::SSH.new_from_hash(ssh_config)
         
     | 
| 
         @@ -35,6 +35,10 @@ class ConfigBuilder::Model::SSH < ConfigBuilder::Model::Base 
     | 
|
| 
       35 
35 
     | 
    
         
             
              #     option.
         
     | 
| 
       36 
36 
     | 
    
         
             
              def_model_attribute :guest_port
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
      
 38 
     | 
    
         
            +
              # @!attribute [rw] keep_alive
         
     | 
| 
      
 39 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 40 
     | 
    
         
            +
              def_model_attribute :keep_alive
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       38 
42 
     | 
    
         
             
              # @!attribute [rw] private_key_path
         
     | 
| 
       39 
43 
     | 
    
         
             
              #   @return [String] The path to the private key to use to SSH into the guest
         
     | 
| 
       40 
44 
     | 
    
         
             
              #     machine. By default this is the insecure private key that ships with
         
     | 
| 
         @@ -58,6 +62,11 @@ class ConfigBuilder::Model::SSH < ConfigBuilder::Model::Base 
     | 
|
| 
       58 
62 
     | 
    
         
             
              #     enabled. Defaults to `false`.
         
     | 
| 
       59 
63 
     | 
    
         
             
              def_model_attribute :forward_x11
         
     | 
| 
       60 
64 
     | 
    
         | 
| 
      
 65 
     | 
    
         
            +
              # @!attribute [rw] forward_env
         
     | 
| 
      
 66 
     | 
    
         
            +
              #   @return [Array<String>] An array of host environment variables to forward
         
     | 
| 
      
 67 
     | 
    
         
            +
              #     to the guest.
         
     | 
| 
      
 68 
     | 
    
         
            +
              def_model_attribute :forward_env
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
       61 
70 
     | 
    
         
             
              # @!attribute [rw] insert_key
         
     | 
| 
       62 
71 
     | 
    
         
             
              #   @return [Boolean] If `true`, Vagrant will automatically insert an insecure
         
     | 
| 
       63 
72 
     | 
    
         
             
              #     keypair to use for SSH. By default, this is `true`. This only has an
         
     | 
| 
         @@ -89,22 +98,31 @@ class ConfigBuilder::Model::SSH < ConfigBuilder::Model::Base 
     | 
|
| 
       89 
98 
     | 
    
         
             
              #     Vagrant.
         
     | 
| 
       90 
99 
     | 
    
         
             
              def_model_attribute :shell
         
     | 
| 
       91 
100 
     | 
    
         | 
| 
      
 101 
     | 
    
         
            +
              # @!attribute [rw] sudo_command
         
     | 
| 
      
 102 
     | 
    
         
            +
              #   @return [String] The command to use when executing a command with sudo.
         
     | 
| 
      
 103 
     | 
    
         
            +
              #     This defaults to `sudo -E -H %c`. The `%c` will be replaced by the
         
     | 
| 
      
 104 
     | 
    
         
            +
              #     command that is being executed.
         
     | 
| 
      
 105 
     | 
    
         
            +
              def_model_attribute :sudo_command
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
       92 
107 
     | 
    
         
             
              def to_proc
         
     | 
| 
       93 
108 
     | 
    
         
             
                Proc.new do |global_config|
         
     | 
| 
       94 
109 
     | 
    
         
             
                  ssh = global_config.ssh
         
     | 
| 
       95 
110 
     | 
    
         | 
| 
       96 
     | 
    
         
            -
                  with_attr(:username)         { |val| ssh.username 
     | 
| 
       97 
     | 
    
         
            -
                  with_attr(:password)         { |val| ssh.password 
     | 
| 
       98 
     | 
    
         
            -
                  with_attr(:host)             { |val| ssh.host 
     | 
| 
       99 
     | 
    
         
            -
                  with_attr(:port)             { |val| ssh.port 
     | 
| 
       100 
     | 
    
         
            -
                  with_attr(:guest_port)       { |val| ssh.guest_port 
     | 
| 
      
 111 
     | 
    
         
            +
                  with_attr(:username)         { |val| ssh.username         = val }
         
     | 
| 
      
 112 
     | 
    
         
            +
                  with_attr(:password)         { |val| ssh.password         = val }
         
     | 
| 
      
 113 
     | 
    
         
            +
                  with_attr(:host)             { |val| ssh.host             = val }
         
     | 
| 
      
 114 
     | 
    
         
            +
                  with_attr(:port)             { |val| ssh.port             = val }
         
     | 
| 
      
 115 
     | 
    
         
            +
                  with_attr(:guest_port)       { |val| ssh.guest_port       = val }
         
     | 
| 
      
 116 
     | 
    
         
            +
                  with_attr(:keep_alive)       { |val| ssh.keep_alive       = val }
         
     | 
| 
       101 
117 
     | 
    
         
             
                  with_attr(:private_key_path) { |val| ssh.private_key_path = val }
         
     | 
| 
       102 
     | 
    
         
            -
                  with_attr(:forward_agent)    { |val| ssh.forward_agent 
     | 
| 
       103 
     | 
    
         
            -
                  with_attr(:forward_x11)      { |val| ssh.forward_x11 
     | 
| 
       104 
     | 
    
         
            -
                  with_attr(: 
     | 
| 
       105 
     | 
    
         
            -
                  with_attr(: 
     | 
| 
       106 
     | 
    
         
            -
                  with_attr(: 
     | 
| 
       107 
     | 
    
         
            -
                  with_attr(: 
     | 
| 
      
 118 
     | 
    
         
            +
                  with_attr(:forward_agent)    { |val| ssh.forward_agent    = val }
         
     | 
| 
      
 119 
     | 
    
         
            +
                  with_attr(:forward_x11)      { |val| ssh.forward_x11      = val }
         
     | 
| 
      
 120 
     | 
    
         
            +
                  with_attr(:forward_env)      { |val| ssh.forward_env      = val }
         
     | 
| 
      
 121 
     | 
    
         
            +
                  with_attr(:insert_key)       { |val| ssh.insert_key       = val }
         
     | 
| 
      
 122 
     | 
    
         
            +
                  with_attr(:proxy_command)    { |val| ssh.proxy_command    = val }
         
     | 
| 
      
 123 
     | 
    
         
            +
                  with_attr(:pty)              { |val| ssh.pty              = val }
         
     | 
| 
      
 124 
     | 
    
         
            +
                  with_attr(:shell)            { |val| ssh.shell            = val }
         
     | 
| 
      
 125 
     | 
    
         
            +
                  with_attr(:sudo_command)     { |val| ssh.sudo_command     = val }
         
     | 
| 
       108 
126 
     | 
    
         
             
                end
         
     | 
| 
       109 
127 
     | 
    
         
             
              end
         
     | 
| 
       110 
128 
     | 
    
         
             
            end
         
     | 
| 
         @@ -4,30 +4,82 @@ 
     | 
|
| 
       4 
4 
     | 
    
         
             
            class ConfigBuilder::Model::SyncedFolder < ConfigBuilder::Model::Base
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
              # @!attribute [rw] host_path
         
     | 
| 
       7 
     | 
    
         
            -
              #   @return [String] The host file path to mount on the guest
         
     | 
| 
      
 7 
     | 
    
         
            +
              #   @return [String] The host file path to mount on the guest.
         
     | 
| 
       8 
8 
     | 
    
         
             
              def_model_attribute :host_path
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              # @!attribute [rw] guest_path
         
     | 
| 
       11 
     | 
    
         
            -
              #   @return [String] The guest file path to be used as the mount point
         
     | 
| 
      
 11 
     | 
    
         
            +
              #   @return [String] The guest file path to be used as the mount point.
         
     | 
| 
       12 
12 
     | 
    
         
             
              def_model_attribute :guest_path
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
              # @!attribute [rw]  
     | 
| 
       15 
     | 
    
         
            -
              #    
     | 
| 
       16 
     | 
    
         
            -
              # 
     | 
| 
       17 
     | 
    
         
            -
              def_model_attribute : 
     | 
| 
      
 14 
     | 
    
         
            +
              # @!attribute [rw] create
         
     | 
| 
      
 15 
     | 
    
         
            +
              #   @return [Boolean] If true, the host path will be created if it does not
         
     | 
| 
      
 16 
     | 
    
         
            +
              #     exist.
         
     | 
| 
      
 17 
     | 
    
         
            +
              def_model_attribute :create
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              # @!attribute [rw] mount_options
         
     | 
| 
      
 20 
     | 
    
         
            +
              #   @return [Array<String>] A list of additional options to pass to the mount.
         
     | 
| 
      
 21 
     | 
    
         
            +
              #     command.
         
     | 
| 
      
 22 
     | 
    
         
            +
              def_model_attribute :mount_options
         
     | 
| 
       18 
23 
     | 
    
         | 
| 
       19 
24 
     | 
    
         
             
              # @!attribute [rw] disabled
         
     | 
| 
       20 
25 
     | 
    
         
             
              #   @return [Boolean] If the mount point should be disabled.
         
     | 
| 
       21 
26 
     | 
    
         
             
              def_model_attribute :disabled
         
     | 
| 
       22 
27 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
              # @!attribute [rw]  
     | 
| 
       24 
     | 
    
         
            -
              #   @return [ 
     | 
| 
       25 
     | 
    
         
            -
               
     | 
| 
      
 28 
     | 
    
         
            +
              # @!attribute [rw] group
         
     | 
| 
      
 29 
     | 
    
         
            +
              #   @return [String] The group that will own the synced folder. By default this
         
     | 
| 
      
 30 
     | 
    
         
            +
              #     will be the SSH user.
         
     | 
| 
      
 31 
     | 
    
         
            +
              def_model_attribute :group
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              # @!attribute [rw] owner
         
     | 
| 
      
 34 
     | 
    
         
            +
              #   @return [String] The user who should be the owner of this synced folder. By
         
     | 
| 
      
 35 
     | 
    
         
            +
              #     default this will be the SSH user.
         
     | 
| 
      
 36 
     | 
    
         
            +
              def_model_attribute :owner
         
     | 
| 
       26 
37 
     | 
    
         | 
| 
       27 
38 
     | 
    
         
             
              # @!attribute [rw] type
         
     | 
| 
       28 
39 
     | 
    
         
             
              #   @return [String] The method for syncing folder to guest.
         
     | 
| 
       29 
40 
     | 
    
         
             
              def_model_attribute :type
         
     | 
| 
       30 
41 
     | 
    
         | 
| 
      
 42 
     | 
    
         
            +
              # @!attribute [rw] nfs_export
         
     | 
| 
      
 43 
     | 
    
         
            +
              #   @return [Boolean] Whether Vagrant should manage entries in /etc/exports.
         
     | 
| 
      
 44 
     | 
    
         
            +
              def_model_attribute :nfs_export
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              # @!attribute [rw] nfs_export
         
     | 
| 
      
 47 
     | 
    
         
            +
              #   @return [nfs_udp] Whether or not to use UDP as the transport.
         
     | 
| 
      
 48 
     | 
    
         
            +
              def_model_attribute :nfs_udp
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              # @!attribute [rw] nfs_version
         
     | 
| 
      
 51 
     | 
    
         
            +
              #   @return [Fixnum, String] The NFS protocol version to use.
         
     | 
| 
      
 52 
     | 
    
         
            +
              def_model_attribute :nfs_version
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              # @!attribute [rw] rsync__args
         
     | 
| 
      
 55 
     | 
    
         
            +
              #   @return [Array<String>] A list of arguments to supply to rsync.
         
     | 
| 
      
 56 
     | 
    
         
            +
              def_model_attribute :rsync__args
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
              # @!attribute [rw] rsync__auto
         
     | 
| 
      
 59 
     | 
    
         
            +
              #   @return [Boolean] If false, then rsync-auto will not watch and
         
     | 
| 
      
 60 
     | 
    
         
            +
            # automatically sync this folder.
         
     | 
| 
      
 61 
     | 
    
         
            +
              def_model_attribute :rsync__auto
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
              # @!attribute [rw] rsync__chown
         
     | 
| 
      
 64 
     | 
    
         
            +
              #   @return [Boolean] If false, then the owner and group options for the synced
         
     | 
| 
      
 65 
     | 
    
         
            +
              #     folder are ignored and Vagrant will not execute a recursive chown.
         
     | 
| 
      
 66 
     | 
    
         
            +
              def_model_attribute :rsync__chown
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
              # @!attribute [rw] rsync__exclude
         
     | 
| 
      
 69 
     | 
    
         
            +
              #   @return [String, Array<String>] A list of files or directories to exclude
         
     | 
| 
      
 70 
     | 
    
         
            +
              #     from the sync.
         
     | 
| 
      
 71 
     | 
    
         
            +
              def_model_attribute :rsync__exclude
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
              # @!attribute [rw] rsync__rsync_path
         
     | 
| 
      
 74 
     | 
    
         
            +
              #   @return [String] The path on the remote host where rsync is and how it is
         
     | 
| 
      
 75 
     | 
    
         
            +
            # executed.
         
     | 
| 
      
 76 
     | 
    
         
            +
              def_model_attribute :rsync__rsync_path
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
              # @!attribute [rw] rsync__verbose
         
     | 
| 
      
 79 
     | 
    
         
            +
              #   @return [Boolean] If true, then the output from the rsync process will be
         
     | 
| 
      
 80 
     | 
    
         
            +
              #     echoed to the console.
         
     | 
| 
      
 81 
     | 
    
         
            +
              def_model_attribute :rsync__verbose
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       31 
83 
     | 
    
         
             
              def to_proc
         
     | 
| 
       32 
84 
     | 
    
         
             
                Proc.new do |vm_config|
         
     | 
| 
       33 
85 
     | 
    
         
             
                  vm_config.synced_folder(attr(:host_path), attr(:guest_path), folder_opts)
         
     | 
| 
         @@ -38,11 +90,28 @@ class ConfigBuilder::Model::SyncedFolder < ConfigBuilder::Model::Base 
     | 
|
| 
       38 
90 
     | 
    
         | 
| 
       39 
91 
     | 
    
         
             
              def folder_opts
         
     | 
| 
       40 
92 
     | 
    
         
             
                h = {}
         
     | 
| 
       41 
     | 
    
         
            -
                with_attr(: 
     | 
| 
       42 
     | 
    
         
            -
                with_attr(: 
     | 
| 
       43 
     | 
    
         
            -
                with_attr(: 
     | 
| 
       44 
     | 
    
         
            -
                with_attr(: 
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
      
 93 
     | 
    
         
            +
                with_attr(:create)            { |val| h[:create]            = val }
         
     | 
| 
      
 94 
     | 
    
         
            +
                with_attr(:mount_options)     { |val| h[:mount_options]     = val }
         
     | 
| 
      
 95 
     | 
    
         
            +
                with_attr(:disabled)          { |val| h[:disabled]          = val }
         
     | 
| 
      
 96 
     | 
    
         
            +
                with_attr(:group)             { |val| h[:group]             = val }
         
     | 
| 
      
 97 
     | 
    
         
            +
                with_attr(:create)            { |val| h[:create]            = val }
         
     | 
| 
      
 98 
     | 
    
         
            +
                with_attr(:extra)             { |val| h[:extra]             = val }
         
     | 
| 
      
 99 
     | 
    
         
            +
                with_attr(:disabled)          { |val| h[:disabled]          = val }
         
     | 
| 
      
 100 
     | 
    
         
            +
                with_attr(:group)             { |val| h[:group]             = val }
         
     | 
| 
      
 101 
     | 
    
         
            +
                with_attr(:nfs)               { |val| h[:nfs]               = val }
         
     | 
| 
      
 102 
     | 
    
         
            +
                with_attr(:owner)             { |val| h[:owner]             = val }
         
     | 
| 
      
 103 
     | 
    
         
            +
                with_attr(:type)              { |val| h[:type]              = val }
         
     | 
| 
      
 104 
     | 
    
         
            +
                # NFS
         
     | 
| 
      
 105 
     | 
    
         
            +
                with_attr(:nfs_export)        { |val| h[:nfs_export]        = val }
         
     | 
| 
      
 106 
     | 
    
         
            +
                with_attr(:nfs_udp)           { |val| h[:nfs_udp]           = val }
         
     | 
| 
      
 107 
     | 
    
         
            +
                with_attr(:nfs_version)       { |val| h[:nfs_version]       = val }
         
     | 
| 
      
 108 
     | 
    
         
            +
                # RSync
         
     | 
| 
      
 109 
     | 
    
         
            +
                with_attr(:rsync__args)       { |val| h[:rsync__args]       = val }
         
     | 
| 
      
 110 
     | 
    
         
            +
                with_attr(:rsync__auto)       { |val| h[:rsync__auto]       = val }
         
     | 
| 
      
 111 
     | 
    
         
            +
                with_attr(:rsync__chown)      { |val| h[:rsync__chown]      = val }
         
     | 
| 
      
 112 
     | 
    
         
            +
                with_attr(:rsync__exclude)    { |val| h[:rsync__exclude]    = val }
         
     | 
| 
      
 113 
     | 
    
         
            +
                with_attr(:rsync__rsync_path) { |val| h[:rsync__rsync_path] = val }
         
     | 
| 
      
 114 
     | 
    
         
            +
                with_attr(:rsync__verbose)    { |val| h[:rsync__verbose]    = val }
         
     | 
| 
       46 
115 
     | 
    
         
             
                h
         
     | 
| 
       47 
116 
     | 
    
         
             
              end
         
     | 
| 
       48 
117 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,8 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # @see http://docs.vagrantup.com/v2/vagrantfile/machine_settings.html
         
     | 
| 
       2 
2 
     | 
    
         
             
            class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
              include ConfigBuilder::ModelDelegator
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
3 
     | 
    
         
             
              # @!attribute [rw] provider
         
     | 
| 
       7 
4 
     | 
    
         
             
              #   @return [Hash<Symbol, Object>] The provider configuration for
         
     | 
| 
       8 
5 
     | 
    
         
             
              #     this VM
         
     | 
| 
         @@ -64,6 +61,17 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base 
     | 
|
| 
       64 
61 
     | 
    
         
             
              #        ]
         
     | 
| 
       65 
62 
     | 
    
         
             
              def_model_delegator :private_networks
         
     | 
| 
       66 
63 
     | 
    
         | 
| 
      
 64 
     | 
    
         
            +
              # @!attribute [rw] public_networks
         
     | 
| 
      
 65 
     | 
    
         
            +
              #   @return [Array<Hash<Symbol, Object>>] A collection of IP address network
         
     | 
| 
      
 66 
     | 
    
         
            +
              #     settings.
         
     | 
| 
      
 67 
     | 
    
         
            +
              #   @example
         
     | 
| 
      
 68 
     | 
    
         
            +
              #     >> vm.public_networks
         
     | 
| 
      
 69 
     | 
    
         
            +
              #     => [
         
     | 
| 
      
 70 
     | 
    
         
            +
              #           {:ip => '10.20.4.1'},
         
     | 
| 
      
 71 
     | 
    
         
            +
              #           {:bridge: "en1: Wi-Fi (AirPort)"},
         
     | 
| 
      
 72 
     | 
    
         
            +
              #        ]
         
     | 
| 
      
 73 
     | 
    
         
            +
              def_model_delegator :public_networks
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
       67 
75 
     | 
    
         
             
              # @!attribute [rw] synced_folders
         
     | 
| 
       68 
76 
     | 
    
         
             
              #   @return [Array<Hash<Symbol, Object>>]
         
     | 
| 
       69 
77 
     | 
    
         
             
              #   @example
         
     | 
| 
         @@ -75,9 +83,28 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base 
     | 
|
| 
       75 
83 
     | 
    
         
             
              #
         
     | 
| 
       76 
84 
     | 
    
         
             
              def_model_delegator :synced_folders
         
     | 
| 
       77 
85 
     | 
    
         | 
| 
       78 
     | 
    
         
            -
              # @!attribute [rw]  
     | 
| 
       79 
     | 
    
         
            -
              #   @return [String] The  
     | 
| 
       80 
     | 
    
         
            -
               
     | 
| 
      
 86 
     | 
    
         
            +
              # @!attribute [rw] name
         
     | 
| 
      
 87 
     | 
    
         
            +
              #   @return [String] The name of the instantiated box in this environment.
         
     | 
| 
      
 88 
     | 
    
         
            +
              def_model_id :name
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
              # @!attribute [rw] autostart
         
     | 
| 
      
 91 
     | 
    
         
            +
              #   @return [Boolean] If true, vagrant will start the box on "vagrant up".
         
     | 
| 
      
 92 
     | 
    
         
            +
              #   If false, vagrant must be given the box name explicitly or it will not
         
     | 
| 
      
 93 
     | 
    
         
            +
              #   start.
         
     | 
| 
      
 94 
     | 
    
         
            +
              def_model_option :autostart
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
              # @!attribute [rw] allowed_synced_folder_types
         
     | 
| 
      
 97 
     | 
    
         
            +
              #   @return [Array<String>]
         
     | 
| 
      
 98 
     | 
    
         
            +
              def_model_attribute :allowed_synced_folder_types
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
              # @!attribute [rw] base_mac
         
     | 
| 
      
 101 
     | 
    
         
            +
              #   @return [String] MAC address of the NAT device.
         
     | 
| 
      
 102 
     | 
    
         
            +
              def_model_attribute :base_mac
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
              # @!attribute [rw] autostart
         
     | 
| 
      
 105 
     | 
    
         
            +
              #   @return [Fixnum] The time in seconds that Vagrant will wait for the machine
         
     | 
| 
      
 106 
     | 
    
         
            +
              #     to boot and be accessible. By default this is 300 seconds.
         
     | 
| 
      
 107 
     | 
    
         
            +
              def_model_attribute :boot_timeout
         
     | 
| 
       81 
108 
     | 
    
         | 
| 
       82 
109 
     | 
    
         
             
              # @!attribute [rw] box
         
     | 
| 
       83 
110 
     | 
    
         
             
              #   @return [String] This configures what box the machine will be brought up
         
     | 
| 
         @@ -85,6 +112,14 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base 
     | 
|
| 
       85 
112 
     | 
    
         
             
              #     shorthand name of a box in Vagrant Cloud.
         
     | 
| 
       86 
113 
     | 
    
         
             
              def_model_attribute :box
         
     | 
| 
       87 
114 
     | 
    
         | 
| 
      
 115 
     | 
    
         
            +
              # @!attribute [rw] box_check_update
         
     | 
| 
      
 116 
     | 
    
         
            +
              #   @return [Boolean] If true, Vagrant will check for updates to the
         
     | 
| 
      
 117 
     | 
    
         
            +
              #     configured box on every `vagrant up`. If an update is found, Vagrant
         
     | 
| 
      
 118 
     | 
    
         
            +
              #     will tell the user. By default this is `true`. Updates will only be
         
     | 
| 
      
 119 
     | 
    
         
            +
              #     checked for boxes that properly support updates (boxes from Vagrant
         
     | 
| 
      
 120 
     | 
    
         
            +
              #     Cloud or some other versioned box).
         
     | 
| 
      
 121 
     | 
    
         
            +
              def_model_attribute :box_check_update
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
       88 
123 
     | 
    
         
             
              # @!attribute [rw] box_url
         
     | 
| 
       89 
124 
     | 
    
         
             
              #   @return [String, Array<String>] The URL that the configured box can be
         
     | 
| 
       90 
125 
     | 
    
         
             
              #     found at. If `box` is a shorthand to a box in Vagrant Cloud then this
         
     | 
| 
         @@ -99,6 +134,29 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base 
     | 
|
| 
       99 
134 
     | 
    
         
             
              #     example: "file:///tmp/test.box".
         
     | 
| 
       100 
135 
     | 
    
         
             
              def_model_attribute :box_url
         
     | 
| 
       101 
136 
     | 
    
         | 
| 
      
 137 
     | 
    
         
            +
              # @!attribute [rw] box_server_url
         
     | 
| 
      
 138 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 139 
     | 
    
         
            +
              def_model_attribute :box_server_url
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
              # @!attribute [rw] box_version
         
     | 
| 
      
 142 
     | 
    
         
            +
              #   @return [String] The version of the box to use. This defaults to ">= 0"
         
     | 
| 
      
 143 
     | 
    
         
            +
              #     (the latest version available). This can contain an arbitrary list of
         
     | 
| 
      
 144 
     | 
    
         
            +
              #     constraints, separated by commas, such as: >= 1.0, < 1.5. When
         
     | 
| 
      
 145 
     | 
    
         
            +
              #     constraints are given, Vagrant will use the latest available box
         
     | 
| 
      
 146 
     | 
    
         
            +
              #     satisfying these constraints.
         
     | 
| 
      
 147 
     | 
    
         
            +
              def_model_attribute :box_version
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
              # @!attribute [rw] box_download_ca_cert
         
     | 
| 
      
 150 
     | 
    
         
            +
              #   @return [String] Path to a CA cert bundle to use when downloading a box
         
     | 
| 
      
 151 
     | 
    
         
            +
              #     directly. By default, Vagrant will use the Mozilla CA cert bundle.
         
     | 
| 
      
 152 
     | 
    
         
            +
              def_model_attribute :box_download_ca_cert
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
              # @!attribute [rw] box_download_ca_path
         
     | 
| 
      
 155 
     | 
    
         
            +
              #   @return [String] Path to a directory containing CA certificates for
         
     | 
| 
      
 156 
     | 
    
         
            +
              #     downloading a box directly. By default, Vagrant will use the Mozilla CA
         
     | 
| 
      
 157 
     | 
    
         
            +
              #     cert bundle.
         
     | 
| 
      
 158 
     | 
    
         
            +
              def_model_attribute :box_download_ca_path
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
       102 
160 
     | 
    
         
             
              # @!attribute [rw] box_download_checksum
         
     | 
| 
       103 
161 
     | 
    
         
             
              #   @return [String] The checksum of the box specified by `box_url`.
         
     | 
| 
       104 
162 
     | 
    
         
             
              #     If not specified, no checksum comparison will be done. If specified,
         
     | 
| 
         @@ -128,40 +186,42 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base 
     | 
|
| 
       128 
186 
     | 
    
         
             
              #     will be verified.
         
     | 
| 
       129 
187 
     | 
    
         
             
              def_model_attribute :box_download_insecure
         
     | 
| 
       130 
188 
     | 
    
         | 
| 
       131 
     | 
    
         
            -
              # @!attribute [rw]  
     | 
| 
       132 
     | 
    
         
            -
              #   @return [Boolean] If true 
     | 
| 
       133 
     | 
    
         
            -
              #      
     | 
| 
       134 
     | 
    
         
            -
              #      
     | 
| 
       135 
     | 
    
         
            -
              #      
     | 
| 
       136 
     | 
    
         
            -
               
     | 
| 
       137 
     | 
    
         
            -
              def_model_attribute :box_check_update
         
     | 
| 
      
 189 
     | 
    
         
            +
              # @!attribute [rw] box_download_location_trusted
         
     | 
| 
      
 190 
     | 
    
         
            +
              #   @return [Boolean] If ´true´, then all HTTP redirects will be treated as
         
     | 
| 
      
 191 
     | 
    
         
            +
              #     trusted. That means credentials used for initial URL will be used for all
         
     | 
| 
      
 192 
     | 
    
         
            +
              #     subsequent redirects. By default, redirect locations are untrusted so
         
     | 
| 
      
 193 
     | 
    
         
            +
              #     credentials (if specified) used only for initial HTTP request.
         
     | 
| 
      
 194 
     | 
    
         
            +
              def_model_attribute :box_download_location_trusted
         
     | 
| 
       138 
195 
     | 
    
         | 
| 
       139 
     | 
    
         
            -
              # @!attribute [rw]  
     | 
| 
       140 
     | 
    
         
            -
              #   @return [String] The  
     | 
| 
       141 
     | 
    
         
            -
              # 
     | 
| 
       142 
     | 
    
         
            -
               
     | 
| 
       143 
     | 
    
         
            -
              #     constraints are given, Vagrant will use the latest available box
         
     | 
| 
       144 
     | 
    
         
            -
              #     satisfying these constraints.
         
     | 
| 
       145 
     | 
    
         
            -
              def_model_attribute :box_version
         
     | 
| 
      
 196 
     | 
    
         
            +
              # @!attribute [rw] communicator
         
     | 
| 
      
 197 
     | 
    
         
            +
              #   @return [String] The name of the communicator to use when sending
         
     | 
| 
      
 198 
     | 
    
         
            +
              #   commands to this box. Set to 'winrm' for Windows VMs.
         
     | 
| 
      
 199 
     | 
    
         
            +
              def_model_attribute :communicator
         
     | 
| 
       146 
200 
     | 
    
         | 
| 
       147 
     | 
    
         
            -
              # @!attribute [rw]  
     | 
| 
       148 
     | 
    
         
            -
              #   @return [ 
     | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
      
 201 
     | 
    
         
            +
              # @!attribute [rw] graceful_halt_timeout
         
     | 
| 
      
 202 
     | 
    
         
            +
              #   @return [Fixnum] The time in seconds that Vagrant will wait for the machine
         
     | 
| 
      
 203 
     | 
    
         
            +
            # to
         
     | 
| 
      
 204 
     | 
    
         
            +
              #     gracefully halt when vagrant halt is called. Defaults to 60 seconds.
         
     | 
| 
      
 205 
     | 
    
         
            +
              def_model_attribute :graceful_halt_timeout
         
     | 
| 
      
 206 
     | 
    
         
            +
             
     | 
| 
      
 207 
     | 
    
         
            +
              # @!attribute [rw] guest
         
     | 
| 
      
 208 
     | 
    
         
            +
              #   @return [String] The guest type to use for this VM.
         
     | 
| 
      
 209 
     | 
    
         
            +
              def_model_attribute :guest
         
     | 
| 
       150 
210 
     | 
    
         | 
| 
       151 
211 
     | 
    
         
             
              # @!attribute [rw] hostname
         
     | 
| 
       152 
212 
     | 
    
         
             
              #   @return [String] The hostname the machine should have.
         
     | 
| 
       153 
213 
     | 
    
         
             
              def_model_attribute :hostname
         
     | 
| 
       154 
214 
     | 
    
         | 
| 
       155 
     | 
    
         
            -
              # @!attribute [rw]  
     | 
| 
       156 
     | 
    
         
            -
              #   @return [String]  
     | 
| 
       157 
     | 
    
         
            -
              # 
     | 
| 
       158 
     | 
    
         
            -
               
     | 
| 
      
 215 
     | 
    
         
            +
              # @!attribute [rw] post_up_message
         
     | 
| 
      
 216 
     | 
    
         
            +
              #   @return [String] A message to show after vagrant up. This will be shown to
         
     | 
| 
      
 217 
     | 
    
         
            +
              #     the user and is useful for containing instructions such as how to access
         
     | 
| 
      
 218 
     | 
    
         
            +
              #     various components of the development environment.
         
     | 
| 
      
 219 
     | 
    
         
            +
              def_model_attribute :post_up_message
         
     | 
| 
       159 
220 
     | 
    
         | 
| 
       160 
     | 
    
         
            -
              # @!attribute [rw]  
     | 
| 
       161 
     | 
    
         
            -
              #   @return [ 
     | 
| 
       162 
     | 
    
         
            -
              # 
     | 
| 
       163 
     | 
    
         
            -
               
     | 
| 
       164 
     | 
    
         
            -
              def_model_attribute :autostart
         
     | 
| 
      
 221 
     | 
    
         
            +
              # @!attribute [rw] usable_port_range
         
     | 
| 
      
 222 
     | 
    
         
            +
              #   @return [String] A range of ports Vagrant can use for handling port
         
     | 
| 
      
 223 
     | 
    
         
            +
              #     collisions and such. Defaults to 2200..2250.
         
     | 
| 
      
 224 
     | 
    
         
            +
              def_model_attribute :usable_port_range
         
     | 
| 
       165 
225 
     | 
    
         | 
| 
       166 
226 
     | 
    
         
             
              def initialize
         
     | 
| 
       167 
227 
     | 
    
         
             
                @defaults = {
         
     | 
| 
         @@ -169,35 +229,27 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base 
     | 
|
| 
       169 
229 
     | 
    
         
             
                  :provisioners     => [],
         
     | 
| 
       170 
230 
     | 
    
         
             
                  :forwarded_ports  => [],
         
     | 
| 
       171 
231 
     | 
    
         
             
                  :private_networks => [],
         
     | 
| 
      
 232 
     | 
    
         
            +
                  :public_networks  => [],
         
     | 
| 
       172 
233 
     | 
    
         
             
                  :synced_folders   => [],
         
     | 
| 
       173 
234 
     | 
    
         
             
                  :autostart        => true,
         
     | 
| 
       174 
235 
     | 
    
         
             
                }
         
     | 
| 
       175 
236 
     | 
    
         
             
              end
         
     | 
| 
       176 
237 
     | 
    
         | 
| 
       177 
238 
     | 
    
         
             
              def to_proc
         
     | 
| 
       178 
     | 
    
         
            -
                Proc.new do | 
     | 
| 
       179 
     | 
    
         
            -
                   
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
     | 
    
         
            -
             
     | 
| 
       183 
     | 
    
         
            -
                    with_attr(:box_url)                    { |val| vm_config.box_url = val }
         
     | 
| 
       184 
     | 
    
         
            -
                    with_attr(:box_download_checksum)      { |val| vm_config.box_download_checksum = val }
         
     | 
| 
       185 
     | 
    
         
            -
                    with_attr(:box_download_checksum_type) { |val| vm_config.box_download_checksum_type = val }
         
     | 
| 
       186 
     | 
    
         
            -
                    with_attr(:box_download_client_cert)   { |val| vm_config.box_download_client_cert = val }
         
     | 
| 
       187 
     | 
    
         
            -
                    with_attr(:box_download_insecure)      { |val| vm_config.box_download_insecure = val }
         
     | 
| 
       188 
     | 
    
         
            -
                    with_attr(:box_check_update)           { |val| vm_config.box_check_update = val }
         
     | 
| 
       189 
     | 
    
         
            -
                    with_attr(:box_version)                { |val| vm_config.box_version = val }
         
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
     | 
    
         
            -
                    with_attr(:hostname) { |val| vm_config.hostname = attr(:hostname) }
         
     | 
| 
       192 
     | 
    
         
            -
                    with_attr(:guest)    { |val| vm_config.guest    = attr(:guest)    }
         
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
     | 
    
         
            -
                    with_attr(:communicator) { |val| vm_config.communicator = attr(:communicator) }
         
     | 
| 
       195 
     | 
    
         
            -
             
     | 
| 
       196 
     | 
    
         
            -
                    eval_models(vm_config)
         
     | 
| 
       197 
     | 
    
         
            -
                  end
         
     | 
| 
      
 239 
     | 
    
         
            +
                Proc.new do |config|
         
     | 
| 
      
 240 
     | 
    
         
            +
                  vm_config = config.vm
         
     | 
| 
      
 241 
     | 
    
         
            +
             
     | 
| 
      
 242 
     | 
    
         
            +
                  configure!(vm_config)
         
     | 
| 
      
 243 
     | 
    
         
            +
                  eval_models(vm_config)
         
     | 
| 
       198 
244 
     | 
    
         
             
                end
         
     | 
| 
       199 
245 
     | 
    
         
             
              end
         
     | 
| 
       200 
246 
     | 
    
         | 
| 
      
 247 
     | 
    
         
            +
             
     | 
| 
      
 248 
     | 
    
         
            +
              # @private
         
     | 
| 
      
 249 
     | 
    
         
            +
              def configure_usable_port_range(config, val)
         
     | 
| 
      
 250 
     | 
    
         
            +
                config.usable_port_range = Range.new(*val.split('..').map(&:to_i))
         
     | 
| 
      
 251 
     | 
    
         
            +
              end
         
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
       201 
253 
     | 
    
         
             
              private
         
     | 
| 
       202 
254 
     | 
    
         | 
| 
       203 
255 
     | 
    
         
             
              def eval_provisioners(vm_config)
         
     | 
| 
         @@ -232,6 +284,13 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base 
     | 
|
| 
       232 
284 
     | 
    
         
             
                end
         
     | 
| 
       233 
285 
     | 
    
         
             
              end
         
     | 
| 
       234 
286 
     | 
    
         | 
| 
      
 287 
     | 
    
         
            +
              def eval_public_networks(vm_config)
         
     | 
| 
      
 288 
     | 
    
         
            +
                attr(:public_networks).each do |hash|
         
     | 
| 
      
 289 
     | 
    
         
            +
                  n = ConfigBuilder::Model::Network::PublicNetwork.new_from_hash(hash)
         
     | 
| 
      
 290 
     | 
    
         
            +
                  n.call(vm_config)
         
     | 
| 
      
 291 
     | 
    
         
            +
                end
         
     | 
| 
      
 292 
     | 
    
         
            +
              end
         
     | 
| 
      
 293 
     | 
    
         
            +
             
     | 
| 
       235 
294 
     | 
    
         
             
              def eval_forwarded_ports(vm_config)
         
     | 
| 
       236 
295 
     | 
    
         
             
                attr(:forwarded_ports).each do |hash|
         
     | 
| 
       237 
296 
     | 
    
         
             
                  f = ConfigBuilder::Model::Network::ForwardedPort.new_from_hash(hash)
         
     |