Как создать условную копию в Ansible на основе членства в сети (подсети)
Я хочу скопировать одну версию файла на сервер, если у него есть интерфейс в определенной подсети, или другую версию, если у него нет интерфейса в этой подсети. Ниже это рабочее, но я думаю, что неоптимальное решение. Я надеюсь, что есть лучший способ, который отвечает следующим критериям ...
остается динамичным (используйте факты, я не хочу вручную устанавливать переменные для каждого сервера и вручную создавать группы для серверов внутри, а не в подсети)менее повторяющийся (это может быть обработано в одной задаче?)не нужно перечислять все возможные имена интерфейсов (например, eth0, eth1, ..., bond0, bond1, ... и т. д.)рабочая версия ...
- name: copy file version 1 to server
copy:
src: files/myfile.vs1
dest: /etc/myfile
when: (ansible_eth0.network == "192.168.0.0") or
(ansible_eth1.network == "192.168.0.0") or
(ansible_eth2.network == "192.168.0.0")
...
- name: copy file version 2 to server
copy:
src: files/myfile.vs2
dest: /etc/myfile
when: (ansible_eth0.network != "192.168.0.0") and
(ansible_eth1.network != "192.168.0.0") and
(ansible_eth2.network != "192.168.0.0")
...