Trebuie să creez o nouă partiție pe un disc nou pe un VM. Folosesc modulul separat pentru a crea partiția. Într-o sarcină viitoare (în același playbook), trebuie să folosesc UUID-ul partiției dispozitivului (nu UUID-ul partiției, ci UUID-ul dispozitivului al partiției, prezent de exemplu în /dev/disks/by-uuid/)
Problema este că: nu găsesc o modalitate de a obține UUID-ul partiției într-o sarcină după ce modulul separat a arhivat jobul. Sunt sigur că modulul separat funcționează bine, deoarece partiția există după rulare.
Să aruncăm o privire la ceea ce am încercat:
Crearea partiției cu modulul separat
Relansați faptele cu modulul de configurare (cu și fără filtrare pe ansible_devices) pentru a utiliza ansible_devices.sdX.partitions.sdXY.uuid --> return void
Utilizați valoarea blkid -s UUID -o /dev/sdXY prin modulul shell --> return void
Utilizați ls -l /dev/disk/by-uuid/ | grep sdXY | awk '{print $9}' prin modulul shell --> returnează încă void
Faptul teribil este că: dacă lansez aceeași sarcină (cum ar fi 2, 3 sau 4) într-un alt manual, sunt capabil să obțin rezultate. Dar în același manual al modulului despărțit: nu pot.
Iată manualul meu complet:
---
- gazde: toate
deveni: da
gather_facts: „da”
sarcini:
- nume: Verificați cantitatea reală de schimb
depanare:
var: ansible_swaptotal_mb
failed_when: ansible_swaptotal_mb > 1999
- nume: Adăugați un disc de 2Gb
shell: pwsh ./add_disk_vm.ps1 -vm {{ ansible_hostname }} -diskspace 2
delegate_to: localhost
- nume: Scanează pentru noi discuri
shell: pentru i în $(ls /sys/class/scsi_host/); do echo "- - -" > /sys/class/scsi_host/$i/scan ; Terminat
- nume: Obțineți litera noului disc
shell: 'dmesg | grep „sd\w.*2.00 GiB)$” | grep -o "sd\w" | coada -1'
înregistrare: discletter
- nume: Creați o nouă partiție
comunitate.general.despărțit:
dispozitiv: /dev/{{ diskletter.stdout }}
fs_type: linux-swap
etichetă: gpt
nume: swap
Numărul 1
stare: prezent
înregistrare: despărțit
#aici sarcina cine ar trebui să lucreze, dar nu returnează nimic
- nume: Obțineți UUID
shell: blkid -s UUID -o valoare /dev/{{ diskletter.stdout }}1
înregistrare: uuidinfo
Nu am menționat-o înainte, dar ultima sarcină funcționează bine pe un alt manual SAU chiar direct în SSH pe VM. Comanda nu returnează nimic doar în contextul execuției playbook-ului.
Iată câteva alte informații despre configurația mea:
ansible-playbook 2.9.27
versiunea python = 2.7.17
Ubuntu 18.04 (unde este instalat ansible ȘI serverul țintă)
comunitate.colecție generală (versiunea 3.7.0)
Dacă cineva are idei despre asta; multumesc pentru tot !