Я пытаюсь создать Ansible playbook, который вернул бы несколько экземпляров EC2 в заданное состояние, сохраненных в виде изображения.Каждый экземпляр уникален.Я хотел бы сделать это, основываясь исключительно на тегах AWS в качестве начальной информации, поэтому он будет работать для любого набора экземпляров.
Поток будет следующим:
- Makeубедитесь, что у каждого компонента есть тег (tag1), указывающий, к какому набору экземпляров он будет принадлежать.Еще один тег (tag2) для указания на конкретный экземпляр - db01, web01 и т. Д.
- Отключение сетевых интерфейсов - я буду их использовать.
- Завершить все запущенные экземпляры.Сетевые интерфейсы останутся.
Пока все просто, и я сделал это с помощью модулей ec2_eni и ec2.Самое сложное это:
Получите список всех сетевых интерфейсов и всех изображений, принадлежащих к набору, и сопоставьте их два по два на основе значения tag2.
Итак, я получаю наборы, подобные этому:
- name: Gather network interface facts
ec2_eni_facts:
filters:
subnet-id: subnet-xxxxxxxxxx
"tag:tag1": "{{ SID }}"
register: discovered_eni_facts
- name: facts
vars:
set_fact:
names: "{{ discovered_eni_facts | json_query('network_interfaces[*].[id, tag_set.tag2]') }}"
Output:
[["eni-11111111111111111",
"WBH dbmr"],
["eni-22222222222222222",
"WBH dbw1r"],
["eni-33333333333333333",
"WBH dbw1"],
["eni-44444444444444444",
"WBS"],
["eni-55555555555555555",
"WBH dbm"]]
Как я могу создать один список / словарь, который будет содержать как идентификатор AMI, так и идентификатор ENI на основе значения тега name?Примерно так:
[["eni-11111111111111111",
"ami-11111111111111111",
"WBH dbmr"],
........]
Я совершенно новичок как в Ansible, так и в Python, поэтому может быть что-то очевидное, что мне не хватает.Я просмотрел документацию по фильтрам Ansible и циклы.Я также попытался начать с пустого файла с правильной структурой, а затем постепенно заполнять его, используя json_modify, как показано здесь: лучший способ изменить json в ansible
Но я попал в ту же проблему -не может сопоставить данные правильно.Я не знаю заранее, сколько экземпляров я работаю, поэтому я не могу сделать это один за другим.