Score:0

เอาต์พุตงาน Ansible ไปยังไฟล์ในเซิร์ฟเวอร์ ansible

ธง sd

ฉันกำลังเขียน playbook ที่จะตรวจสอบเวอร์ชันของแอปพลิเคชันบนโฮสต์ต่างๆ และเขียนผลลัพธ์ไปยังตัวแปร Ansible

ความต้องการของฉันคือฉันต้องการส่งออกตัวแปร ansible ไปยังไฟล์ output.logชิ้นส่วนของโค้ด ansible เพื่อเขียนตัวแปร ansible ไปยัง output.log.

ปัญหาคือตัวแปรถูกเขียนลงในไฟล์สำหรับโฮสต์สุดท้ายในคลังโฮสต์เท่านั้น แต่ฉันต้องการให้โฮสต์ทั้งหมดต่อท้ายในไฟล์ output.log

รูปภาพอ้างอิง

in flag
โปรดอย่าโพสต์ภาพหน้าจอของข้อความที่คุณสามารถคัดลอกและวางได้ เพียงคัดลอกและวางข้อความ
Score:2
ธง in

มอบหมายงานให้กับ localhost และใช้งาน ไลน์อินไฟล์ เพื่อเพิ่มลงในไฟล์ของคุณ:

- ชื่อ: ข้อมูลร้านค้า
  บรรทัดในไฟล์: 
    เส้นทาง: "/tmp/out.log"
    regexp: "\s{{ สินค้าคงคลัง_ชื่อโฮสต์ }}$"
    บรรทัด: "{{ java_version.msg }} {{ สินค้าคงคลัง_hostname }}"
    สร้าง: ใช่
  delegate_to: localhost

เดอะ regexp แอตทริบิวต์จะทำให้แน่ใจว่ารายการเก่าจะถูกแทนที่เมื่อคุณเรียกใช้ playbook อีกครั้งและเวอร์ชันมีการเปลี่ยนแปลง

Score:2
ธง cn

ติดตั้งสคริปต์ข้อเท็จจริงเพื่อ /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 ยังสามารถเขียนในรูปแบบใดก็ได้ที่คุณต้องการ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา