Ansible in AWS, list processing question using ec2_instance_info for several nodes

Viewed 324

I am running several Ansible playbooks in AWS and I am having difficulty with a test yaml file. The purpose of the yaml file is to query AWS for a list of servers using a filter and set_fact the instance name, the instance ID the instance size and the private IP.

The code I have is returning only data for the first node in the list and repeats the debug line every 12 lines. All the other lines show no data returned. I am using the ec2_instance_info to get the various data about the instances.

Here is the Ansible yaml file

---



# This script gathers the Instance ID's et. al.



- name: Get EC2 Info

  ec2_instance_info:

    region: '{{ aws_region }}'

    aws_access_key: "{{ lookup('ini', 'aws_access_key_id section=saml file=~/.aws/credentials') }}"

    aws_secret_key: "{{ lookup('ini', 'aws_secret_access_key section=saml file=~/.aws/credentials') }}"

    security_token: "{{ lookup('ini', 'aws_session_token section=saml file=~/.aws/credentials') }}"

    filters:

     "tag:Name": "test-envMan*"

  register: Instance_ID



- name: Get Instance ID

  debug:

      msg: "{{ item.0 }} | {{ item.1 }} | {{ item.2 }} | {{ item.3 }}"

  with_together:

        - "{{ Instance_ID.instances | map(attribute='tags.Name') | list }}"

        - "{{ Instance_ID.instances[0].instance_id }}"

        - "{{ Instance_ID.instances[1].instance_type }}"

        - "{{ Instance_ID.instances[2].private_ip_address }}"



- name: Gather and Save info

  set_fact:

     Tag_Name: "{{ Instance_ID.instances | map(attribute='tags.Name') | list }}"

     Instance_ID: "{{ Instance_ID.instances[0].instance_id }}"

     Instance_Size: "{{ Instance_ID.instances[1].instance_type }}"

     Instance_PrivIP: "{{ Instance_ID.instances[2].private_ip_address }}"

The output shows 12 lines of Ansible "ok" output for each server. The first line of which includes the debug output of the expected fields for the first node.

So 1 line of "ok" log output, then the debug line. Then 11 lines of "ok" log output of the same node. Then 1 line of "ok" output for the second node, the the debug line for the first node. etc.

I need to discover what I am doing incorrectly and how to make it behave.

Any comments, suggestions or pointers are appreciated.

Thanks.

0 Answers
Related