---- name: Get our facts action: ec2_facts- name: Using the instance ID, we can get our tags ec2_tag: resource: "{{ ansible_ec2_instance_id }}" state: list region: "{{ ansible_ec2_placement_region }}" register: instance_tags- debug: var=instance_tags# example output for reference#ok: [localhost] => {# "instance_tags": {# "changed": false,# "invocation": {# "module_args": "",# "module_name": "ec2_tag"# },# "tags": {# "Name": "trainsmart-openvpnas-prod",# "aws:autoscaling:groupName": "openvpnas",# "environment": "access",# "region": "eu-west-1",# "stage": "prod"# }# }#}
- name: Extract our instance role tag - ie aws:autoscaling:groupName value set_fact: instance_role: "{{ instance_tags.tags.aws:autoscaling:groupName }}"- debug: var=instance_roleroot@ip-172-16-0-227:~/ansible# ansible-playbook local.yml -t get_role_tags
PLAY [Base config and return register for instance roles for final config] ****
GATHERING FACTS ***************************************************************ok: [localhost]
TASK: [get_role_tags | Get our facts] *****************************************ok: [localhost]
TASK: [get_role_tags | Using the instance ID, we can get our tags] ************ok: [localhost]
TASK: [get_role_tags | debug var=instance_tags] *******************************ok: [localhost] => { "instance_tags": { "changed": false, "invocation": { "module_args": "", "module_name": "ec2_tag" }, "tags": { "Name": "trainsmart-openvpnas-prod", "aws:autoscaling:groupName": "openvpnas", "environment": "access", "org": "trainsmart", "region": "eu-west-1", "stage": "prod" } }}
TASK: [get_role_tags | Extract our instance role tag - ie aws:autoscaling:groupName value] ***fatal: [localhost] => template error while templating string: expected token 'end of print statement', got ':' # A better way of referencing dict elements to avoid escaping issues instance_role: "{{ instance_tags['tags']['aws:autoscaling:groupName'] }}"