Рейтинг:0

Вывод задачи Ansible в файл на сервере ansible

флаг sd

Я пишу playbook, который будет проверять версию приложения на разных хостах и ​​записывать вывод в переменную Ansible.

Мое требование: я хочу вывести переменную ansible в файл output.logФрагмент кода для записи переменной ansible в output.log.

В чем проблема, переменная записывается в файл только для последнего хоста в инвентаре хостов, но я хочу, чтобы все хосты были добавлены в файл output.log

Ссылка на изображение

флаг in
Пожалуйста, не публикуйте скриншоты текста, который можно просто скопировать и вставить. Просто скопируйте и вставьте текст.
Рейтинг:2
флаг in

Делегируйте задачу на локальный хост и используйте линейный файл чтобы добавить его в свой файл:

- имя: информация о магазине
  линейный файл: 
    путь: "/tmp/out.log"
    регулярное выражение: "\s{{ inventory_hostname }}$"
    строка: "{{ java_version.msg}} {{ inventory_hostname }}"
    создать: да
  делегат_к: локальный

регулярное выражение Атрибут позаботится о том, чтобы старые записи были заменены при повторном запуске playbook и изменении версии.

Рейтинг:2
флаг cn

Установите сценарий фактов, чтобы /etc/ansible/facts.d/java.fact на удаленных хостах и ​​сделать его исполняемым.Экранирование JSON для печати на стандартном выходе немного уродливо. Также некрасиво, анализируя «номер» версии из Java-версия. Хотя вы можете собирать версию по-другому, при необходимости измените сценарий.

#!/бин/ш
JAVA_VERSION=$(java -версия 2>&1 | версия grep | cut -d '"' -f 2)
printf "{\"java_version\": \"${JAVA_VERSION}\"}\n"

Напишите шаблон Jinja для печати строк с номером версии в нужном формате. Скажи, что файл шаблоны/javaversionreport.txt

  • groups - это волшебная диктовка inventory_hostname, индексированная по группе
  • hostvars — это волшебный словарь с переменными других хостов.
  • ansible_local — это переменная «местные факты».
  • java из java.факт имя файла
{% для хоста в группах['hosts'] %}
{{ hostvars[хост].ansible_local.java.java_version }} {{ хост }}
{% конец для %}

И играет, чтобы собрать факты и написать отчет. Настройте шаблон хостов по желанию.

---
- хозяева: хозяева
  collect_facts: Верно
  путь_к_факту: /etc/ansible/facts.d


- хосты: локальный
  собрать_факты: Ложь

  задачи:
  - шаблон:
      источник: javaversionreport.txt
      место назначения: /tmp/out.log

Рендер одного шаблона выполняется быстрее, чем переписывание файлов с помощью linefinfile. Хотя сбор фактов может быть медленным. Кроме того, шаблоны Jinja могут быть написаны в любом удобном для вас формате.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.