diff --git a/provisioner/ansible/provisioner.go b/provisioner/ansible/provisioner.go index 2d9b73a0b..2a200b447 100644 --- a/provisioner/ansible/provisioner.go +++ b/provisioner/ansible/provisioner.go @@ -579,13 +579,14 @@ func (p *Provisioner) createCmdArgs(httpAddr, inventory, playbook, privKeyFile s args = append(args, "--ssh-extra-args", "-o IdentitiesOnly=yes") } - args = append(args, "-i", inventory, playbook) - args = append(args, p.config.ExtraArguments...) + if len(p.config.AnsibleEnvVars) > 0 { envVars = append(envVars, p.config.AnsibleEnvVars...) } + // This must be the last arg appended to args + args = append(args, "-i", inventory, playbook) return args, envVars } diff --git a/provisioner/ansible/provisioner_test.go b/provisioner/ansible/provisioner_test.go index 0f7e3bb7b..d5b433684 100644 --- a/provisioner/ansible/provisioner_test.go +++ b/provisioner/ansible/provisioner_test.go @@ -594,10 +594,11 @@ func TestCreateCmdArgs(t *testing.T) { p.config.AnsibleEnvVars = tc.AnsibleEnvVars args, envVars := p.createCmdArgs(tc.callArgs[0], tc.callArgs[1], tc.callArgs[2], tc.callArgs[3]) - assert.ElementsMatch(t, args, tc.ExpectedArgs, "Args didn't match expected:\n\n expected: \n%s\n; recieved: \n%s\n", tc.ExpectedArgs, args) assert.ElementsMatch(t, envVars, tc.ExpectedEnvVars, "EnvVars didn't match expected:\n\n expected: \n%s\n; recieved: \n%s\n", tc.ExpectedEnvVars, envVars) + assert.EqualValues(t, tc.callArgs[2], args[len(args)-1], + "PlayBook File Not Returned as last element: \nexpected: %s\nrecieved: %s\n", tc.callArgs[2], args[len(args)-1]) } }