Установите сценарий фактов, чтобы /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 могут быть написаны в любом удобном для вас формате.