I’m trying to spawn an EC2 instance through a role.
However, I can’t get “instance_tags” to work when I try to pass in the value through a parameter.
group_vars/all:
ec2_instance_tags: ‘{“name”:“test”}’
roles/ec2/tasks/main.yml:
name: xx
ec2:
…
…
instance_tags: “{{ ec2_instance_tags }}”
register: x
results in: msg: No handler was ready to authenticate. 1 handlers were checked. [‘QuerySignatureV2AuthHandler’] Check your credentials (bit of a weird error message too).
I’ve played around with quoting for a while but I can’t seem to work out how to do this…
This seems an authentication error, are you sure that your AWS access
and secret keys are visible to your task? Also, this bug [1] may be
related to the authentication error in the ec2 tagging, can you try
testing with a explicity ec2_tag action to see if you can tag
instances separatedly?
That’s the impression you would get from reading the error message (hence my comment behind it).
In reality it’s something weird going on with the quote expansion, I say this because when you remove the “instance_tags” it works as expected, also when I hardcode the instance_tags (instead of passing them as a parameter, it works too), and lastly when I pass in the instance_tags using "args: … " it also works.
Different sets of quoting show that either the “instance_tags” do get passed in (using ansible-playbook -v), but with incorrect quoting or in the case where you get the authentication error the entire “instance_tag” block is eaten away (no longer visible using -v).