В моем playbook у меня есть две основные задачи: одна задача, которая изменяет последнюю цифру шлюза для машин Debian, а вторая применяется к машинам Redhat, все работает нормально, но возможность отслеживать машины, на которых задачи были успешно выполнены, в локальном файле ( вид бревна).
Пытался зарегистрировать результаты обеих задач реестром
для Debian:
name: change default gateway address
replace:
path: /etc/network/interfaces
regexp: '(up route add default gw [d]*.[d]*.[d]*).[d]*$'
replace: '1.254'
backup: yes
when: (ansible_facts['distribution'] == "Debian")
register: debresult
для Redhat:
- name: change default gateway address on Redhat
replace:
path: /etc/sysconfig/network-scripts/ifcfg-eth0
regexp: '(GATEWAY=[d]*.[d]*.[d]*).[d]*$'
replace: '1.254'
backup: yes
when: (ansible_facts['distribution'] == "RedHat")
register: redresult
а затем я добавил задачу для регистрации измененных хостов:
- name: log the changed hosts
local_action:
module : copy
content: "{{ansible_facts.hostname}}{{debresult}}"
content: "{{ansible_facts.hostname}}{{redresult}}"
dest: /tmp/changed.txt
Я пытаюсь получить такой журнал:
debianhostname {"msg": "", "success": true, "changed": true}
redhathostname {"msg": "", "success": true, "changed": true}
Но проблема в том, что я получаю только последний вывод, так как же можно иметь обе записи в моем файле? есть ли модуль, который я могу использовать? Я пробовал local_action с копией, set_fact, но это не сработало.
1 ответ
вот ответ, используя максимальное количество доступных модулей:
- name: log the changed hosts
local_action:
module : lineinfile
line: "{{ ansible_facts['hostname'] }} {{item}}"
dest: /tmp/changed.txt
with_items:
- "{{debresult}}"
- "{{redresult}}"