Score:2

ไม่สามารถรับ swap พาร์ติชัน UUID หลังจากสร้างด้วยโมดูลของ Parted ansible

ธง cn

ฉันต้องสร้างพาร์ติชันใหม่ในดิสก์ใหม่บน VM ฉันใช้โมดูลที่แยกส่วนเพื่อสร้างพาร์ติชัน ในงานในอนาคต (ใน playbook เดียวกัน) ฉันต้องใช้ UUID ของพาร์ติชันอุปกรณ์ (ไม่ใช่ UUID ของพาร์ติชัน แต่เป็น UUID ของอุปกรณ์ของพาร์ติชัน เช่น ใน /dev/disks/by-uuid/)

ปัญหาคือ: ฉันไม่พบวิธีรับ UUID ของพาร์ติชันในงานหลังจากโมดูลที่แยกส่วนได้เก็บถาวรงาน ฉันแน่ใจว่าโมดูลที่แยกส่วนทำงานได้ดีเพราะมีพาร์ติชันอยู่หลังจากการรัน

ลองดูสิ่งที่ฉันพยายาม:

การสร้างพาร์ติชันด้วยโมดูลที่แยกส่วน
เปิดข้อเท็จจริงอีกครั้งด้วยโมดูลการตั้งค่า (โดยมีและไม่มีการกรองใน ansible_devices) เพื่อใช้ ansible_devices.sdX.partitions.sdXY.uuid --> คืนค่าโมฆะ
ใช้ blkid -s UUID -o ค่า /dev/sdXY ผ่านโมดูลเชลล์ -> ส่งคืนโมฆะ
ใช้คำสั่ง ls -l /dev/disk/by-uuid/ | grep sdXY | awk '{print $9}' ผ่านโมดูลเชลล์ -> ยังคงส่งคืนโมฆะ

ความจริงที่น่ากลัวก็คือ ถ้าฉันเริ่มงานเดียวกัน (เช่น 2, 3 หรือ 4) ใน playbook อื่น ฉันก็สามารถได้ผลลัพธ์ แต่ใน playbook เดียวกันของโมดูลที่แยกส่วน : ฉันทำไม่ได้

นี่คือ playbook แบบเต็มของฉัน:

---
- โฮสต์: ทั้งหมด
  กลายเป็น: ใช่
  Gather_facts: "ใช่"
  งาน:

   - ชื่อ: ตรวจสอบปริมาณสวอปจริง
     แก้ปัญหา:
       var: ansible_swaptotal_mb
     ล้มเหลวเมื่อ: ansible_swaptotal_mb > 1999


   - ชื่อ: เพิ่มดิสก์ 2Gb
     เปลือก: pwsh ./add_disk_vm.ps1 -vm {{ ansible_hostname }} -diskspace 2
     delegate_to: localhost


   - ชื่อ: สแกนหาดิสก์ใหม่
     เปลือก: สำหรับฉันใน $(ls /sys/class/scsi_host/); ทำ echo "- - -" > /sys/class/scsi_host/$i/scan ; เสร็จแล้ว

   - ชื่อ: รับจดหมายของดิสก์ใหม่
     เปลือก: 'dmesg | grep "sd\w.*2.00 GiB)$" | grep -o "sd\w" | หาง -1'
     ลงทะเบียน: diskletter


   - ชื่อ: สร้างพาร์ติชันใหม่
     community.general.parted:
       อุปกรณ์: /dev/{{ diskletter.stdout }}
       fs_type: linux-swap
       ป้ายกำกับ: gpt
       ชื่อ: เปลี่ยน
       จำนวน: 1
       สถานะ: ปัจจุบัน
     ลงทะเบียน: พรากจากกัน


   #นี่งานใครควรทำงานแต่กลับไม่ได้อะไรเลย
   - ชื่อ: รับ UUID
     เปลือก: blkid -s UUID -o ค่า /dev/{{ diskletter.stdout }}1
     ลงทะเบียน: uuidinfo

ฉันไม่ได้พูดถึงมันมาก่อน แต่งานสุดท้ายทำงานได้ดีบน playbook อื่นหรือแม้แต่โดยตรงใน SSH บน VM คำสั่งไม่ส่งคืนสิ่งใดๆ ในระหว่างบริบทการดำเนินการของ playbook เท่านั้น

ข้อมูลอื่นๆ เกี่ยวกับการตั้งค่าของฉันมีดังนี้

ansible-playbook 2.9.27 รุ่นหลาม = 2.7.17 Ubuntu 18.04 (ที่ติดตั้ง ansible และเซิร์ฟเวอร์เป้าหมาย) การรวบรวม community.general (เวอร์ชัน 3.7.0)

หากมีใครมีความคิดเห็นเกี่ยวกับเรื่องนี้ ; ขอบคุณสำหรับทุกอย่าง !

Score:1
ธง ca

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

ลิงค์เพิ่มเติม

cn flag
สวัสดี ขอบคุณสำหรับคำตอบ ; ฉันพยายามใช้ partprobe หรือ partx เพื่อโหลดข้อมูลดิสก์ซ้ำ แต่ไม่สำเร็จ: UUID ยังไม่พร้อมใช้งาน ฉันจะใช้ playbooks 2 เล่มแทนที่จะเป็นเล่มเดียว
Score:0
ธง cn

ตกลงในที่สุดฉันก็พบวิธีแก้ปัญหา

ปัญหาคือเมื่อไม่ได้ติดตั้งพาร์ติชัน ก็จะไม่มี UUID เมื่อทำงานกับพาร์ติชันข้อมูล เช่น xfs, extX และอื่นๆ... พาร์ติชันนี้ติดตั้งโดยตรงโดยระบบ ดังนั้นพาร์ติชันจึงได้รับ UUID โดยตรง

ไม่ใช่กรณีของพาร์ติชัน swap คุณต้องเปิดใช้งานก่อน mkswap สำหรับระบบสามารถเมาต์พาร์ติชัน Swap

นั่นเป็นเหตุผลที่ฉันสามารถรับค่า UUID ในการดำเนินการ playbook ครั้งที่สอง : ฉันถึงค่า UUID ก่อนเปิดใช้งานการแลกเปลี่ยนใน playbook ดังนั้นจึงไม่ได้เมานต์พาร์ติชันและยังไม่มี UUID

ถ้ามันสามารถช่วยใครซักคนได้

โพสต์คำตอบ

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