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?