Мне нужно создать новый раздел на новом диске на виртуальной машине. Я использую модуль parted для создания раздела. В будущей задаче (в том же плейбуке) мне нужно использовать UUID раздела устройства (не UUID раздела, а UUID устройства раздела, присутствующий, например, в /dev/disks/by-uuid/)
Проблема в том, что: я не нахожу способ получить UUID раздела в задаче после того, как модуль parted заархивировал задание. Я уверен, что модуль parted работает нормально, потому что раздел существует после запуска.
Давайте посмотрим, что я пробовал:
Создание раздела с помощью модуля parted
Перезапустите факты с модулем настройки (с фильтрацией и без нее на ansible_devices), чтобы использовать ansible_devices.sdX.partitions.sdXY.uuid --> return void
Используйте значение blkid -s UUID -o /dev/sdXY через модуль оболочки --> return void
Используйте команду ls -l /dev/disk/by-uuid/ | grep sdXY | awk '{print $9}' через модуль оболочки --> все равно возвращает void
Ужасный факт заключается в том, что если я запускаю ту же задачу (например, 2, 3 или 4) в другой книге, я могу получить результаты. Но в той же пьесе модуля parted: я не могу.
Вот мой полный сборник игр:
---
- хозяева: все
стать: да
собрать_факты: "да"
задачи:
- имя: Проверить фактическое количество свопов
отлаживать:
переменная: ansible_swaptotal_mb
failed_when: ansible_swaptotal_mb > 1999
- имя: Добавить диск 2Gb
оболочка: pwsh ./add_disk_vm.ps1 -vm {{ ansible_hostname }} -diskspace 2
делегат_к: локальный
- название: Поиск новых дисков
оболочка: для i в $(ls /sys/class/scsi_host/); do echo "- - -" > /sys/class/scsi_host/$i/scan ; сделано
- name: Получить букву нового диска
оболочка: 'dmesg | grep "sd\w.*2.00 GiB)$" | grep -o "sd\w" | хвост -1'
регистр: дисклеттер
- имя: Создать новый раздел
сообщество.general.parted:
устройство: /dev/{{ diskletter.stdout }}
fs_type: linux-своп
метка: gpt
имя: своп
номер 1
состояние: присутствует
регистрация: расстались
#вот задача, которая должна работать, но ничего не возвращает
- имя: Получить UUID
оболочка: blkid -s UUID -o значение /dev/{{ diskletter.stdout }}1
зарегистрироваться: uuidinfo
Я не упоминал об этом раньше, но последняя задача отлично работает на другом плейбуке ИЛИ даже непосредственно в SSH на виртуальной машине. Команда ничего не возвращает только в контексте выполнения плейбука.
Вот еще немного информации о моей настройке:
ansible-playbook 2.9.27
версия питона = 2.7.17
Ubuntu 18.04 (где установлен ansible И целевой сервер)
Коллекция community.general (версия 3.7.0)
Если у кого-то есть идеи по этому поводу; Спасибо за все !