Назад | Перейти на главную страницу

Как отправлять сообщения отладки Ansible в другой файл?

Если вы сделаете следующее:

- name: print to stdout
  command: echo "My log information"
  register: logdata

- debug: msg="{{ logdata.stdout }}"

В logdata содержимое переменной register будет отображаться вместе с полным доступным журналом. Я хотел бы, чтобы эти отладочные сообщения хранились в другом файле. Возможно ли это каким-либо образом?

Другой альтернативой, о которой я подумал, был массив регистровых переменных. И, наконец, используйте copy модуль, чтобы поместить содержимое этого массива в файл. Не лучший вариант. Если возможно перенаправить стандартный вывод debug в другой файл, было бы круто.

Используйте local_action, как показано ниже, после захвата вывода в переменной:

- local_action: 
        module: copy 
        content: "{{ variable1 }}"
        dest: /tmp/whatever.out

Вы можете использовать модуль lineinfile?

- lineinfile: create=yes regexp="NONEXISTENTLINE" dest=/tmp/ansible.log line="{{logdata.stdout}}" state=present

Я использую regexp = "NONEXISTENTLINE", чтобы одно и то же сообщение регистрировалось несколько раз. Может тебе это и не нужно.

Журнал будет на каждом целевом хосте. Тянуть или нет.

В качестве альтернативы вы можете проанализировать вывод с помощью awk или чего-то еще.