Puncte:2

Nu se poate obține UUID-ul partiției de swap după ce ați creat-o cu modulul Parted ansible

drapel cn

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 !

Puncte:1
drapel ca

Din câte înțeleg scenariul și știu din proprie experiență, comportamentul pare a fi intenționat. Sistemul de operare trebuie să fie „forțat” să recitească tabelul de partiții odată ce modificările au fost făcute și înainte de a putea obține informații despre noul dispozitiv.

Link-uri suplimentare

drapel cn
Salut, multumesc pentru raspuns; Am încercat să folosesc partprobe sau partx pentru a reîncărca informațiile de pe disc, dar fără succes: UUID-ul este încă indisponibil. Voi folosi 2 playbook-uri de execuție în loc de doar unul
Puncte:0
drapel cn

Ok, in sfarsit am gasit solutia.

Problema este că atunci când partiția nu este montată, nu are UUID. Când lucrați cu partiții de date precum xfs, extX, etc... Partiția este montată direct de sistem, astfel încât partiția primește direct un UUID.

Nu este cazul unei partiții swap, trebuie mai întâi să o activați cu mkswap pentru sistem poate monta partiția Swap.

De aceea am reușit să obțin valoarea UUID într-o a doua execuție a manualului de joc: am atins valoarea UUID-ului înainte de a activa schimbarea în playbook. Deci partiția nu a fost montată și nu are UUID.

Daca poate ajuta pe cineva

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.