Điểm:2

Không thể lấy UUID phân vùng trao đổi sau khi tạo nó bằng mô-đun của Parted ansible

lá cờ cn

Tôi phải tạo một phân vùng mới trong một đĩa mới trên máy ảo. Tôi sử dụng mô-đun chia tay để tạo phân vùng. Trong một tác vụ trong tương lai (trong cùng một playbook), tôi cần sử dụng UUID của phân vùng thiết bị (không phải UUID của phân vùng, mà là UUID của thiết bị của phân vùng, chẳng hạn như trong/dev/đĩa/by-uuid/)

Vấn đề là: Tôi không tìm được cách lấy UUID của phân vùng trong một tác vụ sau khi mô-đun được chia tách lưu trữ công việc. Tôi chắc chắn rằng mô-đun chia tay hoạt động tốt vì phân vùng tồn tại sau khi chạy.

Hãy xem những gì tôi đã thử:

Tạo phân vùng với mô-đun parted
Khởi chạy lại các sự kiện với mô-đun thiết lập (có và không lọc trên ansible_devices) để sử dụng ansible_devices.sdX.partitions.sdXY.uuid -> return void
Sử dụng giá trị blkid -s UUID -o /dev/sdXY thông qua mô-đun shell -> return void
Sử dụng ls -l /dev/disk/by-uuid/ | grep sdXY | awk '{print $9}' thông qua mô-đun shell --> vẫn trả về void

Sự thật tồi tệ là: nếu tôi chạy cùng một tác vụ (như 2, 3 hoặc 4) trong một playbook khác, tôi có thể nhận được kết quả. Nhưng trong cùng một vở kịch của mô-đun đã chia tay: Tôi không thể.

Đây là playbook đầy đủ của tôi:

---
- máy chủ: tất cả
  trở thành: có
  tập hợp_facts: "có"
  nhiệm vụ:

   - name: Kiểm tra số lượng swap thực tế
     gỡ lỗi:
       biến: ansible_swaptotal_mb
     fail_khi: ansible_swaptotal_mb > 1999


   - tên: Thêm đĩa 2Gb
     shell: pwsh ./add_disk_vm.ps1 -vm {{ ansible_hostname }} -diskspace 2
     ủy nhiệm_to: máy chủ cục bộ


   - tên: Quét đĩa mới
     vỏ: cho tôi trong $(ls /sys/class/scsi_host/); làm echo "- - -" > /sys/class/scsi_host/$i/scan ; xong

   - name: Lấy ký tự của đĩa mới
     vỏ: 'dmesg | grep "sd\w.*2.00 GiB)$" | grep -o "sd\w" | đuôi -1'
     đăng ký: diskletter


   - name: Tạo phân vùng mới
     cộng đồng.chung.parted:
       thiết bị: /dev/{{ diskletter.stdout }}
       fs_type: trao đổi linux
       nhãn: gpt
       tên: trao đổi
       số 1
       trạng thái: hiện tại
     đăng ký: chia tay


   #đây nhiệm vụ ai nên làm việc, nhưng không trả lại gì
   - tên: Nhận UUID
     shell: blkid -s UUID -o value /dev/{{ diskletter.stdout }}1
     đăng ký: uuidinfo

Tôi không đề cập đến nó trước đây, nhưng tác vụ cuối cùng hoạt động tốt trên một playbook khác HOẶC thậm chí trực tiếp trong SSH trên VM. Lệnh không trả lại bất cứ thứ gì chỉ trong ngữ cảnh thực thi playbook.

Đây là một số thông tin khác về thiết lập của tôi:

ansible-playbook 2.9.27 phiên bản trăn = 2.7.17 Ubuntu 18.04 (nơi cài đặt ansible VÀ máy chủ đích) bộ sưu tập Community.General (phiên bản 3.7.0)

Nếu ai đó có bất kỳ ý tưởng nào về điều này; cảm ơn vì tất cả !

Điểm:1
lá cờ ca

Theo như tôi hiểu về kịch bản và biết từ kinh nghiệm của bản thân, thì hành vi đó dường như là có chủ đích. Hệ điều hành phải được "buộc" đọc lại bảng phân vùng sau khi các thay đổi đã được thực hiện và trước khi một người có thể lấy thông tin thiết bị mới.

Liên kết khác

lá cờ cn
Xin chào, cảm ơn vì câu trả lời; Tôi đã thử sử dụng partprobe hoặc partx để tải lại thông tin đĩa nhưng không thành công: UUID vẫn không khả dụng. Tôi sẽ sử dụng 2 playbooks thực thi thay vì chỉ một
Điểm:0
lá cờ cn

Ok cuối cùng tôi đã tìm ra giải pháp.

Vấn đề là khi phân vùng không được gắn kết, nó không có UUID. Khi làm việc với các phân vùng dữ liệu như xfs, extX, v.v... Phân vùng này được gắn trực tiếp bởi hệ thống, do đó, phân vùng này đang nhận được một UUID trực tiếp.

Đó không phải là trường hợp của phân vùng trao đổi, trước tiên bạn phải kích hoạt nó bằng mkswap cho hệ thống có thể gắn phân vùng Hoán đổi.

Đó là lý do tại sao tôi có thể nhận được giá trị UUID trong lần thực thi playbook thứ hai : Tôi đã đạt đến giá trị UUID trước khi bật tính năng hoán đổi trong playbook. Vì vậy, phân vùng không được gắn kết và không có UUID.

Nếu nó có thể giúp ai đó

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.