Ansible AWS создает набор IP-адресов, сгруппированных по тегу экземпляра - PullRequest
0 голосов
/ 10 октября 2018

У меня есть несколько экземпляров EC2, из которых мне нужно извлечь IP-адреса и сгруппировать их по определенному тегу экземпляра.

Итак, этот пример JSON:

{
    "changed": true,
    "instances": [ 
        {
            "ami_launch_index": 0,
            "architecture": "x86_64",
            "private_ip_address": "11.111.1.111", 
            "public_dns_name": "",
            "tags": {
                "Environment": "dev",
                "Role": "role1",
            }
        },
        { 
            "ami_launch_index": 0,
            "architecture": "x86_64",
            "private_ip_address": "22.222.2.222",
            "public_dns_name": "",
            "tags": {
                "Environment": "dev",
                "Role": "role1",
            }
        },
        {
            "ami_launch_index": 0,
            "architecture": "x86_64",
            "private_ip_address": "33.333.3.333",
            "public_dns_name": "",
            "tags": {
                "Environment": "dev",
                "Role": "role2",
            }
        },
        {
            "ami_launch_index": 0,
            "architecture": "x86_64",
            "private_ip_address": "44.444.4.444",
            "public_dns_name": "",
            "tags": {
                "Environment": "dev",
                "Role": "role2",
            }
        }
    ]
}

даст следующее:

{
    "role1": [
        "11.111.1.111",
        "22.222.2.222"
    ],
    "role2": [
        "33.333.3.333",
        "44.444.4.444"
    ]
}

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

1 Ответ

0 голосов
/ 10 октября 2018

Вот вы:

- set_fact:
    my_result: "{{ my_result | default({}) | combine({item.0: item.1|map(attribute='private_ip_address')|list}) }}"
  loop: "{{ my_input.instances|groupby('tags.Role') }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...