иных группах, генерируется лист имён переменных, которые сопоставимы с переменными в system.yml
Пример:
vars:
firewall_ports_dynamic_var: []
- set_fact:
firewall_ports_dynamic_var: "{{ firewall_ports_dynamic_var }} + [ 'firewall_allowed_tcp_ports_for.{{ item }}' ]"
loop: '{{ hostvars[inventory_hostname].group_names }}'
результат, нужный список переменных, индивидуально для хоста, в зависимости от членства:
TASK [debug] *************************************************************************************************************************************************************************************************
ok: [10.128.64.143] => {
"firewall_ports_dynamic_var": [
"firewall_allowed_tcp_ports_for.balancers",
"firewall_allowed_tcp_ports_for.etcd_cluster",
"firewall_allowed_tcp_ports_for.postgres_cluster",
"firewall_allowed_tcp_ports_for.replica"
]
}
Теперь вопрос, как правильно объеденить результат значений уже этих переменных?
Пока так: - set_fact: firewall_ports_dynamic_var: "{{ firewall_ports_dynamic_var|default([]) }} + [ 'firewall_allowed_tcp_ports_for.{{ item }}' ]" loop: '{{ hostvars[inventory_hostname].group_names }}' - set_fact: firewall_ports_list: "{{ firewall_ports_list|default([]) }} + [ {{ item }} ]" loop: '{{ firewall_ports_dynamic_var }}' Результат: TASK [debug] ************************************************************************************************************************************************************************************************* ok: [10.128.64.143] => { "[] + [ firewall_allowed_tcp_ports_for.balancers ] + [ firewall_allowed_tcp_ports_for.etcd_cluster ] + [ firewall_allowed_tcp_ports_for.postgres_cluster ] + [ firewall_allowed_tcp_ports_for.replica ]": [ [ "22", "5000", "5001", "5002", "5003", "7000" ], [ "22", "2379", "2380" ], [ "22", "5432", 6432, "8008" ], [ 33 ] ] } но не то, нужен один список []
Обсуждают сегодня