diff --git a/plugins/provisioners/ansible/provisioner/host.rb b/plugins/provisioners/ansible/provisioner/host.rb index 15842b7a1..990b730dd 100644 --- a/plugins/provisioners/ansible/provisioner/host.rb +++ b/plugins/provisioners/ansible/provisioner/host.rb @@ -234,7 +234,10 @@ module VagrantPlugins proxy_cmd += " exec nc %h %p 2>/dev/null" ssh_options << "-o ProxyCommand='#{ proxy_cmd }'" - elsif @machine.ssh_info[:proxy_command] && @machine.provider_config.connect_via_ssh + end + + # Use an SSH ProxyCommand when corresponding Vagrant setting is defined + if @machine.ssh_info[:proxy_command] proxy_cmd = @machine.ssh_info[:proxy_command] ssh_options << "-o ProxyCommand='#{ proxy_cmd }'" end diff --git a/test/unit/plugins/provisioners/ansible/provisioner_test.rb b/test/unit/plugins/provisioners/ansible/provisioner_test.rb index 3f35477e5..c26cecf8d 100644 --- a/test/unit/plugins/provisioners/ansible/provisioner_test.rb +++ b/test/unit/plugins/provisioners/ansible/provisioner_test.rb @@ -665,6 +665,19 @@ VF end end + describe "with an ssh proxy command configured" do + before do + ssh_info[:proxy_command] = "ssh -W %h:%p -q user@remote_libvirt_host" + end + + it "sets '-o ProxyCommand' via ANSIBLE_SSH_ARGS" do + expect(Vagrant::Util::Subprocess).to receive(:execute).with { |*args| + cmd_opts = args.last + expect(cmd_opts[:env]['ANSIBLE_SSH_ARGS']).to include("-o ProxyCommand='ssh -W %h:%p -q user@remote_libvirt_host'") + } + end + end + context "with verbose option defined" do %w(vv vvvv).each do |verbose_option|