Ansible в AWS, вопрос обработки списка с использованием ec2_instance_info для нескольких узлов - PullRequest
2 голосов
/ 17 июня 2020

Я запускаю несколько Ansible плейбуков в AWS, и у меня возникли трудности с тестовым файлом yaml. Цель файла yaml - запросить AWS список серверов с использованием фильтра и set_fact имени экземпляра, идентификатора экземпляра, размера экземпляра и частного IP.

Код, который у меня есть, возвращает только данные для первого узла в списке и повторяет строку отладки каждые 12 строк. Все остальные строки не показывают возвращенных данных. Я использую ec2_instance_info для получения различных данных об экземплярах.

Вот файл Ansible yaml

---



# 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 }}"

Вывод показывает 12 строк вывода Ansible "ok" для каждого сервера. Первая строка которого включает вывод отладки ожидаемых полей для первого узла.

Итак, 1 строка вывода журнала «ok», затем строка отладки. Затем 11 строк журнала «ok» того же узла. Затем 1 строка вывода «ok» для второго узла, строка отладки для первого узла. et c.

Мне нужно выяснить, что я делаю неправильно и как заставить его себя вести.

Любые комментарии, предложения или указатели приветствуются.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...