Instalați un script de fapte la /etc/ansible/facts.d/java.fact
pe gazde la distanță și să îl faceți executabil.Evadarea JSON pentru a imprima pe o ieșire standard este puțin urâtă. De asemenea, urâtă, analizarea unei versiuni „număr” din versiunea java
. Deși este posibil să colectați versiunea într-un mod diferit, ajustați scriptul după cum este necesar.
#!/bin/sh
JAVA_VERSION=$(java -versiune 2>&1 | versiune grep | cut -d '"' -f 2)
printf "{\"java_version\": \"${JAVA_VERSION}\"}\n"
Scrieți un șablon Jinja pentru a imprima liniile cu numărul versiunii în formatul dorit. Spune că fișierul este templates/javaversionreport.txt
- groups este un dict magic al inventory_hostname indexat după grup
- hostvars este un dict magic cu variabilele altor gazde
- ansible_local este variabila „fapte locale”.
- java este de la
java.fapt
nume de fișier
{% pentru gazdă în grupuri['gazde'] %}
{{ hostvars[host].ansible_local.java.java_version }} {{ host }}
{% endfor %}
Și joacă pentru a colecta fapte și a scrie raportul. Ajustați modelul gazdelor după cum doriți.
---
- gazde: gazde
gather_facts: Adevărat
calea_fact: /etc/ansible/facts.d
- gazde: localhost
gather_facts: Fals
sarcini:
- șablon:
src: javaversionreport.txt
dest: /tmp/out.log
Randarea unui șablon rulează mai rapid decât rescrierea fișierelor cu linefinfile. Deși strângerea faptelor poate fi lentă. De asemenea, șabloanele Jinja pot fi scrise în orice format doriți.