Eu tenho que criar uma nova partição em um disco novo em uma VM. Eu uso o módulo parted para criar a partição. Em uma tarefa futura (no mesmo playbook), preciso usar o UUID da partição do dispositivo (não o UUID da partição, mas o UUID do dispositivo da partição, presente por exemplo em /dev/disks/by-uuid/)
O problema é que: não encontro uma maneira de obter o UUID da partição em uma tarefa após o módulo parted ter arquivado o trabalho. Tenho certeza de que o módulo parted funciona bem porque a partição existe após a execução.
Vamos dar uma olhada no que eu tentei:
Creating the partition with the parted module
Re-launch facts with the setup module (with and without filtering on ansible_devices) in order to use the ansible_devices.sdX.partitions.sdXY.uuid --> return void
Use the blkid -s UUID -o value /dev/sdXY throught the shell module --> return void
Use the ls -l /dev/disk/by-uuid/ | grep sdXY | awk '{print $9}' throught the shell module --> still return void
O fato terrível é que: se eu lançar a mesma tarefa (como 2, 3 ou 4) em outro playbook, consigo obter resultados. Mas no mesmo manual do módulo parted: não posso.
Aqui está o meu playbook completo:
---
- hosts: all
become: yes
gather_facts: "yes"
tasks:
- name: Check actual swap quantity
debug:
var: ansible_swaptotal_mb
failed_when: ansible_swaptotal_mb > 1999
- name: Add a 2Gb disk
shell: pwsh ./add_disk_vm.ps1 -vm {{ ansible_hostname }} -diskspace 2
delegate_to: localhost
- name: Scan for new disks
shell: for i in $(ls /sys/class/scsi_host/); do echo "- - -" > /sys/class/scsi_host/$i/scan ; done
- name: Get letter of the new disk
shell: 'dmesg | grep "sd\w.*2.00 GiB)$" | grep -o "sd\w" | tail -1'
register: diskletter
- name: Create new partition
community.general.parted:
device: /dev/{{ diskletter.stdout }}
fs_type: linux-swap
label: gpt
name: swap
number: 1
state: present
register: parted
#here the task who should work, but returning nothing
- name: Get UUID
shell: blkid -s UUID -o value /dev/{{ diskletter.stdout }}1
register: uuidinfo
Eu não mencionei isso antes, mas a última tarefa funciona bem em outro playbook OU até mesmo diretamente no SSH na VM. O comando não retorna nada apenas durante o contexto de execução do playbook.
Aqui estão algumas outras informações sobre minha configuração:
ansible-playbook 2.9.27 python version = 2.7.17 Ubuntu 18.04 (onde o ansible está instalado E o servidor de destino) community.general collection (versão 3.7.0)
Se alguém tiver alguma ideia sobre isso; obrigado por tudo!