v1.6.8 ERROR: a duplicate parameter was found in the argument string

A new issue has cropped up for me with v1.6.8 when running a command through the shell module that has an equal sign in the command:

- name: register the zone a nat instance
  shell: 'aws --region {{ aws_region }} ec2 describe-instances --filters "Name=tag:Name, Values=NAT Instance A" "Name=instance-state-code, Values=16" --query "Reservations[*].Instances[*].InstanceId" | jq --raw-output ".[][]"'
  changed_when: false
  register: zone_a_nat_instance

…and the error I’m getting is:

TASK: [aws | register the zone a nat instance] ********************************
fatal: [localhost] => a duplicate parameter was found in the argument string (Name)

FATAL: all hosts have already failed -- aborting

Although there are technically two instances of ‘Name=’ in my command, it’s not an actual Ansible module parameter, but part of the shell command I’d like to run. This task worked previously and no matter how I quote the above task (no surrounding quotes, single quotes, double quotes, -shell: > with a newline then the command, etc.), it throws the same error.

I did find this GitHub issue regarding the same error, but it seems like there are a number of issues going on in that thread: https://github.com/ansible/ansible/issues/8233#issuecomment-49924707

Any quick fixes? Is this an unintended consequence of the security fix?

So currently the duplicate param detection does look inside some quoted args that it should not. We’re working on a fix for this.

Should only happen when there are Foo= Foo= repeated in a shell/command module, with the equal signs.

It hits the unarchive module too, it would appear. Got bit by that in the middle of a demo/presentation last night (that’ll teach me to be running from devel!)

There is a ticket Michael, looks like somebody has already fixed it too, and sent you the PR.

https://github.com/ansible/ansible/pull/8263

Cheers

Yep, Benno works for us and is awesome.

The unarchive fix is now merged, the command module bit is a bit different.

Absolutely brilliant!

Thanks for pulling that in so fast.

Hi,

I am facing the same issue and there is no clear error as to which parameter is duplicate.

a duplicate parameter was found in the argument string ()

I am using set_fact to assign values to variable in sub-task. I am including this sub-task in main task and calling ansible-playbook. The code is as follows :

Please update to Ansible 1.7.2 and see if you have any issues there, we can’t support older versions on this list.

Thanks!

hi

i am using 1.7.2 only.