vagrant-unbundled 1.8.1.2 → 1.8.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -13
- data/.travis.yml +3 -0
- data/CHANGELOG.md +167 -4
- data/LICENSE +1 -1
- data/README.md +7 -9
- data/RELEASE.md +28 -0
- data/bin/vagrant +1 -1
- data/contrib/bash/completion.sh +6 -1
- data/contrib/sudoers/linux-fedora +1 -1
- data/keys/README.md +1 -1
- data/lib/vagrant/action/builtin/box_add.rb +7 -3
- data/lib/vagrant/action/general/package.rb +47 -13
- data/lib/vagrant/box.rb +1 -1
- data/lib/vagrant/box_collection.rb +3 -4
- data/lib/vagrant/bundler.rb +29 -11
- data/lib/vagrant/machine.rb +14 -5
- data/lib/vagrant/ui.rb +1 -1
- data/lib/vagrant/util/is_port_open.rb +1 -1
- data/lib/vagrant/util/platform.rb +67 -42
- data/plugins/commands/box/command/remove.rb +1 -1
- data/plugins/commands/box/command/update.rb +10 -0
- data/plugins/commands/destroy/command.rb +1 -1
- data/plugins/commands/halt/command.rb +1 -1
- data/plugins/commands/init/command.rb +8 -2
- data/plugins/commands/login/client.rb +19 -1
- data/plugins/commands/package/command.rb +1 -1
- data/plugins/commands/plugin/command/mixin_install_opts.rb +1 -1
- data/plugins/commands/plugin/gem_helper.rb +1 -1
- data/plugins/commands/port/command.rb +1 -1
- data/plugins/commands/rdp/command.rb +1 -1
- data/plugins/commands/resume/command.rb +15 -1
- data/plugins/commands/snapshot/command/pop.rb +16 -1
- data/plugins/commands/snapshot/command/push_shared.rb +7 -9
- data/plugins/commands/snapshot/command/restore.rb +14 -1
- data/plugins/commands/ssh/command.rb +2 -1
- data/plugins/commands/ssh_config/command.rb +1 -1
- data/plugins/commands/status/command.rb +1 -1
- data/plugins/commands/suspend/command.rb +1 -1
- data/plugins/commands/up/command.rb +4 -4
- data/plugins/communicators/ssh/communicator.rb +2 -2
- data/plugins/communicators/winrm/communicator.rb +11 -11
- data/plugins/communicators/winrm/config.rb +7 -1
- data/plugins/communicators/winrm/shell.rb +41 -41
- data/plugins/guests/amazon/cap/flavor.rb +14 -0
- data/plugins/guests/amazon/guest.rb +9 -0
- data/plugins/guests/amazon/plugin.rb +20 -0
- data/plugins/guests/arch/cap/change_host_name.rb +15 -6
- data/plugins/guests/arch/cap/configure_networks.rb +33 -14
- data/plugins/guests/arch/plugin.rb +1 -1
- data/plugins/guests/atomic/cap/change_host_name.rb +16 -1
- data/plugins/guests/atomic/plugin.rb +2 -2
- data/plugins/guests/coreos/cap/change_host_name.rb +10 -4
- data/plugins/guests/coreos/cap/configure_networks.rb +49 -37
- data/plugins/guests/coreos/guest.rb +2 -0
- data/plugins/guests/coreos/plugin.rb +1 -1
- data/plugins/guests/darwin/cap/change_host_name.rb +25 -7
- data/plugins/guests/darwin/cap/choose_addressable_ip_addr.rb +7 -7
- data/plugins/guests/darwin/cap/insert_public_key.rb +19 -7
- data/plugins/guests/darwin/guest.rb +1 -1
- data/plugins/guests/darwin/plugin.rb +1 -1
- data/plugins/guests/debian/cap/change_host_name.rb +37 -84
- data/plugins/guests/debian/cap/configure_networks.rb +61 -46
- data/plugins/guests/debian/cap/nfs_client.rb +5 -4
- data/plugins/guests/debian/cap/rsync.rb +6 -3
- data/plugins/guests/debian/cap/smb.rb +6 -7
- data/plugins/guests/debian/guest.rb +2 -0
- data/plugins/guests/debian/plugin.rb +1 -1
- data/plugins/guests/fedora/cap/change_host_name.rb +18 -64
- data/plugins/guests/fedora/cap/configure_networks.rb +10 -9
- data/plugins/guests/fedora/plugin.rb +1 -1
- data/plugins/guests/freebsd/cap/change_host_name.rb +21 -3
- data/plugins/guests/freebsd/cap/configure_networks.rb +45 -30
- data/plugins/guests/freebsd/cap/halt.rb +1 -1
- data/plugins/guests/freebsd/cap/insert_public_key.rb +21 -8
- data/plugins/guests/freebsd/cap/mount_nfs_folder.rb +10 -7
- data/plugins/guests/freebsd/cap/rsync.rb +1 -11
- data/plugins/guests/freebsd/plugin.rb +1 -1
- data/plugins/guests/funtoo/cap/configure_networks.rb +10 -6
- data/plugins/guests/gentoo/cap/configure_networks.rb +9 -8
- data/plugins/guests/linux/cap/choose_addressable_ip_addr.rb +6 -6
- data/plugins/guests/linux/cap/insert_public_key.rb +18 -8
- data/plugins/guests/linux/cap/mount_nfs.rb +16 -12
- data/plugins/guests/linux/cap/mount_smb_shared_folder.rb +2 -2
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +1 -1
- data/plugins/guests/linux/guest.rb +0 -2
- data/plugins/guests/linux/plugin.rb +1 -1
- data/plugins/guests/mint/guest.rb +0 -2
- data/plugins/guests/mint/plugin.rb +1 -1
- data/plugins/guests/netbsd/cap/configure_networks.rb +8 -8
- data/plugins/guests/nixos/cap/change_host_name.rb +11 -8
- data/plugins/guests/nixos/cap/configure_networks.rb +12 -9
- data/plugins/guests/omnios/cap/change_host_name.rb +17 -5
- data/plugins/guests/omnios/cap/mount_nfs_folder.rb +10 -4
- data/plugins/guests/omnios/cap/rsync.rb +11 -0
- data/plugins/guests/omnios/guest.rb +0 -2
- data/plugins/guests/omnios/plugin.rb +6 -1
- data/plugins/guests/openbsd/cap/configure_networks.rb +8 -6
- data/plugins/guests/photon/cap/change_host_name.rb +17 -4
- data/plugins/guests/photon/cap/configure_networks.rb +14 -26
- data/plugins/guests/photon/guest.rb +1 -1
- data/plugins/guests/photon/plugin.rb +12 -12
- data/plugins/guests/pld/cap/change_host_name.rb +21 -9
- data/plugins/guests/pld/guest.rb +0 -2
- data/plugins/guests/pld/plugin.rb +1 -1
- data/plugins/guests/redhat/cap/change_host_name.rb +30 -96
- data/plugins/guests/redhat/cap/configure_networks.rb +44 -50
- data/plugins/guests/redhat/cap/flavor.rb +3 -4
- data/plugins/guests/redhat/cap/nfs_client.rb +13 -25
- data/plugins/guests/redhat/cap/rsync.rb +6 -6
- data/plugins/guests/redhat/guest.rb +0 -2
- data/plugins/guests/redhat/plugin.rb +1 -10
- data/plugins/guests/slackware/cap/change_host_name.rb +19 -8
- data/plugins/guests/slackware/cap/configure_networks.rb +30 -14
- data/plugins/guests/slackware/guest.rb +0 -2
- data/plugins/guests/slackware/plugin.rb +1 -1
- data/plugins/guests/smartos/config.rb +3 -15
- data/plugins/guests/suse/cap/change_host_name.rb +15 -7
- data/plugins/guests/suse/cap/configure_networks.rb +31 -37
- data/plugins/guests/suse/cap/nfs_client.rb +5 -6
- data/plugins/guests/suse/cap/rsync.rb +1 -3
- data/plugins/guests/suse/guest.rb +0 -2
- data/plugins/guests/suse/plugin.rb +1 -1
- data/plugins/guests/tinycore/cap/mount_nfs.rb +46 -0
- data/plugins/guests/tinycore/plugin.rb +5 -0
- data/plugins/guests/trisquel/guest.rb +9 -0
- data/plugins/guests/trisquel/plugin.rb +15 -0
- data/plugins/guests/ubuntu/cap/change_host_name.rb +42 -41
- data/plugins/guests/ubuntu/guest.rb +0 -2
- data/plugins/guests/ubuntu/plugin.rb +1 -3
- data/plugins/guests/windows/guest_network.rb +1 -1
- data/plugins/hosts/arch/cap/nfs.rb +3 -19
- data/plugins/hosts/darwin/cap/provider_install_virtualbox.rb +4 -5
- data/plugins/hosts/darwin/cap/rdp.rb +34 -6
- data/plugins/hosts/gentoo/cap/nfs.rb +1 -1
- data/plugins/hosts/windows/cap/provider_install_virtualbox.rb +4 -5
- data/plugins/hosts/windows/cap/ps.rb +2 -2
- data/plugins/hosts/windows/cap/rdp.rb +8 -17
- data/plugins/kernel_v2/config/ssh_connect.rb +6 -0
- data/plugins/kernel_v2/config/vm.rb +3 -1
- data/plugins/providers/docker/action.rb +3 -3
- data/plugins/providers/docker/action/create.rb +1 -1
- data/plugins/providers/docker/command/exec.rb +104 -0
- data/plugins/providers/docker/config.rb +9 -1
- data/plugins/providers/docker/errors.rb +4 -0
- data/plugins/providers/docker/plugin.rb +6 -0
- data/plugins/providers/docker/provider.rb +1 -2
- data/plugins/providers/hyperv/action.rb +56 -1
- data/plugins/providers/hyperv/action/import.rb +13 -5
- data/plugins/providers/hyperv/action/snapshot_delete.rb +27 -0
- data/plugins/providers/hyperv/action/snapshot_restore.rb +23 -0
- data/plugins/providers/hyperv/action/snapshot_save.rb +27 -0
- data/plugins/providers/hyperv/cap/snapshot_list.rb +11 -0
- data/plugins/providers/hyperv/config.rb +5 -2
- data/plugins/providers/hyperv/driver.rb +18 -1
- data/plugins/providers/hyperv/plugin.rb +5 -0
- data/plugins/providers/hyperv/scripts/clone_vhd.ps1 +9 -0
- data/plugins/providers/hyperv/scripts/create_snapshot.ps1 +8 -0
- data/plugins/providers/hyperv/scripts/delete_snapshot.ps1 +8 -0
- data/plugins/providers/hyperv/scripts/get_vm_status.ps1 +8 -2
- data/plugins/providers/hyperv/scripts/import_vm.ps1 +5 -1
- data/plugins/providers/hyperv/scripts/list_snapshots.ps1 +12 -0
- data/plugins/providers/hyperv/scripts/restore_snapshot.ps1 +8 -0
- data/plugins/providers/virtualbox/action.rb +9 -4
- data/plugins/providers/virtualbox/action/import_master.rb +81 -75
- data/plugins/providers/virtualbox/action/package.rb +1 -29
- data/plugins/providers/virtualbox/action/package_setup_files.rb +51 -0
- data/plugins/providers/virtualbox/action/package_setup_folders.rb +38 -0
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +23 -1
- data/plugins/providers/virtualbox/action/setup_package_files.rb +9 -43
- data/plugins/providers/virtualbox/driver/version_4_1.rb +104 -6
- data/plugins/providers/virtualbox/driver/version_4_2.rb +6 -5
- data/plugins/providers/virtualbox/driver/version_4_3.rb +6 -5
- data/plugins/providers/virtualbox/driver/version_5_0.rb +6 -5
- data/plugins/provisioners/ansible/cap/guest/arch/ansible_install.rb +8 -3
- data/plugins/provisioners/ansible/cap/guest/debian/ansible_install.rb +26 -4
- data/plugins/provisioners/ansible/cap/guest/facts.rb +24 -0
- data/plugins/provisioners/ansible/cap/guest/fedora/ansible_install.rb +16 -6
- data/plugins/provisioners/ansible/cap/guest/freebsd/ansible_install.rb +7 -2
- data/plugins/provisioners/ansible/cap/guest/pip/pip.rb +28 -0
- data/plugins/provisioners/ansible/cap/guest/posix/ansible_installed.rb +1 -1
- data/plugins/provisioners/ansible/cap/guest/redhat/ansible_install.rb +24 -7
- data/plugins/provisioners/ansible/cap/guest/suse/ansible_install.rb +6 -2
- data/plugins/provisioners/ansible/cap/guest/ubuntu/ansible_install.rb +17 -6
- data/plugins/provisioners/ansible/config/base.rb +15 -23
- data/plugins/provisioners/ansible/config/guest.rb +9 -22
- data/plugins/provisioners/ansible/config/host.rb +9 -19
- data/plugins/provisioners/ansible/errors.rb +4 -0
- data/plugins/provisioners/ansible/helpers.rb +4 -24
- data/plugins/provisioners/ansible/provisioner/base.rb +58 -10
- data/plugins/provisioners/ansible/provisioner/guest.rb +55 -22
- data/plugins/provisioners/ansible/provisioner/host.rb +50 -9
- data/plugins/provisioners/chef/cap/linux/chef_installed.rb +2 -2
- data/plugins/provisioners/chef/cap/omnios/chef_installed.rb +3 -3
- data/plugins/provisioners/chef/cap/redhat/chef_install.rb +7 -11
- data/plugins/provisioners/chef/cap/suse/chef_install.rb +27 -0
- data/plugins/provisioners/chef/cap/windows/chef_installed.rb +1 -1
- data/plugins/provisioners/chef/command_builder.rb +1 -0
- data/plugins/provisioners/chef/config/base.rb +5 -6
- data/plugins/provisioners/chef/config/chef_solo.rb +6 -0
- data/plugins/provisioners/chef/installer.rb +2 -2
- data/plugins/provisioners/chef/omnibus.rb +1 -1
- data/plugins/provisioners/chef/plugin.rb +5 -0
- data/plugins/provisioners/chef/provisioner/base.rb +52 -56
- data/plugins/provisioners/chef/provisioner/chef_apply.rb +9 -10
- data/plugins/provisioners/chef/provisioner/chef_client.rb +1 -1
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +1 -0
- data/plugins/provisioners/docker/client.rb +22 -4
- data/plugins/provisioners/puppet/provisioner/puppet.rb +3 -3
- data/plugins/provisioners/salt/provisioner.rb +19 -24
- data/plugins/pushes/ftp/adapter.rb +18 -1
- data/plugins/pushes/heroku/locales/en.yml +1 -1
- data/plugins/synced_folders/rsync/helper.rb +1 -1
- data/templates/commands/init/Vagrantfile.erb +6 -3
- data/templates/commands/init/Vagrantfile.min.erb +1 -1
- data/templates/commands/ssh_config/config.erb +5 -1
- data/templates/guests/debian/network_dhcp.erb +2 -2
- data/templates/guests/debian/network_static.erb +2 -2
- data/templates/guests/debian/network_static6.erb +2 -2
- data/templates/guests/fedora/network_static6.erb +9 -0
- data/templates/guests/freebsd/network_dhcp.erb +2 -1
- data/templates/guests/freebsd/network_static.erb +1 -1
- data/templates/guests/slackware/network_dhcp.erb +8 -20
- data/templates/guests/slackware/network_static.erb +10 -22
- data/templates/guests/suse/network_dhcp.erb +1 -1
- data/templates/guests/suse/network_static.erb +3 -3
- data/templates/locales/en.yml +35 -18
- data/templates/locales/providers_docker.yml +8 -0
- data/templates/provisioners/chef_solo/solo.erb +7 -7
- data/test/support/isolated_environment.rb +1 -1
- data/test/unit/base.rb +9 -1
- data/test/unit/plugins/commands/box/command/update_test.rb +7 -1
- data/test/unit/plugins/commands/init/command_test.rb +86 -0
- data/test/unit/plugins/commands/login/client_test.rb +7 -0
- data/test/unit/plugins/commands/ssh_config/command_test.rb +2 -14
- data/test/unit/plugins/communicators/winrm/shell_test.rb +40 -16
- data/test/unit/plugins/guests/amazon/cap/flavor_test.rb +19 -0
- data/test/unit/plugins/guests/arch/cap/change_host_name_test.rb +38 -0
- data/test/unit/plugins/guests/arch/cap/configure_networks_test.rb +55 -0
- data/test/unit/plugins/guests/atomic/cap/change_host_name_test.rb +38 -0
- data/test/unit/plugins/guests/atomic/cap/docker_test.rb +28 -0
- data/test/unit/plugins/guests/coreos/cap/change_host_name_test.rb +37 -0
- data/test/unit/plugins/guests/coreos/cap/configure_networks_test.rb +59 -0
- data/test/unit/plugins/guests/coreos/cap/docker_test.rb +28 -0
- data/test/unit/plugins/guests/darwin/cap/change_host_name_test.rb +40 -0
- data/test/unit/plugins/guests/darwin/cap/choose_addressable_ip_addr_test.rb +36 -0
- data/test/unit/plugins/guests/debian/cap/change_host_name_test.rb +23 -16
- data/test/unit/plugins/guests/debian/cap/configure_networks_test.rb +54 -0
- data/test/unit/plugins/guests/debian/cap/nfs_client_test.rb +30 -0
- data/test/unit/plugins/guests/debian/cap/rsync_test.rb +38 -0
- data/test/unit/plugins/guests/debian/cap/smb_test.rb +38 -0
- data/test/unit/plugins/guests/freebsd/cap/change_host_name_test.rb +40 -0
- data/test/unit/plugins/guests/freebsd/cap/configure_networks_test.rb +51 -0
- data/test/unit/plugins/guests/freebsd/cap/halt_test.rb +35 -0
- data/test/unit/plugins/guests/freebsd/cap/insert_public_key_test.rb +31 -0
- data/test/unit/plugins/guests/freebsd/cap/mount_nfs_folder_test.rb +53 -0
- data/test/unit/plugins/guests/freebsd/cap/rsync_test.rb +46 -0
- data/test/unit/plugins/guests/linux/cap/choose_addressable_ip_addr_test.rb +38 -0
- data/test/unit/plugins/guests/linux/cap/halt_test.rb +36 -0
- data/test/unit/plugins/guests/linux/cap/insert_public_key_test.rb +32 -0
- data/test/unit/plugins/guests/linux/cap/mount_nfs_test.rb +78 -0
- data/test/unit/plugins/guests/linux/cap/mount_shared_folder_test.rb +1 -1
- data/test/unit/plugins/guests/linux/cap/nfs_client_test.rb +29 -0
- data/test/unit/plugins/guests/linux/cap/port_test.rb +30 -0
- data/test/unit/plugins/guests/omnios/cap/change_host_name_test.rb +41 -0
- data/test/unit/plugins/guests/omnios/cap/mount_nfs_folder_test.rb +47 -0
- data/test/unit/plugins/guests/omnios/cap/rsync_test.rb +29 -0
- data/test/unit/plugins/guests/photon/cap/change_host_name_test.rb +26 -18
- data/test/unit/plugins/guests/photon/cap/configure_networks_test.rb +37 -26
- data/test/unit/plugins/guests/photon/cap/docker_test.rb +17 -12
- data/test/unit/plugins/guests/pld/cap/change_host_name_test.rb +39 -0
- data/test/unit/plugins/guests/pld/cap/flavor_test.rb +21 -0
- data/test/unit/plugins/guests/pld/cap/network_scripts_dir_test.rb +21 -0
- data/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb +23 -51
- data/test/unit/plugins/guests/redhat/cap/configure_networks_test.rb +80 -0
- data/test/unit/plugins/guests/redhat/cap/flavor_test.rb +40 -0
- data/test/unit/plugins/guests/redhat/cap/network_scripts_dir_test.rb +21 -0
- data/test/unit/plugins/guests/redhat/cap/nfs_client_test.rb +30 -0
- data/test/unit/plugins/guests/redhat/cap/rsync_test.rb +29 -0
- data/test/unit/plugins/guests/slackware/cap/change_host_name_test.rb +40 -0
- data/test/unit/plugins/guests/slackware/cap/configure_networks_test.rb +48 -0
- data/test/unit/plugins/guests/smartos/cap/change_host_name_test.rb +2 -2
- data/test/unit/plugins/guests/smartos/cap/configure_networks_test.rb +1 -1
- data/test/unit/plugins/guests/smartos/cap/halt_test.rb +1 -1
- data/test/unit/plugins/guests/smartos/cap/mount_nfs_test.rb +1 -1
- data/test/unit/plugins/guests/smartos/cap/rsync_test.rb +1 -1
- data/test/unit/plugins/guests/suse/cap/change_host_name_test.rb +40 -0
- data/test/unit/plugins/guests/suse/cap/configure_networks_test.rb +60 -0
- data/test/unit/plugins/guests/suse/cap/halt_test.rb +36 -0
- data/test/unit/plugins/guests/suse/cap/network_scripts_dir_test.rb +19 -0
- data/test/unit/plugins/guests/suse/cap/nfs_client_test.rb +31 -0
- data/test/unit/plugins/guests/suse/cap/rsync_test.rb +38 -0
- data/test/unit/plugins/guests/tinycore/cap/change_host_name_test.rb +1 -1
- data/test/unit/plugins/guests/ubuntu/cap/change_host_name_test.rb +24 -16
- data/test/unit/plugins/guests/windows/cap/change_host_name_test.rb +1 -1
- data/test/unit/plugins/guests/windows/cap/halt_test.rb +1 -1
- data/test/unit/plugins/guests/windows/cap/mount_shared_folder_test.rb +1 -1
- data/test/unit/plugins/guests/windows/cap/reboot_test.rb +1 -1
- data/test/unit/plugins/guests/windows/cap/rsync_test.rb +1 -1
- data/test/unit/plugins/hosts/darwin/cap/rdp_test.rb +36 -0
- data/test/unit/plugins/kernel_v2/config/vm_test.rb +27 -1
- data/test/unit/plugins/providers/docker/action/create_test.rb +55 -0
- data/test/unit/plugins/providers/docker/command/exec_test.rb +44 -0
- data/test/unit/plugins/providers/docker/config_test.rb +7 -2
- data/test/unit/plugins/providers/virtualbox/action/prepare_nfs_settings_test.rb +18 -0
- data/test/unit/plugins/provisioners/ansible/config/guest_test.rb +83 -0
- data/test/unit/plugins/provisioners/ansible/config/host_test.rb +98 -0
- data/test/unit/plugins/provisioners/ansible/config/shared.rb +107 -0
- data/test/unit/plugins/provisioners/ansible/provisioner_test.rb +82 -10
- data/test/unit/plugins/provisioners/chef/config/base_test.rb +2 -2
- data/test/unit/plugins/provisioners/chef/provisioner/base_test.rb +29 -0
- data/test/unit/plugins/pushes/atlas/push_test.rb +12 -8
- data/test/unit/plugins/pushes/ftp/adapter_test.rb +1 -1
- data/test/unit/plugins/pushes/ftp/push_test.rb +5 -4
- data/test/unit/support/isolated_environment.rb +4 -4
- data/test/unit/support/shared/base_context.rb +11 -3
- data/test/unit/templates/guests/arch/network_dhcp_test.rb +2 -2
- data/test/unit/templates/guests/arch/network_static_test.rb +4 -4
- data/test/unit/templates/guests/debian/network_dhcp_test.rb +6 -6
- data/test/unit/templates/guests/debian/network_static_test.rb +6 -6
- data/test/unit/templates/guests/fedora/network_static6_test.rb +25 -0
- data/test/unit/templates/guests/freebsd/network_dhcp_test.rb +5 -2
- data/test/unit/templates/guests/freebsd/network_static_test.rb +13 -17
- data/test/unit/templates/guests/suse/network_dhcp_test.rb +2 -2
- data/test/unit/templates/guests/suse/network_static_test.rb +4 -4
- data/test/unit/vagrant/action/builtin/box_add_test.rb +33 -31
- data/test/unit/vagrant/action/builtin/lock_test.rb +5 -2
- data/test/unit/vagrant/action/builtin/mixin_synced_folders_test.rb +6 -2
- data/test/unit/vagrant/action/builtin/synced_folder_cleanup_test.rb +5 -1
- data/test/unit/vagrant/action/builtin/synced_folders_test.rb +5 -1
- data/test/unit/vagrant/box_collection_test.rb +19 -7
- data/test/unit/vagrant/box_test.rb +13 -2
- data/test/unit/vagrant/config_test.rb +1 -1
- data/test/unit/vagrant/environment_test.rb +16 -12
- data/test/unit/vagrant/machine_index_test.rb +5 -1
- data/test/unit/vagrant/machine_test.rb +5 -1
- data/test/unit/vagrant/plugin/manager_test.rb +1 -5
- data/test/unit/vagrant/plugin/state_file_test.rb +1 -5
- data/test/unit/vagrant/util/platform_test.rb +5 -0
- data/test/unit/vagrant/util/safe_chdir_test.rb +11 -5
- data/test/unit/vagrant/vagrantfile_test.rb +5 -1
- data/vagrant.gemspec +8 -3
- data/version.txt +1 -1
- metadata +3657 -12
- data/CONTRIBUTING.md +0 -41
- data/test/unit/plugins/guests/support/shared/debian_like_host_name_examples.rb +0 -106
- data/test/unit/plugins/guests/support/shared/redhat_like_host_name_examples.rb +0 -252
- data/test/unit/plugins/provisioners/ansible/config_test.rb +0 -224
@@ -10,13 +10,17 @@ describe VagrantPlugins::DockerProvider::Config do
|
|
10
10
|
let(:machine) { double("machine") }
|
11
11
|
|
12
12
|
let(:build_dir) do
|
13
|
-
|
14
|
-
|
13
|
+
Dir.mktmpdir("vagrant-test-docker-provider-build-dir").tap do |dir|
|
14
|
+
File.open(File.join(dir, "Dockerfile"), "wb+") do |f|
|
15
15
|
f.write("Hello")
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
after do
|
21
|
+
FileUtils.rm_rf(build_dir)
|
22
|
+
end
|
23
|
+
|
20
24
|
def assert_invalid
|
21
25
|
errors = subject.validate(machine)
|
22
26
|
if !errors.values.any? { |v| !v.empty? }
|
@@ -60,6 +64,7 @@ describe VagrantPlugins::DockerProvider::Config do
|
|
60
64
|
before do
|
61
65
|
# By default lets be Linux for validations
|
62
66
|
Vagrant::Util::Platform.stub(linux: true)
|
67
|
+
Vagrant::Util::Platform.stub(linux?: true)
|
63
68
|
end
|
64
69
|
|
65
70
|
it "should be invalid if both build dir and image are set" do
|
@@ -116,5 +116,23 @@ describe VagrantPlugins::ProviderVirtualBox::Action::PrepareNFSSettings do
|
|
116
116
|
expect(env[:nfs_host_ip]).to eq("1.2.3.4")
|
117
117
|
expect(env[:nfs_machine_ip]).to eq(["11.12.13.14"])
|
118
118
|
end
|
119
|
+
|
120
|
+
it "allows statically configured guest IPs to co-exist with dynamic host only IPs for NFS" do
|
121
|
+
env[:machine].config.vm.network :private_network, ip: "11.12.13.14"
|
122
|
+
|
123
|
+
subject.call(env)
|
124
|
+
|
125
|
+
expect(env[:nfs_host_ip]).to eq("1.2.3.4")
|
126
|
+
expect(env[:nfs_machine_ip]).to eq(["11.12.13.14", "2.3.4.5"])
|
127
|
+
end
|
128
|
+
|
129
|
+
it "allows the use of scoped hash overrides as options" do
|
130
|
+
env[:machine].config.vm.network :private_network, virtualbox__ip: "11.12.13.14"
|
131
|
+
|
132
|
+
subject.call(env)
|
133
|
+
|
134
|
+
expect(env[:nfs_host_ip]).to eq("1.2.3.4")
|
135
|
+
expect(env[:nfs_machine_ip]).to eq(["11.12.13.14", "2.3.4.5"])
|
136
|
+
end
|
119
137
|
end
|
120
138
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require_relative "../../../../base"
|
2
|
+
require_relative "../../support/shared/config"
|
3
|
+
require_relative "shared"
|
4
|
+
|
5
|
+
require Vagrant.source_root.join("plugins/provisioners/ansible/config/guest")
|
6
|
+
|
7
|
+
describe VagrantPlugins::Ansible::Config::Guest do
|
8
|
+
include_context "unit"
|
9
|
+
|
10
|
+
subject { described_class.new }
|
11
|
+
|
12
|
+
# FIXME: machine.ui.warn stub is not working as expected...
|
13
|
+
let(:machine) { double("machine", env: Vagrant::Environment.new) }
|
14
|
+
|
15
|
+
let(:communicator) { double("communicator") }
|
16
|
+
let(:existing_file) { "this/path/is/a/stub" }
|
17
|
+
|
18
|
+
it "supports a list of options" do
|
19
|
+
supported_options = %w( extra_vars
|
20
|
+
galaxy_command
|
21
|
+
galaxy_role_file
|
22
|
+
galaxy_roles_path
|
23
|
+
groups
|
24
|
+
host_vars
|
25
|
+
install
|
26
|
+
install_mode
|
27
|
+
inventory_path
|
28
|
+
limit
|
29
|
+
playbook
|
30
|
+
provisioning_path
|
31
|
+
raw_arguments
|
32
|
+
skip_tags
|
33
|
+
start_at_task
|
34
|
+
sudo
|
35
|
+
sudo_user
|
36
|
+
tags
|
37
|
+
tmp_path
|
38
|
+
vault_password_file
|
39
|
+
verbose
|
40
|
+
version )
|
41
|
+
|
42
|
+
expect(get_provisioner_option_names(described_class)).to eql(supported_options)
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "default options handling" do
|
46
|
+
it_behaves_like "options shared by both Ansible provisioners"
|
47
|
+
|
48
|
+
it "assigns default values to unset guest-specific options" do
|
49
|
+
subject.finalize!
|
50
|
+
|
51
|
+
expect(subject.install).to be_true
|
52
|
+
expect(subject.install_mode).to eql(:default)
|
53
|
+
expect(subject.provisioning_path).to eql("/vagrant")
|
54
|
+
expect(subject.tmp_path).to eql("/tmp/vagrant-ansible")
|
55
|
+
expect(subject.version).to be_empty
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#validate" do
|
60
|
+
before do
|
61
|
+
subject.playbook = existing_file
|
62
|
+
end
|
63
|
+
|
64
|
+
it_behaves_like "an Ansible provisioner", "/vagrant", "local"
|
65
|
+
|
66
|
+
it "falls back to :default install_mode for any invalid setting" do
|
67
|
+
subject.install_mode = "from_source"
|
68
|
+
subject.finalize!
|
69
|
+
|
70
|
+
result = subject.validate(machine)
|
71
|
+
expect(subject.install_mode).to eql(:default)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "supports :pip install_mode" do
|
75
|
+
subject.install_mode = "pip"
|
76
|
+
subject.finalize!
|
77
|
+
|
78
|
+
result = subject.validate(machine)
|
79
|
+
expect(subject.install_mode).to eql(:pip)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require_relative "../../../../base"
|
2
|
+
require_relative "../../support/shared/config"
|
3
|
+
require_relative "shared"
|
4
|
+
|
5
|
+
require Vagrant.source_root.join("plugins/provisioners/ansible/config/host")
|
6
|
+
|
7
|
+
describe VagrantPlugins::Ansible::Config::Host, :skip_windows => true do
|
8
|
+
include_context "unit"
|
9
|
+
|
10
|
+
subject { described_class.new }
|
11
|
+
|
12
|
+
let(:machine) { double("machine", env: Vagrant::Environment.new) }
|
13
|
+
let(:existing_file) { File.expand_path(__FILE__) }
|
14
|
+
|
15
|
+
it "supports a list of options" do
|
16
|
+
supported_options = %w( ask_sudo_pass
|
17
|
+
ask_vault_pass
|
18
|
+
extra_vars
|
19
|
+
force_remote_user
|
20
|
+
galaxy_command
|
21
|
+
galaxy_role_file
|
22
|
+
galaxy_roles_path
|
23
|
+
groups
|
24
|
+
host_key_checking
|
25
|
+
host_vars
|
26
|
+
inventory_path
|
27
|
+
limit
|
28
|
+
playbook
|
29
|
+
raw_arguments
|
30
|
+
raw_ssh_args
|
31
|
+
skip_tags
|
32
|
+
start_at_task
|
33
|
+
sudo
|
34
|
+
sudo_user
|
35
|
+
tags
|
36
|
+
vault_password_file
|
37
|
+
verbose )
|
38
|
+
|
39
|
+
expect(get_provisioner_option_names(described_class)).to eql(supported_options)
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "default options handling" do
|
43
|
+
it_behaves_like "options shared by both Ansible provisioners"
|
44
|
+
|
45
|
+
it "assigns default values to unset host-specific options" do
|
46
|
+
subject.finalize!
|
47
|
+
|
48
|
+
expect(subject.ask_sudo_pass).to be_false
|
49
|
+
expect(subject.ask_vault_pass).to be_false
|
50
|
+
expect(subject.force_remote_user).to be_true
|
51
|
+
expect(subject.host_key_checking).to be_false
|
52
|
+
expect(subject.raw_ssh_args).to be_nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "force_remote_user option" do
|
57
|
+
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :force_remote_user, true
|
58
|
+
end
|
59
|
+
describe "host_key_checking option" do
|
60
|
+
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :host_key_checking, false
|
61
|
+
end
|
62
|
+
describe "ask_sudo_pass option" do
|
63
|
+
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :ask_sudo_pass, false
|
64
|
+
end
|
65
|
+
describe "ask_vault_pass option" do
|
66
|
+
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :ask_sudo_pass, false
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "#validate" do
|
70
|
+
before do
|
71
|
+
subject.playbook = existing_file
|
72
|
+
end
|
73
|
+
|
74
|
+
it_behaves_like "an Ansible provisioner", "", "remote"
|
75
|
+
|
76
|
+
it "returns an error if the raw_ssh_args is of the wrong data type" do
|
77
|
+
subject.raw_ssh_args = { arg1: 1, arg2: "foo" }
|
78
|
+
subject.finalize!
|
79
|
+
|
80
|
+
result = subject.validate(machine)
|
81
|
+
expect(result["ansible remote provisioner"]).to eql([
|
82
|
+
I18n.t("vagrant.provisioners.ansible.errors.raw_ssh_args_invalid",
|
83
|
+
type: subject.raw_ssh_args.class.to_s,
|
84
|
+
value: subject.raw_ssh_args.to_s)
|
85
|
+
])
|
86
|
+
end
|
87
|
+
|
88
|
+
it "converts a raw_ssh_args option defined as a String into an Array" do
|
89
|
+
subject.raw_arguments = "-o ControlMaster=no"
|
90
|
+
subject.finalize!
|
91
|
+
|
92
|
+
result = subject.validate(machine)
|
93
|
+
expect(subject.raw_arguments).to eql(["-o ControlMaster=no"])
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
shared_examples_for 'options shared by both Ansible provisioners' do
|
2
|
+
|
3
|
+
it "assigns default values to unset common options" do
|
4
|
+
subject.finalize!
|
5
|
+
|
6
|
+
expect(subject.extra_vars).to be_nil
|
7
|
+
expect(subject.galaxy_command).to eql("ansible-galaxy install --role-file=%{role_file} --roles-path=%{roles_path} --force")
|
8
|
+
expect(subject.galaxy_role_file).to be_nil
|
9
|
+
expect(subject.galaxy_roles_path).to be_nil
|
10
|
+
expect(subject.groups).to eq({})
|
11
|
+
expect(subject.host_vars).to eq({})
|
12
|
+
expect(subject.inventory_path).to be_nil
|
13
|
+
expect(subject.limit).to be_nil
|
14
|
+
expect(subject.playbook).to be_nil
|
15
|
+
expect(subject.raw_arguments).to be_nil
|
16
|
+
expect(subject.skip_tags).to be_nil
|
17
|
+
expect(subject.start_at_task).to be_nil
|
18
|
+
expect(subject.sudo).to be_false
|
19
|
+
expect(subject.sudo_user).to be_nil
|
20
|
+
expect(subject.tags).to be_nil
|
21
|
+
expect(subject.vault_password_file).to be_nil
|
22
|
+
expect(subject.verbose).to be_false
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
shared_examples_for 'an Ansible provisioner' do | path_prefix, ansible_setup |
|
28
|
+
|
29
|
+
provisioner_label = "ansible #{ansible_setup} provisioner"
|
30
|
+
provisioner_system = ansible_setup == "local" ? "guest" : "host"
|
31
|
+
|
32
|
+
it "returns an error if the playbook option is undefined" do
|
33
|
+
subject.playbook = nil
|
34
|
+
subject.finalize!
|
35
|
+
|
36
|
+
result = subject.validate(machine)
|
37
|
+
expect(result[provisioner_label]).to eql([
|
38
|
+
I18n.t("vagrant.provisioners.ansible.errors.no_playbook")
|
39
|
+
])
|
40
|
+
end
|
41
|
+
|
42
|
+
it "passes if the extra_vars option is a hash" do
|
43
|
+
subject.extra_vars = { var1: 1, var2: "foo" }
|
44
|
+
subject.finalize!
|
45
|
+
|
46
|
+
result = subject.validate(machine)
|
47
|
+
expect(result[provisioner_label]).to eql([])
|
48
|
+
end
|
49
|
+
|
50
|
+
it "returns an error if the extra_vars option is of wrong data type" do
|
51
|
+
subject.extra_vars = ["var1", 3, "var2", 5]
|
52
|
+
subject.finalize!
|
53
|
+
|
54
|
+
result = subject.validate(machine)
|
55
|
+
expect(result[provisioner_label]).to eql([
|
56
|
+
I18n.t("vagrant.provisioners.ansible.errors.extra_vars_invalid",
|
57
|
+
type: subject.extra_vars.class.to_s,
|
58
|
+
value: subject.extra_vars.to_s)
|
59
|
+
])
|
60
|
+
end
|
61
|
+
|
62
|
+
it "converts a raw_arguments option defined as a String into an Array" do
|
63
|
+
subject.raw_arguments = "--foo=bar"
|
64
|
+
subject.finalize!
|
65
|
+
|
66
|
+
result = subject.validate(machine)
|
67
|
+
expect(subject.raw_arguments).to eql(%w(--foo=bar))
|
68
|
+
end
|
69
|
+
|
70
|
+
it "returns an error if the raw_arguments is of the wrong data type" do
|
71
|
+
subject.raw_arguments = { arg1: 1, arg2: "foo" }
|
72
|
+
subject.finalize!
|
73
|
+
|
74
|
+
result = subject.validate(machine)
|
75
|
+
expect(result[provisioner_label]).to eql([
|
76
|
+
I18n.t("vagrant.provisioners.ansible.errors.raw_arguments_invalid",
|
77
|
+
type: subject.raw_arguments.class.to_s,
|
78
|
+
value: subject.raw_arguments.to_s)
|
79
|
+
])
|
80
|
+
end
|
81
|
+
|
82
|
+
it "it collects and returns all detected errors" do
|
83
|
+
subject.playbook = nil
|
84
|
+
subject.extra_vars = ["var1", 3, "var2", 5]
|
85
|
+
subject.raw_arguments = { arg1: 1, arg2: "foo" }
|
86
|
+
subject.finalize!
|
87
|
+
|
88
|
+
result = subject.validate(machine)
|
89
|
+
|
90
|
+
expect(result[provisioner_label].size).to eql(3)
|
91
|
+
expect(result[provisioner_label]).to include(
|
92
|
+
I18n.t("vagrant.provisioners.ansible.errors.no_playbook"))
|
93
|
+
expect(result[provisioner_label]).to include(
|
94
|
+
I18n.t("vagrant.provisioners.ansible.errors.extra_vars_invalid",
|
95
|
+
type: subject.extra_vars.class.to_s,
|
96
|
+
value: subject.extra_vars.to_s))
|
97
|
+
expect(result[provisioner_label]).to include(
|
98
|
+
I18n.t("vagrant.provisioners.ansible.errors.raw_arguments_invalid",
|
99
|
+
type: subject.raw_arguments.class.to_s,
|
100
|
+
value: subject.raw_arguments.to_s))
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "sudo option" do
|
104
|
+
it_behaves_like "any VagrantConfigProvisioner strict boolean attribute", :sudo, false
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
@@ -59,6 +59,8 @@ VF
|
|
59
59
|
stubbed_ui.stub(detail: "")
|
60
60
|
machine.env.stub(ui: stubbed_ui)
|
61
61
|
|
62
|
+
subject.stub(:check_path)
|
63
|
+
|
62
64
|
config.playbook = 'playbook.yml'
|
63
65
|
end
|
64
66
|
|
@@ -203,6 +205,43 @@ VF
|
|
203
205
|
end
|
204
206
|
end
|
205
207
|
|
208
|
+
describe 'checking existence of Ansible configuration files' do
|
209
|
+
|
210
|
+
describe 'when the playbook file does not exist' do
|
211
|
+
it "raises an error", skip_before: true, skip_after: true do
|
212
|
+
|
213
|
+
subject.stub(:check_path).and_raise(VagrantPlugins::Ansible::Errors::AnsibleError,
|
214
|
+
_key: :config_file_not_found,
|
215
|
+
config_option: "playbook",
|
216
|
+
path: "/home/wip/test/invalid_path.yml",
|
217
|
+
system: "host")
|
218
|
+
|
219
|
+
config.playbook = "/home/wip/test/invalid_path.yml"
|
220
|
+
config.finalize!
|
221
|
+
|
222
|
+
expect {subject.provision}.to raise_error(VagrantPlugins::Ansible::Errors::AnsibleError,
|
223
|
+
"`playbook` does not exist on the host: /home/wip/test/invalid_path.yml")
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
describe 'when the inventory path does not exist' do
|
228
|
+
it "raises an error"
|
229
|
+
end
|
230
|
+
|
231
|
+
describe 'when the extra_vars file does not exist' do
|
232
|
+
it "raises an error"
|
233
|
+
end
|
234
|
+
|
235
|
+
describe 'when the galaxy_role_file does not exist' do
|
236
|
+
it "raises an error"
|
237
|
+
end
|
238
|
+
|
239
|
+
describe 'when the vault_password_file does not exist' do
|
240
|
+
it "raises an error"
|
241
|
+
end
|
242
|
+
|
243
|
+
end
|
244
|
+
|
206
245
|
describe 'when ansible-playbook fails' do
|
207
246
|
it "raises an error", skip_before: true, skip_after: true do
|
208
247
|
config.finalize!
|
@@ -639,7 +678,7 @@ VF
|
|
639
678
|
|
640
679
|
it "shows the ansible-playbook command and set verbosity to '-#{verbose_option}' level" do
|
641
680
|
expect(machine.env.ui).to receive(:detail).with { |full_command|
|
642
|
-
expect(full_command).to eq("PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit
|
681
|
+
expect(full_command).to eq("PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit=\"machine1\" --inventory-file=#{generated_inventory_dir} -#{verbose_option} playbook.yml")
|
643
682
|
}
|
644
683
|
end
|
645
684
|
end
|
@@ -654,7 +693,7 @@ VF
|
|
654
693
|
|
655
694
|
it "shows the ansible-playbook command and set verbosity to '-#{verbose_option}' level" do
|
656
695
|
expect(machine.env.ui).to receive(:detail).with { |full_command|
|
657
|
-
expect(full_command).to eq("PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit
|
696
|
+
expect(full_command).to eq("PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit=\"machine1\" --inventory-file=#{generated_inventory_dir} -#{verbose_option} playbook.yml")
|
658
697
|
}
|
659
698
|
end
|
660
699
|
end
|
@@ -670,7 +709,7 @@ VF
|
|
670
709
|
|
671
710
|
it "shows the ansible-playbook command and set verbosity to '-v' level" do
|
672
711
|
expect(machine.env.ui).to receive(:detail).with { |full_command|
|
673
|
-
expect(full_command).to eq("PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit
|
712
|
+
expect(full_command).to eq("PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit=\"machine1\" --inventory-file=#{generated_inventory_dir} -v playbook.yml")
|
674
713
|
}
|
675
714
|
end
|
676
715
|
end
|
@@ -732,6 +771,38 @@ VF
|
|
732
771
|
end
|
733
772
|
end
|
734
773
|
|
774
|
+
context "with galaxy_roles_path option defined" do
|
775
|
+
before do
|
776
|
+
config.galaxy_roles_path = "my-roles"
|
777
|
+
end
|
778
|
+
|
779
|
+
it "sets ANSIBLE_ROLES_PATH with corresponding absolute path" do
|
780
|
+
expect(Vagrant::Util::Subprocess).to receive(:execute).with { |*args|
|
781
|
+
cmd_opts = args.last
|
782
|
+
expect(cmd_opts[:env]).to include("ANSIBLE_ROLES_PATH")
|
783
|
+
expect(cmd_opts[:env]['ANSIBLE_ROLES_PATH']).to eql(File.join(machine.env.root_path, "my-roles"))
|
784
|
+
}
|
785
|
+
end
|
786
|
+
end
|
787
|
+
|
788
|
+
context "with extra_vars option defined" do
|
789
|
+
describe "with a hash value" do
|
790
|
+
before do
|
791
|
+
config.extra_vars = { var1: %Q(string with 'apostrophes', \\, " and =), var2: { x: 42 } }
|
792
|
+
end
|
793
|
+
|
794
|
+
it_should_set_optional_arguments({ "extra_vars" => "--extra-vars={\"var1\":\"string with 'apostrophes', \\\\, \\\" and =\",\"var2\":{\"x\":42}}" })
|
795
|
+
end
|
796
|
+
|
797
|
+
describe "with a string value referring to file path (with the '@' prefix)" do
|
798
|
+
before do
|
799
|
+
config.extra_vars = "@#{existing_file}"
|
800
|
+
end
|
801
|
+
|
802
|
+
it_should_set_optional_arguments({ "extra_vars" => "--extra-vars=@#{File.expand_path(__FILE__)}" })
|
803
|
+
end
|
804
|
+
end
|
805
|
+
|
735
806
|
# The Vagrant Ansible provisioner does not validate the coherency of
|
736
807
|
# argument combinations, and let ansible-playbook complain.
|
737
808
|
describe "with a maximum of options" do
|
@@ -741,7 +812,8 @@ VF
|
|
741
812
|
ssh_info[:private_key_path] = ['/my/key1', '/my/key2']
|
742
813
|
|
743
814
|
# command line arguments
|
744
|
-
config.
|
815
|
+
config.galaxy_roles_path = "/up/to the stars"
|
816
|
+
config.extra_vars = { var1: %Q(string with 'apostrophes', \\, " and =), var2: { x: 42 } }
|
745
817
|
config.sudo = true
|
746
818
|
config.sudo_user = 'deployer'
|
747
819
|
config.verbose = "vvv"
|
@@ -751,17 +823,17 @@ VF
|
|
751
823
|
config.tags = %w(db www)
|
752
824
|
config.skip_tags = %w(foo bar)
|
753
825
|
config.limit = 'machine*:&vagrant:!that_one'
|
754
|
-
config.start_at_task = '
|
755
|
-
config.raw_arguments = ["--why-not", "--su-user=foot", "--ask-su-pass", "--limit=all", "--private-key=./myself.key"]
|
826
|
+
config.start_at_task = "joe's awesome task"
|
827
|
+
config.raw_arguments = ["--why-not", "--su-user=foot", "--ask-su-pass", "--limit=all", "--private-key=./myself.key", "--extra-vars='{\"var3\":\"foo\"}'"]
|
756
828
|
|
757
829
|
# environment variables
|
758
830
|
config.host_key_checking = true
|
759
831
|
config.raw_ssh_args = ['-o ControlMaster=no']
|
760
832
|
end
|
761
833
|
|
762
|
-
it_should_set_arguments_and_environment_variables
|
834
|
+
it_should_set_arguments_and_environment_variables 21, 5, true
|
763
835
|
it_should_explicitly_enable_ansible_ssh_control_persist_defaults
|
764
|
-
it_should_set_optional_arguments({ "extra_vars" => "--extra-vars
|
836
|
+
it_should_set_optional_arguments({ "extra_vars" => "--extra-vars={\"var1\":\"string with 'apostrophes', \\\\, \\\" and =\",\"var2\":{\"x\":42}}",
|
765
837
|
"sudo" => "--sudo",
|
766
838
|
"sudo_user" => "--sudo-user=deployer",
|
767
839
|
"verbose" => "-vvv",
|
@@ -771,7 +843,7 @@ VF
|
|
771
843
|
"tags" => "--tags=db,www",
|
772
844
|
"skip_tags" => "--skip-tags=foo,bar",
|
773
845
|
"limit" => "--limit=machine*:&vagrant:!that_one",
|
774
|
-
"start_at_task" => "--start-at-task=
|
846
|
+
"start_at_task" => "--start-at-task=joe's awesome task",
|
775
847
|
})
|
776
848
|
|
777
849
|
it "also includes given raw arguments" do
|
@@ -786,7 +858,7 @@ VF
|
|
786
858
|
|
787
859
|
it "shows the ansible-playbook command, with additional quotes when required" do
|
788
860
|
expect(machine.env.ui).to receive(:detail).with { |full_command|
|
789
|
-
expect(full_command).to eq(
|
861
|
+
expect(full_command).to eq(%Q(PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_ROLES_PATH='/up/to the stars' ANSIBLE_HOST_KEY_CHECKING=true ANSIBLE_SSH_ARGS='-o IdentitiesOnly=yes -i '/my/key1' -i '/my/key2' -o ForwardAgent=yes -o ControlMaster=no -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --ask-sudo-pass --ask-vault-pass --limit="machine*:&vagrant:!that_one" --inventory-file=#{generated_inventory_dir} --extra-vars="{\\"var1\\":\\"string with 'apostrophes', \\\\\\\\, \\\\\\" and =\\",\\"var2\\":{\\"x\\":42}}" --sudo --sudo-user=deployer -vvv --vault-password-file=#{File.expand_path(__FILE__)} --tags=db,www --skip-tags=foo,bar --start-at-task="joe's awesome task" --why-not --su-user=foot --ask-su-pass --limit=all --private-key=./myself.key --extra-vars='{\"var3\":\"foo\"}' playbook.yml))
|
790
862
|
}
|
791
863
|
end
|
792
864
|
end
|