Вложенный цикл для модуля безопасности облачного стека для групп безопасности и портов
Я пытаюсь установить несколько групп безопасности одновременно, используя модуль ansible cloud stack. Файл yaml в настоящее время выглядит так:
- name: add inbound tcp rules to security group web
cs_securitygroup_rule:
security_group: web
start_port: "{{ item }}"
end_port: "{{ item }}"
loop:
- 80
- 443
Проблема в том, что может быть огромное количество групп безопасности. Таким образом, этот блок кода будет повторяться снова и снова, что не похоже на хорошее решение. Поэтому я хотел бы превратить все это в один цикл и передать аргументы, используя словари. Облако структуры данных выглядит примерно так:
cs_security_groups:
web:
- 80
- 443
monitor:
- 9090
- 9100
- 9333
default:
- 22
Я просто не могу заставить это работать с использованием любого вида цикла, потому что группа безопасности может иметь произвольное количество портов. Я что-то упустил или этот подход совершенно неверный?
1 ответ
Я вроде решил проблему.
- name: add inbound port(s) to the security groups
cs_securitygroup_rule:
security_group: "{{ item.0.key }}"
port: "{{ item.1 }}"
loop: "{{ cs_security_groups | dict2items | subelements('value') }}"
Это работает, но может быть лучшее решение.:-)