tnargav 1.2.2
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.
- data/.gitignore +31 -0
- data/.gitsetup.yml +5 -0
- data/.travis.yml +7 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +1067 -0
- data/Gemfile +3 -0
- data/LICENSE +21 -0
- data/README.md +89 -0
- data/Rakefile +18 -0
- data/bin/vagrant +106 -0
- data/config/default.rb +36 -0
- data/contrib/README.md +12 -0
- data/contrib/bash/completion.sh +3 -0
- data/contrib/emacs/vagrant.el +8 -0
- data/contrib/vim/vagrantfile.vim +9 -0
- data/keys/README.md +17 -0
- data/keys/vagrant +27 -0
- data/keys/vagrant.pub +1 -0
- data/lib/vagrant/action/builder.rb +174 -0
- data/lib/vagrant/action/builtin/box_add.rb +81 -0
- data/lib/vagrant/action/builtin/call.rb +67 -0
- data/lib/vagrant/action/builtin/config_validate.rb +30 -0
- data/lib/vagrant/action/builtin/confirm.rb +38 -0
- data/lib/vagrant/action/builtin/destroy_confirm.rb +21 -0
- data/lib/vagrant/action/builtin/env_set.rb +24 -0
- data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
- data/lib/vagrant/action/builtin/handle_box_url.rb +77 -0
- data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +134 -0
- data/lib/vagrant/action/builtin/lock.rb +57 -0
- data/lib/vagrant/action/builtin/nfs.rb +118 -0
- data/lib/vagrant/action/builtin/provision.rb +70 -0
- data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
- data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
- data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
- data/lib/vagrant/action/general/package.rb +103 -0
- data/lib/vagrant/action/hook.rb +107 -0
- data/lib/vagrant/action/runner.rb +69 -0
- data/lib/vagrant/action/warden.rb +103 -0
- data/lib/vagrant/action.rb +43 -0
- data/lib/vagrant/batch_action.rb +113 -0
- data/lib/vagrant/box.rb +97 -0
- data/lib/vagrant/box_collection.rb +375 -0
- data/lib/vagrant/cli.rb +82 -0
- data/lib/vagrant/config/loader.rb +222 -0
- data/lib/vagrant/config/v1/dummy_config.rb +13 -0
- data/lib/vagrant/config/v1/loader.rb +105 -0
- data/lib/vagrant/config/v1/root.rb +60 -0
- data/lib/vagrant/config/v1.rb +9 -0
- data/lib/vagrant/config/v2/dummy_config.rb +13 -0
- data/lib/vagrant/config/v2/loader.rb +141 -0
- data/lib/vagrant/config/v2/root.rb +105 -0
- data/lib/vagrant/config/v2/util.rb +21 -0
- data/lib/vagrant/config/v2.rb +9 -0
- data/lib/vagrant/config/version_base.rb +80 -0
- data/lib/vagrant/config.rb +61 -0
- data/lib/vagrant/environment.rb +843 -0
- data/lib/vagrant/errors.rb +570 -0
- data/lib/vagrant/guest.rb +163 -0
- data/lib/vagrant/hosts.rb +28 -0
- data/lib/vagrant/machine.rb +325 -0
- data/lib/vagrant/machine_state.rb +45 -0
- data/lib/vagrant/plugin/v1/command.rb +169 -0
- data/lib/vagrant/plugin/v1/communicator.rb +98 -0
- data/lib/vagrant/plugin/v1/config.rb +112 -0
- data/lib/vagrant/plugin/v1/errors.rb +15 -0
- data/lib/vagrant/plugin/v1/guest.rb +92 -0
- data/lib/vagrant/plugin/v1/host.rb +66 -0
- data/lib/vagrant/plugin/v1/manager.rb +131 -0
- data/lib/vagrant/plugin/v1/plugin.rb +229 -0
- data/lib/vagrant/plugin/v1/provider.rb +68 -0
- data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
- data/lib/vagrant/plugin/v1.rb +19 -0
- data/lib/vagrant/plugin/v2/command.rb +234 -0
- data/lib/vagrant/plugin/v2/communicator.rb +98 -0
- data/lib/vagrant/plugin/v2/components.rb +47 -0
- data/lib/vagrant/plugin/v2/config.rb +136 -0
- data/lib/vagrant/plugin/v2/errors.rb +15 -0
- data/lib/vagrant/plugin/v2/guest.rb +78 -0
- data/lib/vagrant/plugin/v2/host.rb +66 -0
- data/lib/vagrant/plugin/v2/manager.rb +173 -0
- data/lib/vagrant/plugin/v2/plugin.rb +226 -0
- data/lib/vagrant/plugin/v2/provider.rb +69 -0
- data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
- data/lib/vagrant/plugin/v2.rb +22 -0
- data/lib/vagrant/plugin.rb +6 -0
- data/lib/vagrant/registry.rb +78 -0
- data/lib/vagrant/ui.rb +215 -0
- data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
- data/lib/vagrant/util/busy.rb +59 -0
- data/lib/vagrant/util/counter.rb +24 -0
- data/lib/vagrant/util/downloader.rb +146 -0
- data/lib/vagrant/util/file_checksum.rb +38 -0
- data/lib/vagrant/util/file_mode.rb +12 -0
- data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
- data/lib/vagrant/util/is_port_open.rb +38 -0
- data/lib/vagrant/util/line_ending_helpers.rb +14 -0
- data/lib/vagrant/util/network_ip.rb +28 -0
- data/lib/vagrant/util/platform.rb +58 -0
- data/lib/vagrant/util/retryable.rb +31 -0
- data/lib/vagrant/util/safe_chdir.rb +33 -0
- data/lib/vagrant/util/safe_exec.rb +36 -0
- data/lib/vagrant/util/safe_puts.rb +31 -0
- data/lib/vagrant/util/scoped_hash_override.rb +45 -0
- data/lib/vagrant/util/ssh.rb +150 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/string_block_editor.rb +77 -0
- data/lib/vagrant/util/subprocess.rb +273 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/util/which.rb +43 -0
- data/lib/vagrant/util.rb +12 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant.rb +258 -0
- data/plugins/README.md +5 -0
- data/plugins/commands/box/command/add.rb +51 -0
- data/plugins/commands/box/command/list.rb +41 -0
- data/plugins/commands/box/command/remove.rb +37 -0
- data/plugins/commands/box/command/repackage.rb +43 -0
- data/plugins/commands/box/command/root.rb +75 -0
- data/plugins/commands/box/plugin.rb +15 -0
- data/plugins/commands/destroy/command.rb +31 -0
- data/plugins/commands/destroy/plugin.rb +18 -0
- data/plugins/commands/halt/command.rb +33 -0
- data/plugins/commands/halt/plugin.rb +18 -0
- data/plugins/commands/init/command.rb +40 -0
- data/plugins/commands/init/plugin.rb +18 -0
- data/plugins/commands/package/command.rb +83 -0
- data/plugins/commands/package/plugin.rb +18 -0
- data/plugins/commands/plugin/action/bundler_check.rb +25 -0
- data/plugins/commands/plugin/action/install_gem.rb +81 -0
- data/plugins/commands/plugin/action/license_plugin.rb +54 -0
- data/plugins/commands/plugin/action/list_plugins.rb +54 -0
- data/plugins/commands/plugin/action/prune_gems.rb +149 -0
- data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
- data/plugins/commands/plugin/action.rb +52 -0
- data/plugins/commands/plugin/command/base.rb +22 -0
- data/plugins/commands/plugin/command/install.rb +58 -0
- data/plugins/commands/plugin/command/license.rb +31 -0
- data/plugins/commands/plugin/command/list.rb +28 -0
- data/plugins/commands/plugin/command/root.rb +75 -0
- data/plugins/commands/plugin/command/uninstall.rb +28 -0
- data/plugins/commands/plugin/gem_helper.rb +74 -0
- data/plugins/commands/plugin/plugin.rb +22 -0
- data/plugins/commands/plugin/state_file.rb +57 -0
- data/plugins/commands/provision/command.rb +34 -0
- data/plugins/commands/provision/plugin.rb +18 -0
- data/plugins/commands/reload/command.rb +37 -0
- data/plugins/commands/reload/plugin.rb +18 -0
- data/plugins/commands/resume/command.rb +25 -0
- data/plugins/commands/resume/plugin.rb +17 -0
- data/plugins/commands/ssh/command.rb +63 -0
- data/plugins/commands/ssh/plugin.rb +17 -0
- data/plugins/commands/ssh_config/command.rb +49 -0
- data/plugins/commands/ssh_config/plugin.rb +18 -0
- data/plugins/commands/status/command.rb +39 -0
- data/plugins/commands/status/plugin.rb +18 -0
- data/plugins/commands/suspend/command.rb +25 -0
- data/plugins/commands/suspend/plugin.rb +18 -0
- data/plugins/commands/up/command.rb +57 -0
- data/plugins/commands/up/plugin.rb +17 -0
- data/plugins/commands/up/start_mixins.rb +26 -0
- data/plugins/communicators/ssh/communicator.rb +342 -0
- data/plugins/communicators/ssh/plugin.rb +19 -0
- data/plugins/guests/arch/cap/change_host_name.rb +18 -0
- data/plugins/guests/arch/cap/configure_networks.rb +23 -0
- data/plugins/guests/arch/guest.rb +11 -0
- data/plugins/guests/arch/plugin.rb +25 -0
- data/plugins/guests/debian/cap/change_host_name.rb +18 -0
- data/plugins/guests/debian/cap/configure_networks.rb +61 -0
- data/plugins/guests/debian/guest.rb +9 -0
- data/plugins/guests/debian/plugin.rb +25 -0
- data/plugins/guests/fedora/cap/configure_networks.rb +59 -0
- data/plugins/guests/fedora/cap/network_scripts_dir.rb +15 -0
- data/plugins/guests/fedora/guest.rb +11 -0
- data/plugins/guests/fedora/plugin.rb +25 -0
- data/plugins/guests/freebsd/cap/change_host_name.rb +14 -0
- data/plugins/guests/freebsd/cap/configure_networks.rb +39 -0
- data/plugins/guests/freebsd/cap/halt.rb +16 -0
- data/plugins/guests/freebsd/cap/mount_nfs_folder.rb +14 -0
- data/plugins/guests/freebsd/guest.rb +14 -0
- data/plugins/guests/freebsd/plugin.rb +35 -0
- data/plugins/guests/gentoo/cap/change_host_name.rb +17 -0
- data/plugins/guests/gentoo/cap/configure_networks.rb +43 -0
- data/plugins/guests/gentoo/guest.rb +9 -0
- data/plugins/guests/gentoo/plugin.rb +25 -0
- data/plugins/guests/linux/cap/halt.rb +16 -0
- data/plugins/guests/linux/cap/mount_nfs.rb +30 -0
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +40 -0
- data/plugins/guests/linux/cap/read_ip_address.rb +17 -0
- data/plugins/guests/linux/cap/shell_expand_guest_path.rb +26 -0
- data/plugins/guests/linux/guest.rb +11 -0
- data/plugins/guests/linux/plugin.rb +40 -0
- data/plugins/guests/openbsd/cap/halt.rb +16 -0
- data/plugins/guests/openbsd/guest.rb +11 -0
- data/plugins/guests/openbsd/plugin.rb +20 -0
- data/plugins/guests/pld/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/pld/guest.rb +11 -0
- data/plugins/guests/pld/plugin.rb +20 -0
- data/plugins/guests/redhat/cap/change_host_name.rb +18 -0
- data/plugins/guests/redhat/cap/configure_networks.rb +60 -0
- data/plugins/guests/redhat/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/redhat/guest.rb +11 -0
- data/plugins/guests/redhat/plugin.rb +30 -0
- data/plugins/guests/solaris/cap/change_host_name.rb +17 -0
- data/plugins/guests/solaris/cap/configure_networks.rb +25 -0
- data/plugins/guests/solaris/cap/halt.rb +21 -0
- data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +28 -0
- data/plugins/guests/solaris/config.rb +18 -0
- data/plugins/guests/solaris/guest.rb +14 -0
- data/plugins/guests/solaris/plugin.rb +40 -0
- data/plugins/guests/suse/cap/change_host_name.rb +18 -0
- data/plugins/guests/suse/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/suse/guest.rb +11 -0
- data/plugins/guests/suse/plugin.rb +25 -0
- data/plugins/guests/ubuntu/cap/change_host_name.rb +23 -0
- data/plugins/guests/ubuntu/guest.rb +32 -0
- data/plugins/guests/ubuntu/plugin.rb +20 -0
- data/plugins/hosts/arch/host.rb +68 -0
- data/plugins/hosts/arch/plugin.rb +15 -0
- data/plugins/hosts/bsd/host.rb +102 -0
- data/plugins/hosts/bsd/plugin.rb +15 -0
- data/plugins/hosts/fedora/host.rb +51 -0
- data/plugins/hosts/fedora/plugin.rb +15 -0
- data/plugins/hosts/freebsd/host.rb +43 -0
- data/plugins/hosts/freebsd/plugin.rb +15 -0
- data/plugins/hosts/gentoo/host.rb +24 -0
- data/plugins/hosts/gentoo/plugin.rb +15 -0
- data/plugins/hosts/linux/host.rb +95 -0
- data/plugins/hosts/linux/plugin.rb +15 -0
- data/plugins/hosts/opensuse/host.rb +34 -0
- data/plugins/hosts/opensuse/plugin.rb +15 -0
- data/plugins/hosts/windows/host.rb +17 -0
- data/plugins/hosts/windows/plugin.rb +15 -0
- data/plugins/kernel_v1/config/nfs.rb +20 -0
- data/plugins/kernel_v1/config/package.rb +17 -0
- data/plugins/kernel_v1/config/ssh.rb +46 -0
- data/plugins/kernel_v1/config/vagrant.rb +31 -0
- data/plugins/kernel_v1/config/vm.rb +184 -0
- data/plugins/kernel_v1/plugin.rb +44 -0
- data/plugins/kernel_v2/config/nfs.rb +14 -0
- data/plugins/kernel_v2/config/package.rb +13 -0
- data/plugins/kernel_v2/config/ssh.rb +76 -0
- data/plugins/kernel_v2/config/ssh_connect.rb +40 -0
- data/plugins/kernel_v2/config/vagrant.rb +13 -0
- data/plugins/kernel_v2/config/vm.rb +416 -0
- data/plugins/kernel_v2/config/vm_provisioner.rb +55 -0
- data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
- data/plugins/kernel_v2/plugin.rb +44 -0
- data/plugins/providers/virtualbox/action/boot.rb +49 -0
- data/plugins/providers/virtualbox/action/check_accessible.rb +23 -0
- data/plugins/providers/virtualbox/action/check_created.rb +21 -0
- data/plugins/providers/virtualbox/action/check_guest_additions.rb +45 -0
- data/plugins/providers/virtualbox/action/check_running.rb +21 -0
- data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
- data/plugins/providers/virtualbox/action/clean_machine_folder.rb +43 -0
- data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +18 -0
- data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +31 -0
- data/plugins/providers/virtualbox/action/clear_shared_folders.rb +17 -0
- data/plugins/providers/virtualbox/action/created.rb +20 -0
- data/plugins/providers/virtualbox/action/customize.rb +36 -0
- data/plugins/providers/virtualbox/action/destroy.rb +19 -0
- data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
- data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
- data/plugins/providers/virtualbox/action/export.rb +57 -0
- data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
- data/plugins/providers/virtualbox/action/forward_ports.rb +87 -0
- data/plugins/providers/virtualbox/action/import.rb +51 -0
- data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
- data/plugins/providers/virtualbox/action/is_running.rb +20 -0
- data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
- data/plugins/providers/virtualbox/action/match_mac_address.rb +21 -0
- data/plugins/providers/virtualbox/action/message_already_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
- data/plugins/providers/virtualbox/action/network.rb +410 -0
- data/plugins/providers/virtualbox/action/package.rb +20 -0
- data/plugins/providers/virtualbox/action/package_vagrantfile.rb +33 -0
- data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +64 -0
- data/plugins/providers/virtualbox/action/prune_nfs_exports.rb +20 -0
- data/plugins/providers/virtualbox/action/resume.rb +25 -0
- data/plugins/providers/virtualbox/action/sane_defaults.rb +91 -0
- data/plugins/providers/virtualbox/action/set_name.rb +40 -0
- data/plugins/providers/virtualbox/action/setup_package_files.rb +51 -0
- data/plugins/providers/virtualbox/action/share_folders.rb +128 -0
- data/plugins/providers/virtualbox/action/suspend.rb +20 -0
- data/plugins/providers/virtualbox/action.rb +311 -0
- data/plugins/providers/virtualbox/config.rb +86 -0
- data/plugins/providers/virtualbox/driver/base.rb +360 -0
- data/plugins/providers/virtualbox/driver/meta.rb +142 -0
- data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_2.rb +482 -0
- data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
- data/plugins/providers/virtualbox/plugin.rb +42 -0
- data/plugins/providers/virtualbox/provider.rb +92 -0
- data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
- data/plugins/provisioners/ansible/config.rb +72 -0
- data/plugins/provisioners/ansible/plugin.rb +23 -0
- data/plugins/provisioners/ansible/provisioner.rb +45 -0
- data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +19 -0
- data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +14 -0
- data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +34 -0
- data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +24 -0
- data/plugins/provisioners/cfengine/config.rb +120 -0
- data/plugins/provisioners/cfengine/plugin.rb +42 -0
- data/plugins/provisioners/cfengine/provisioner.rb +136 -0
- data/plugins/provisioners/chef/config/base.rb +85 -0
- data/plugins/provisioners/chef/config/chef_client.rb +57 -0
- data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
- data/plugins/provisioners/chef/plugin.rb +33 -0
- data/plugins/provisioners/chef/provisioner/base.rb +93 -0
- data/plugins/provisioners/chef/provisioner/chef_client.rb +107 -0
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +192 -0
- data/plugins/provisioners/puppet/config/puppet.rb +70 -0
- data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
- data/plugins/provisioners/puppet/plugin.rb +33 -0
- data/plugins/provisioners/puppet/provisioner/puppet.rb +117 -0
- data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
- data/plugins/provisioners/shell/config.rb +56 -0
- data/plugins/provisioners/shell/plugin.rb +23 -0
- data/plugins/provisioners/shell/provisioner.rb +86 -0
- data/tasks/acceptance.rake +113 -0
- data/tasks/bundler.rake +3 -0
- data/tasks/test.rake +20 -0
- data/templates/commands/init/Vagrantfile.erb +111 -0
- data/templates/commands/ssh_config/config.erb +16 -0
- data/templates/config/messages.erb +14 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/guests/arch/network_dhcp.erb +4 -0
- data/templates/guests/arch/network_static.erb +6 -0
- data/templates/guests/debian/network_dhcp.erb +11 -0
- data/templates/guests/debian/network_static.erb +7 -0
- data/templates/guests/fedora/network_dhcp.erb +6 -0
- data/templates/guests/fedora/network_static.erb +13 -0
- data/templates/guests/freebsd/network_dhcp.erb +3 -0
- data/templates/guests/freebsd/network_static.erb +3 -0
- data/templates/guests/gentoo/network_dhcp.erb +4 -0
- data/templates/guests/gentoo/network_static.erb +4 -0
- data/templates/guests/redhat/network_dhcp.erb +6 -0
- data/templates/guests/redhat/network_static.erb +8 -0
- data/templates/locales/en.yml +1126 -0
- data/templates/nfs/exports.erb +5 -0
- data/templates/nfs/exports_freebsd.erb +5 -0
- data/templates/nfs/exports_linux.erb +5 -0
- data/templates/package_Vagrantfile.erb +11 -0
- data/templates/provisioners/chef_client/client.erb +32 -0
- data/templates/provisioners/chef_solo/solo.erb +25 -0
- data/templates/rgloader.rb +9 -0
- data/test/acceptance/base.rb +48 -0
- data/test/acceptance/box_test.rb +99 -0
- data/test/acceptance/destroy_test.rb +37 -0
- data/test/acceptance/halt_test.rb +72 -0
- data/test/acceptance/init_test.rb +33 -0
- data/test/acceptance/networking/host_only_test.rb +37 -0
- data/test/acceptance/networking/port_forward_test.rb +125 -0
- data/test/acceptance/package_test.rb +46 -0
- data/test/acceptance/provisioning/basic_test.rb +61 -0
- data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
- data/test/acceptance/provisioning/shell_test.rb +53 -0
- data/test/acceptance/resume_test.rb +17 -0
- data/test/acceptance/shared_folders_test.rb +84 -0
- data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
- data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
- data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/ssh_test.rb +46 -0
- data/test/acceptance/support/config.rb +42 -0
- data/test/acceptance/support/isolated_environment.rb +118 -0
- data/test/acceptance/support/matchers/have_color.rb +9 -0
- data/test/acceptance/support/matchers/match_output.rb +14 -0
- data/test/acceptance/support/matchers/succeed.rb +14 -0
- data/test/acceptance/support/network_tests.rb +29 -0
- data/test/acceptance/support/output.rb +95 -0
- data/test/acceptance/support/shared/base_context.rb +72 -0
- data/test/acceptance/support/shared/command_examples.rb +33 -0
- data/test/acceptance/support/virtualbox.rb +36 -0
- data/test/acceptance/suspend_test.rb +56 -0
- data/test/acceptance/up_basic_test.rb +33 -0
- data/test/acceptance/up_with_box_url.rb +40 -0
- data/test/acceptance/vagrant_test.rb +47 -0
- data/test/acceptance/version_test.rb +15 -0
- data/test/config/acceptance_boxes.yml +7 -0
- data/test/support/isolated_environment.rb +46 -0
- data/test/support/tempdir.rb +43 -0
- data/test/unit/base.rb +27 -0
- data/test/unit/support/dummy_provider.rb +16 -0
- data/test/unit/support/isolated_environment.rb +179 -0
- data/test/unit/support/shared/base_context.rb +104 -0
- data/test/unit/vagrant/action/builder_test.rb +242 -0
- data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
- data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
- data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
- data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
- data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
- data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
- data/test/unit/vagrant/action/hook_test.rb +120 -0
- data/test/unit/vagrant/action/runner_test.rb +71 -0
- data/test/unit/vagrant/action/warden_test.rb +92 -0
- data/test/unit/vagrant/batch_action_test.rb +36 -0
- data/test/unit/vagrant/box_collection_test.rb +237 -0
- data/test/unit/vagrant/box_test.rb +122 -0
- data/test/unit/vagrant/cli_test.rb +27 -0
- data/test/unit/vagrant/config/loader_test.rb +184 -0
- data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
- data/test/unit/vagrant/config/v1/root_test.rb +40 -0
- data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
- data/test/unit/vagrant/config/v2/root_test.rb +97 -0
- data/test/unit/vagrant/config/v2/util_test.rb +21 -0
- data/test/unit/vagrant/config_test.rb +66 -0
- data/test/unit/vagrant/environment_test.rb +721 -0
- data/test/unit/vagrant/guest_test.rb +166 -0
- data/test/unit/vagrant/hosts_test.rb +37 -0
- data/test/unit/vagrant/machine_state_test.rb +26 -0
- data/test/unit/vagrant/machine_test.rb +384 -0
- data/test/unit/vagrant/plugin/v1/command_test.rb +143 -0
- data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
- data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
- data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
- data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
- data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
- data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
- data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
- data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v2/manager_test.rb +174 -0
- data/test/unit/vagrant/plugin/v2/plugin_test.rb +305 -0
- data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
- data/test/unit/vagrant/registry_test.rb +128 -0
- data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
- data/test/unit/vagrant/util/downloader_test.rb +57 -0
- data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
- data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
- data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
- data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
- data/test/unit/vagrant/util/network_ip_test.rb +17 -0
- data/test/unit/vagrant/util/retryable_test.rb +106 -0
- data/test/unit/vagrant/util/safe_chdir_test.rb +43 -0
- data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
- data/test/unit/vagrant/util/ssh_test.rb +30 -0
- data/test/unit/vagrant/util/string_block_editor_test.rb +106 -0
- data/test/unit/vagrant/util/which_test.rb +43 -0
- data/test/unit/vagrant_test.rb +56 -0
- data/tnargav.gemspec +69 -0
- data/vagrant.gemspec +69 -0
- metadata +730 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require "set"
|
|
2
|
+
require "tempfile"
|
|
3
|
+
|
|
4
|
+
require "vagrant/util/retryable"
|
|
5
|
+
require "vagrant/util/template_renderer"
|
|
6
|
+
|
|
7
|
+
module VagrantPlugins
|
|
8
|
+
module GuestRedHat
|
|
9
|
+
module Cap
|
|
10
|
+
class ConfigureNetworks
|
|
11
|
+
extend Vagrant::Util::Retryable
|
|
12
|
+
include Vagrant::Util
|
|
13
|
+
|
|
14
|
+
def self.configure_networks(machine, networks)
|
|
15
|
+
network_scripts_dir = machine.guest.capability("network_scripts_dir")
|
|
16
|
+
|
|
17
|
+
# Accumulate the configurations to add to the interfaces file as
|
|
18
|
+
# well as what interfaces we're actually configuring since we use that
|
|
19
|
+
# later.
|
|
20
|
+
interfaces = Set.new
|
|
21
|
+
networks.each do |network|
|
|
22
|
+
interfaces.add(network[:interface])
|
|
23
|
+
|
|
24
|
+
# Remove any previous vagrant configuration in this network interface's
|
|
25
|
+
# configuration files.
|
|
26
|
+
machine.communicate.sudo("touch #{network_scripts_dir}/ifcfg-eth#{network[:interface]}")
|
|
27
|
+
machine.communicate.sudo("sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' #{network_scripts_dir}/ifcfg-eth#{network[:interface]} > /tmp/vagrant-ifcfg-eth#{network[:interface]}")
|
|
28
|
+
machine.communicate.sudo("cat /tmp/vagrant-ifcfg-eth#{network[:interface]} > #{network_scripts_dir}/ifcfg-eth#{network[:interface]}")
|
|
29
|
+
machine.communicate.sudo("rm /tmp/vagrant-ifcfg-eth#{network[:interface]}")
|
|
30
|
+
|
|
31
|
+
# Render and upload the network entry file to a deterministic
|
|
32
|
+
# temporary location.
|
|
33
|
+
entry = TemplateRenderer.render("guests/redhat/network_#{network[:type]}",
|
|
34
|
+
:options => network)
|
|
35
|
+
|
|
36
|
+
temp = Tempfile.new("vagrant")
|
|
37
|
+
temp.binmode
|
|
38
|
+
temp.write(entry)
|
|
39
|
+
temp.close
|
|
40
|
+
|
|
41
|
+
machine.communicate.upload(temp.path, "/tmp/vagrant-network-entry_#{network[:interface]}")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Bring down all the interfaces we're reconfiguring. By bringing down
|
|
45
|
+
# each specifically, we avoid reconfiguring eth0 (the NAT interface) so
|
|
46
|
+
# SSH never dies.
|
|
47
|
+
interfaces.each do |interface|
|
|
48
|
+
retryable(:on => Vagrant::Errors::VagrantError, :tries => 3, :sleep => 2) do
|
|
49
|
+
machine.communicate.sudo("/sbin/ifdown eth#{interface} 2> /dev/null", :error_check => false)
|
|
50
|
+
machine.communicate.sudo("cat /tmp/vagrant-network-entry_#{interface} >> #{network_scripts_dir}/ifcfg-eth#{interface}")
|
|
51
|
+
machine.communicate.sudo("/sbin/ifup eth#{interface} 2> /dev/null")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
machine.communicate.sudo("rm /tmp/vagrant-network-entry_#{interface}")
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module GuestRedHat
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "RedHat guest"
|
|
7
|
+
description "RedHat guest support."
|
|
8
|
+
|
|
9
|
+
guest("redhat", "linux") do
|
|
10
|
+
require File.expand_path("../guest", __FILE__)
|
|
11
|
+
Guest
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
guest_capability("redhat", "change_host_name") do
|
|
15
|
+
require_relative "cap/change_host_name"
|
|
16
|
+
Cap::ChangeHostName
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
guest_capability("redhat", "configure_networks") do
|
|
20
|
+
require_relative "cap/configure_networks"
|
|
21
|
+
Cap::ConfigureNetworks
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
guest_capability("redhat", "network_scripts_dir") do
|
|
25
|
+
require_relative "cap/network_scripts_dir"
|
|
26
|
+
Cap::NetworkScriptsDir
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module GuestSolaris
|
|
3
|
+
module Cap
|
|
4
|
+
class ChangeHostName
|
|
5
|
+
def self.change_host_name(machine, name)
|
|
6
|
+
su_cmd = machine.config.solaris.suexec_cmd
|
|
7
|
+
|
|
8
|
+
# Only do this if the hostname is not already set
|
|
9
|
+
if !machine.communicate.test("#{su_cmd} hostname | grep '#{name}'")
|
|
10
|
+
machine.communicate.execute("#{su_cmd} sh -c \"echo '#{name}' > /etc/nodename\"")
|
|
11
|
+
machine.communicate.execute("#{su_cmd} uname -S #{name}")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module GuestSolaris
|
|
3
|
+
module Cap
|
|
4
|
+
class ConfigureNetworks
|
|
5
|
+
def self.configure_networks(machine, networks)
|
|
6
|
+
networks.each do |network|
|
|
7
|
+
device = "#{machine.config.solaris.device}#{network[:interface]}"
|
|
8
|
+
su_cmd = machine.config.solaris.suexec_cmd
|
|
9
|
+
ifconfig_cmd = "#{su_cmd} /sbin/ifconfig #{device}"
|
|
10
|
+
|
|
11
|
+
machine.communicate.execute("#{ifconfig_cmd} plumb")
|
|
12
|
+
|
|
13
|
+
if network[:type].to_sym == :static
|
|
14
|
+
machine.communicate.execute("#{ifconfig_cmd} inet #{network[:ip]} netmask #{network[:netmask]}")
|
|
15
|
+
machine.communicate.execute("#{ifconfig_cmd} up")
|
|
16
|
+
machine.communicate.execute("#{su_cmd} sh -c \"echo '#{network[:ip]}' > /etc/hostname.#{device}\"")
|
|
17
|
+
elsif network[:type].to_sym == :dhcp
|
|
18
|
+
machine.communicate.execute("#{ifconfig_cmd} dhcp start")
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module GuestSolaris
|
|
3
|
+
module Cap
|
|
4
|
+
class Halt
|
|
5
|
+
def self.halt(machine)
|
|
6
|
+
# There should be an exception raised if the line
|
|
7
|
+
#
|
|
8
|
+
# vagrant::::profiles=Primary Administrator
|
|
9
|
+
#
|
|
10
|
+
# does not exist in /etc/user_attr. TODO
|
|
11
|
+
begin
|
|
12
|
+
machine.communicate.execute("#{machine.config.solaris.suexec_cmd} /usr/sbin/poweroff")
|
|
13
|
+
rescue IOError
|
|
14
|
+
# Ignore, this probably means connection closed because it
|
|
15
|
+
# shut down.
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module GuestSolaris
|
|
3
|
+
module Cap
|
|
4
|
+
class MountVirtualBoxSharedFolder
|
|
5
|
+
def self.mount_virtualbox_shared_folder(machine, name, guestpath, options)
|
|
6
|
+
# These are just far easier to use than the full options syntax
|
|
7
|
+
owner = options[:owner]
|
|
8
|
+
group = options[:group]
|
|
9
|
+
|
|
10
|
+
# Create the shared folder
|
|
11
|
+
machine.communicate.execute("#{machine.config.solaris.suexec_cmd} mkdir -p #{guestpath}")
|
|
12
|
+
|
|
13
|
+
# We have to use this `id` command instead of `/usr/bin/id` since this
|
|
14
|
+
# one accepts the "-u" and "-g" flags.
|
|
15
|
+
id_cmd = "/usr/xpg4/bin/id"
|
|
16
|
+
|
|
17
|
+
# Mount the folder with the proper owner/group
|
|
18
|
+
mount_options = "-o uid=`#{id_cmd} -u #{owner}`,gid=`#{id_cmd} -g #{group}`"
|
|
19
|
+
mount_options += ",#{options[:extra]}" if options[:extra]
|
|
20
|
+
machine.communicate.execute("#{machine.config.solaris.suexec_cmd} /sbin/mount -F vboxfs #{mount_options} #{name} #{guestpath}")
|
|
21
|
+
|
|
22
|
+
# chown the folder to the proper owner/group
|
|
23
|
+
machine.communicate.execute("#{machine.config.solaris.suexec_cmd} chown `#{id_cmd} -u #{owner}`:`#{id_cmd} -g #{group}` #{guestpath}")
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module GuestSolaris
|
|
3
|
+
class Config < Vagrant.plugin("2", :config)
|
|
4
|
+
attr_accessor :halt_timeout
|
|
5
|
+
attr_accessor :halt_check_interval
|
|
6
|
+
# This sets the command to use to execute items as a superuser. sudo is default
|
|
7
|
+
attr_accessor :suexec_cmd
|
|
8
|
+
attr_accessor :device
|
|
9
|
+
|
|
10
|
+
def initialize
|
|
11
|
+
@halt_timeout = 30
|
|
12
|
+
@halt_check_interval = 1
|
|
13
|
+
@suexec_cmd = 'sudo'
|
|
14
|
+
@device = "e1000g"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module GuestSolaris
|
|
5
|
+
# A general Vagrant system implementation for "solaris".
|
|
6
|
+
#
|
|
7
|
+
# Contributed by Blake Irvin <b.irvin@modcloth.com>
|
|
8
|
+
class Guest < Vagrant.plugin("2", :guest)
|
|
9
|
+
def detect?(machine)
|
|
10
|
+
machine.communicate.test("uname -o | grep Solaris")
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module GuestSolaris
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "Solaris guest."
|
|
7
|
+
description "Solaris guest support."
|
|
8
|
+
|
|
9
|
+
config("solaris") do
|
|
10
|
+
require File.expand_path("../config", __FILE__)
|
|
11
|
+
Config
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
guest("solaris") do
|
|
15
|
+
require File.expand_path("../guest", __FILE__)
|
|
16
|
+
Guest
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
guest_capability("solaris", "change_host_name") do
|
|
20
|
+
require_relative "cap/change_host_name"
|
|
21
|
+
Cap::ChangeHostName
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
guest_capability("solaris", "configure_networks") do
|
|
25
|
+
require_relative "cap/configure_networks"
|
|
26
|
+
Cap::ConfigureNetworks
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
guest_capability("solaris", "halt") do
|
|
30
|
+
require_relative "cap/halt"
|
|
31
|
+
Cap::Halt
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
guest_capability("solaris", "mount_virtualbox_shared_folder") do
|
|
35
|
+
require_relative "cap/mount_virtualbox_shared_folder"
|
|
36
|
+
Cap::MountVirtualBoxSharedFolder
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module GuestSuse
|
|
3
|
+
module Cap
|
|
4
|
+
class ChangeHostName
|
|
5
|
+
def self.change_host_name(machine, name)
|
|
6
|
+
machine.communicate.tap do |comm|
|
|
7
|
+
# Only do this if the hostname is not already set
|
|
8
|
+
if !comm.test("sudo hostname | grep '#{name}'")
|
|
9
|
+
comm.sudo("sed -i 's/\\(HOSTNAME=\\).*/\\1#{name}/' /etc/sysconfig/network")
|
|
10
|
+
comm.sudo("hostname #{name}")
|
|
11
|
+
comm.sudo("sed -i 's@^\\(127[.]0[.]0[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module GuestSuse
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "SUSE guest"
|
|
7
|
+
description "SUSE guest support."
|
|
8
|
+
|
|
9
|
+
guest("suse", "redhat") do
|
|
10
|
+
require File.expand_path("../guest", __FILE__)
|
|
11
|
+
Guest
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
guest_capability("suse", "change_host_name") do
|
|
15
|
+
require_relative "cap/change_host_name"
|
|
16
|
+
Cap::ChangeHostName
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
guest_capability("suse", "network_scripts_dir") do
|
|
20
|
+
require_relative "cap/network_scripts_dir"
|
|
21
|
+
Cap::NetworkScriptsDir
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module GuestUbuntu
|
|
3
|
+
module Cap
|
|
4
|
+
class ChangeHostName
|
|
5
|
+
def self.change_host_name(machine, name)
|
|
6
|
+
machine.communicate.tap do |comm|
|
|
7
|
+
if !comm.test("sudo hostname | grep '^#{name}$'")
|
|
8
|
+
comm.sudo("sed -i 's/.*$/#{name}/' /etc/hostname")
|
|
9
|
+
comm.sudo("sed -i 's@^\\(127[.]0[.]1[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
|
|
10
|
+
if comm.test("[ `lsb_release -c -s` = hardy ]")
|
|
11
|
+
# hostname.sh returns 1, so I grep for the right name in /etc/hostname just to have a 0 exitcode
|
|
12
|
+
comm.sudo("/etc/init.d/hostname.sh start; grep '#{name}' /etc/hostname")
|
|
13
|
+
else
|
|
14
|
+
comm.sudo("service hostname start")
|
|
15
|
+
end
|
|
16
|
+
comm.sudo("hostname --fqdn > /etc/mailname")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
require Vagrant.source_root.join("plugins/guests/debian/guest")
|
|
4
|
+
|
|
5
|
+
module VagrantPlugins
|
|
6
|
+
module GuestUbuntu
|
|
7
|
+
class Guest < VagrantPlugins::GuestDebian::Guest
|
|
8
|
+
def detect?(machine)
|
|
9
|
+
machine.communicate.test("cat /proc/version | grep 'Ubuntu'")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def mount_shared_folder(name, guestpath, options)
|
|
13
|
+
# Mount it like normal
|
|
14
|
+
super
|
|
15
|
+
|
|
16
|
+
# Emit an upstart event if upstart is available
|
|
17
|
+
vm.communicate.sudo("[ -x /sbin/initctl ] && /sbin/initctl emit vagrant-mounted MOUNTPOINT=#{guestpath}")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def mount_nfs(ip, folders)
|
|
21
|
+
# Mount it like normal
|
|
22
|
+
super
|
|
23
|
+
|
|
24
|
+
# Emit an upstart events if upstart is available
|
|
25
|
+
folders.each do |name, opts|
|
|
26
|
+
real_guestpath = expanded_guest_path(opts[:guestpath])
|
|
27
|
+
vm.communicate.sudo("[ -x /sbin/initctl ] && /sbin/initctl emit vagrant-mounted MOUNTPOINT=#{real_guestpath}")
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module GuestUbuntu
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "Ubuntu guest"
|
|
7
|
+
description "Ubuntu guest support."
|
|
8
|
+
|
|
9
|
+
guest("ubuntu", "debian") do
|
|
10
|
+
require File.expand_path("../guest", __FILE__)
|
|
11
|
+
Guest
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
guest_capability("ubuntu", "change_host_name") do
|
|
15
|
+
require_relative "cap/change_host_name"
|
|
16
|
+
Cap::ChangeHostName
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
require Vagrant.source_root.join("plugins/hosts/linux/host")
|
|
4
|
+
|
|
5
|
+
module VagrantPlugins
|
|
6
|
+
module HostArch
|
|
7
|
+
class Host < VagrantPlugins::HostLinux::Host
|
|
8
|
+
def self.match?
|
|
9
|
+
File.exist?("/etc/arch-release")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.nfs?
|
|
13
|
+
# HostLinux checks for nfsd which returns false unless the
|
|
14
|
+
# services are actively started. This leads to a misleading
|
|
15
|
+
# error message. Checking for nfs (no d) seems to work
|
|
16
|
+
# regardless. Also fixes useless use of cat, regex, and
|
|
17
|
+
# redirection.
|
|
18
|
+
Kernel.system("grep -Fq nfs /proc/filesystems")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Normal, mid-range precedence.
|
|
22
|
+
def self.precedence
|
|
23
|
+
5
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def nfs_export(id, ip, folders)
|
|
27
|
+
output = TemplateRenderer.render('nfs/exports_linux',
|
|
28
|
+
:uuid => id,
|
|
29
|
+
:ip => ip,
|
|
30
|
+
:folders => folders)
|
|
31
|
+
|
|
32
|
+
@ui.info I18n.t("vagrant.hosts.arch.nfs_export.prepare")
|
|
33
|
+
sleep 0.5
|
|
34
|
+
|
|
35
|
+
nfs_cleanup(id)
|
|
36
|
+
|
|
37
|
+
output.split("\n").each do |line|
|
|
38
|
+
# This should only ask for administrative permission once, even
|
|
39
|
+
# though its executed in multiple subshells.
|
|
40
|
+
system(%Q[sudo su root -c "echo '#{line}' >> /etc/exports"])
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
if systemd?
|
|
44
|
+
# Call start to be nice. This will be a no-op if things are
|
|
45
|
+
# already running. Then use exportfs to pick up the changes we
|
|
46
|
+
# just made.
|
|
47
|
+
system("sudo systemctl start nfsd.service rpc-idmapd.service rpc-mountd.service rpcbind.service")
|
|
48
|
+
system("sudo exportfs -r")
|
|
49
|
+
else
|
|
50
|
+
# The restarting of services when we might not need to can be
|
|
51
|
+
# considered evil, but this will be obviated by systemd soon
|
|
52
|
+
# enough anyway.
|
|
53
|
+
system("sudo /etc/rc.d/rpcbind restart")
|
|
54
|
+
system("sudo /etc/rc.d/nfs-common restart")
|
|
55
|
+
system("sudo /etc/rc.d/nfs-server restart")
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
protected
|
|
60
|
+
|
|
61
|
+
# This tests to see if systemd is used on the system. This is used
|
|
62
|
+
# in newer versions of Arch, and requires a change in behavior.
|
|
63
|
+
def systemd?
|
|
64
|
+
`ps -o comm= 1`.chomp == 'systemd'
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module HostArch
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "Arch host"
|
|
7
|
+
description "Arch host support."
|
|
8
|
+
|
|
9
|
+
host("arch") do
|
|
10
|
+
require File.expand_path("../host", __FILE__)
|
|
11
|
+
Host
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require 'log4r'
|
|
2
|
+
|
|
3
|
+
require "vagrant"
|
|
4
|
+
require 'vagrant/util/platform'
|
|
5
|
+
|
|
6
|
+
module VagrantPlugins
|
|
7
|
+
module HostBSD
|
|
8
|
+
# Represents a BSD host, such as FreeBSD and Darwin (Mac OS X).
|
|
9
|
+
class Host < Vagrant.plugin("2", :host)
|
|
10
|
+
include Vagrant::Util
|
|
11
|
+
include Vagrant::Util::Retryable
|
|
12
|
+
|
|
13
|
+
def self.match?
|
|
14
|
+
Vagrant::Util::Platform.darwin? || Vagrant::Util::Platform.bsd?
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.precedence
|
|
18
|
+
# Set a lower precedence because this is a generic OS. We
|
|
19
|
+
# want specific distros to match first.
|
|
20
|
+
2
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def initialize(*args)
|
|
24
|
+
super
|
|
25
|
+
|
|
26
|
+
@logger = Log4r::Logger.new("vagrant::hosts::bsd")
|
|
27
|
+
@nfs_restart_command = "sudo nfsd restart"
|
|
28
|
+
@nfs_exports_template = "nfs/exports"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def nfs?
|
|
32
|
+
retryable(:tries => 10, :on => TypeError) do
|
|
33
|
+
system("which nfsd > /dev/null 2>&1")
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def nfs_export(id, ip, folders)
|
|
38
|
+
output = TemplateRenderer.render(@nfs_exports_template,
|
|
39
|
+
:uuid => id,
|
|
40
|
+
:ip => ip,
|
|
41
|
+
:folders => folders)
|
|
42
|
+
|
|
43
|
+
# The sleep ensures that the output is truly flushed before any `sudo`
|
|
44
|
+
# commands are issued.
|
|
45
|
+
@ui.info I18n.t("vagrant.hosts.bsd.nfs_export")
|
|
46
|
+
sleep 0.5
|
|
47
|
+
|
|
48
|
+
# First, clean up the old entry
|
|
49
|
+
nfs_cleanup(id)
|
|
50
|
+
|
|
51
|
+
# Output the rendered template into the exports
|
|
52
|
+
output.split("\n").each do |line|
|
|
53
|
+
line = line.gsub('"', '\"')
|
|
54
|
+
system(%Q[sudo su root -c "echo '#{line}' >> /etc/exports"])
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# We run restart here instead of "update" just in case nfsd
|
|
58
|
+
# is not starting
|
|
59
|
+
system(@nfs_restart_command)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def nfs_prune(valid_ids)
|
|
63
|
+
return if !File.exist?("/etc/exports")
|
|
64
|
+
|
|
65
|
+
@logger.info("Pruning invalid NFS entries...")
|
|
66
|
+
|
|
67
|
+
output = false
|
|
68
|
+
|
|
69
|
+
File.read("/etc/exports").lines.each do |line|
|
|
70
|
+
if id = line[/^# VAGRANT-BEGIN: (.+?)$/, 1]
|
|
71
|
+
if valid_ids.include?(id)
|
|
72
|
+
@logger.debug("Valid ID: #{id}")
|
|
73
|
+
else
|
|
74
|
+
if !output
|
|
75
|
+
# We want to warn the user but we only want to output once
|
|
76
|
+
@ui.info I18n.t("vagrant.hosts.bsd.nfs_prune")
|
|
77
|
+
output = true
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
@logger.info("Invalid ID, pruning: #{id}")
|
|
81
|
+
nfs_cleanup(id)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
protected
|
|
88
|
+
|
|
89
|
+
def nfs_cleanup(id)
|
|
90
|
+
return if !File.exist?("/etc/exports")
|
|
91
|
+
|
|
92
|
+
# Escape sed-sensitive characters:
|
|
93
|
+
id = id.gsub("/", "\\/")
|
|
94
|
+
id = id.gsub(".", "\\.")
|
|
95
|
+
|
|
96
|
+
# Use sed to just strip out the block of code which was inserted
|
|
97
|
+
# by Vagrant, and restart NFS.
|
|
98
|
+
system("sudo sed -e '/^# VAGRANT-BEGIN: #{id}/,/^# VAGRANT-END: #{id}/ d' -ibak /etc/exports")
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module HostBSD
|
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
|
6
|
+
name "BSD host"
|
|
7
|
+
description "BSD host support."
|
|
8
|
+
|
|
9
|
+
host("bsd") do
|
|
10
|
+
require File.expand_path("../host", __FILE__)
|
|
11
|
+
Host
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|