แยกได้โดยไม่ต้องไดเรกทอรีแรก


29

เมื่อทำการแตกไฟล์ tar.gz ใน ansible ฉันจะได้ไดเรกทอรีแรก

- name: Extract archive
  unarchive: src=file.tar.gz
             dest=/foo/bar

ผลลัพธ์ใดใน/foo/bar/bar-version-someFirstLevelFolder/contentOfArchive ฉันจะป้องกันการสร้างลำดับชั้นพิเศษนี้ได้อย่างไร


อาจไม่เกี่ยวข้อง แต่ฉันรู้ว่าบางครั้งคุณต้องระวังในการเพิ่มเครื่องหมายสแลชต่อท้ายไดเรกทอรีปลายทาง มันช่วยได้บ้างไหม?
SauceCode

คำตอบ:


40

เพื่อที่จะดึงbar-version-someFirstLevelFolderคุณจำเป็นต้องใช้ตัวเลือกใน--strip-components=1 tarดังนั้น playbook ของคุณควรมีลักษณะเช่นนี้

- name: Extract archive
  unarchive:
    src: file.tar.gz
    dest: /foo/bar
    extra_opts: [--strip-components=1]

1
นี่ดูเหมือนจะเป็นคำตอบที่ถูกต้อง แต่ปัจจุบันอาจทำให้เกิดข้อผิดพลาด ดูรายงานข้อผิดพลาดนี้: github.com/ansible/ansible/issues/29657การแก้ปัญหาระดับกลางจะเป็น untar ในไดเรกทอรีหลักแล้วมีcommand: mv /foo/bar-version-someFirstLevelFolder/* foo/bar/
TheAtomicOption

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