ansible blockinfile ปิดการใช้งานเครื่องหมาย


11

ฉันยังใหม่กับ ansible แต่ฉันสามารถใช้ฟังก์ชันblockinfileได้สำเร็จ อย่างไรก็ตามฉันไม่สามารถหาวิธีป้องกันการแทรกเครื่องหมาย ฉันอ่านเอกสาร แต่มันไม่ปรากฏขึ้นเพื่ออธิบาย

นี่คือสิ่งที่ปรากฏในทุกไฟล์ที่ blockinfile เขียนถึง

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

คำตอบ:


14

ฉันได้ดูblockinfileโมดูลดั้งเดิมบน GitHub - ก่อน Ansible 2 มันไม่ได้รวมกับ Ansible ปรากฎว่ามีการใช้เครื่องหมายเพื่อระบุบล็อก :

ดูเหมือนว่าพฤติกรรมที่ตั้งใจไว้ มันจะแทนที่ทุกบรรทัดที่ล้อมรอบด้วยเครื่องหมายบล็อกด้วยเนื้อหาที่ระบุ

ซึ่งหมายความว่าหากคุณลบเครื่องหมายblockinfileจะไม่สามารถระบุบล็อกได้อีกต่อไปซึ่งจะส่งผลให้โมดูลเพิ่มบล็อกลงในไฟล์ทุกครั้งที่คุณเรียกใช้เพลย์บุค

ดังนั้นเครื่องหมายก่อนและหลังบล็อกที่เขียนเป็นความต้องการของโมดูลและไม่สามารถลบได้

หากนี่เป็น playbook แบบครั้งเดียวที่จะไม่ถูกดำเนินการอีกครั้งคุณสามารถเรียกใช้lineinfileโมดูลด้วยstate: absentตัวเลือกหลังจากนั้น


คำตอบเก่า:

ตามเอกสารที่blockinfileโมดูลมีmarkerตัวเลือก

คุณพยายามตั้งค่าเป็นสตริงว่างหรือเท็จ?

blockinfile:
    dest: /var/www/html/index.html
    marker: ""

หรือ

blockinfile:
    dest: /var/www/html/index.html
    marker: False

1
ขออภัยเกี่ยวกับคำสั่งที่ไม่สมบูรณ์ด้านบนมีคนเคาะประตูและฉันต้องวิ่ง ฉันลองไอเดียเหล่านี้เมื่อวานนี้ เครื่องหมาย: "" - เพิ่มบรรทัดไปที่ด้านบนและด้านล่างของไฟล์ เท็จ: - เพียงเพิ่มคำเท็จที่ด้านล่างและด้านบนของไฟล์ ความคิดอื่น ๆ ?
Nik

2
ฉันปรับปรุงคำตอบของฉัน ตัวทำเครื่องหมายจำเป็นต้องใช้โดย gthe module เองและแม้ว่าคุณจะทำได้คุณอาจไม่ต้องการลบออก ดูคำตอบที่อัพเดตสำหรับรายละเอียด
udondan

0

ฉันทำอะไรเช่นนี้ ...

- name: Insert someline in somefile.sh
    blockinfile:
      path: /usr/share/somefile.sh
      block: -sometext
      insertafter: '-XX:originaltext'
      marker: ""
      backup: yes


 - name: Remove blank lines blockinfile put in
    lineinfile :
     path: /usr/share/somefile.sh
     state: absent
     regexp: '^$'
  • เครื่องหมาย "" จะแทรกบรรทัดว่างลงในไฟล์
  • lineinfile จะลบออก (พร้อมกับบรรทัดว่างอื่น ๆ ทั้งหมด) ดังนั้นระวัง !!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.