ฉันต้องสร้างพาร์ติชันใหม่ในดิสก์ใหม่บน 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)
หากมีใครมีความคิดเห็นเกี่ยวกับเรื่องนี้ ; ขอบคุณสำหรับทุกอย่าง !