1

Running ec2_instance_facts Ansible module and registering it to a variable called ec2.

I have tags on ec2 instance which has colon characters in its key name.

I can grab environment tag value using this:

 set_fact:
    number_of_nodes: "{{ ec2.instances|json_query('[*].tags.environment') }}"

But cannot grab value of "aws:lc:sg", trying the following:

 set_fact:
    number_of_nodes: "{{ ec2.instances|json_query('[*].tags.aws:lc:sg') }}"

Also tried by putting \, \ , /, // characters before colon. Doesn't work.

Can someone help ? :(

Rot-man
  • 18,045
  • 12
  • 118
  • 124
sherri
  • 421
  • 2
  • 9
  • 19

1 Answers1

3

When wanting to escape ? : - the ansible docs recommend quoting them with double-quotes ". (docs here In your case that's rather difficult as you should be using single quotes in the json_query filter. You can try replacing the arguments of that filter with a var and later when you declare that var, you can use double-quotes.

 set_fact:
    number_of_nodes: "{{ ec2.instances|json_query(the_var) }}"
 vars:
    the_var: "[*].tags.aws:lc:sg"

I hope this helps! Cheers!

Alex D.
  • 98
  • 7