Как я могу получить доступ ко всем 10 стандартным хостам из одной переменной?
Да, используя map("extract")
, затем map(attribute=)
:
- shell: echo "{{ groups.nodes | map('extract', hostvars, 'ips') | map(attribute='stdout') | join(', ') }}" > pip.txt
delegate_to: localhost
run_once: true
Вам понадобится run_once: true
в противном случае, да, он будет делегирован вашему локальному компьютеру, но он также будет выполнять это действие один раз для каждого хоста в инвентаре, что бесполезно.
Если вам интересно, вы также можете использовать copy:
, чтобы сделать его более понятным, так как он фактически не изменит ваш файл, если узнает, что содержимое не изменилось:
- copy:
dest: pip.txt
content: "{{ groups.nodes | map('extract', hostvars, 'ips') | map(attribute='stdout') | join(', ') }}"
delegate_to: localhost
run_once: true