ติดตั้งสคริปต์ข้อเท็จจริงเพื่อ /etc/ansible/facts.d/java.fact
บนรีโมตโฮสต์และทำให้เรียกใช้งานได้การหลบหนี JSON เพื่อพิมพ์ตามมาตรฐานนั้นน่าเกลียดเล็กน้อย ยังน่าเกลียดแยกรุ่น "หมายเลข" ออกจาก จาวา - เวอร์ชัน
. แม้ว่าคุณอาจกำลังรวบรวมเวอร์ชันด้วยวิธีอื่น ให้ปรับสคริปต์ตามความจำเป็น
#!/bin/sh
JAVA_VERSION=$(java -version 2>&1 | grep version | ตัด -d '"' -f 2)
พิมพ์f "{\"java_version\": \"${JAVA_VERSION}\"}\n"
เขียนเทมเพลต Jinja เพื่อพิมพ์บรรทัดหมายเลขเวอร์ชันในรูปแบบที่ต้องการ บอกว่าเป็นไฟล์ เทมเพลต/javaversionreport.txt
- กลุ่มเป็นคำสั่งวิเศษของ inventory_hostname จัดทำดัชนีโดยกลุ่ม
- hostvars เป็นคำสั่งวิเศษที่มีตัวแปรของโฮสต์อื่น
- ansible_local คือตัวแปร "ข้อเท็จจริงในท้องถิ่น"
- java มาจาก
java.fact
ชื่อไฟล์
{% สำหรับโฮสต์ในกลุ่ม['โฮสต์'] %}
{{ hostvars[โฮสต์].ansible_local.java.java_version }} {{ โฮสต์ }}
{% สิ้นสุดสำหรับ %}
และเล่นเพื่อรวบรวมข้อเท็จจริงและเขียนรายงาน ปรับรูปแบบโฮสต์ตามต้องการ
---
- โฮสต์: โฮสต์
Gather_facts: จริง
fact_path: /etc/ansible/facts.d
- โฮสต์: localhost
Gather_facts: เท็จ
งาน:
- แม่แบบ:
src: javaversionreport.txt
ปลายทาง: /tmp/out.log
การเรนเดอร์เทมเพลตเดียวทำงานได้เร็วกว่าการเขียนไฟล์ใหม่ด้วย linefinfile แม้ว่าการรวบรวมข้อเท็จจริงอาจทำได้ช้า นอกจากนี้ เทมเพลต Jinja ยังสามารถเขียนในรูปแบบใดก็ได้ที่คุณต้องการ