Puncte:0

ansible înregistrarea variabilei iese variabilă nedefinită

drapel bo

Încerc să fac acest manual pentru o jumătate de zi. Folosesc modulul stat pentru a verifica sha1sum al fișierului și, dacă nu este egal cu cel de-al doilea fișier, ar trebui să înlocuiască fișierul corect. Dar în timpul înregistrării unor variabile, rezultatul spune că variabilele sunt nedefinite Ce fac greșit ?

---
- gazde: toate
  remote_user: root
  sarcini:
    - nume: obține suma fișierului
      stat:
        calea: /home/roundcube/config.php
        checksum_algorithm: sha1
        get_checksum: da
      registru: suma      
      
      stat:
        calea: /home/archive/config.php
        checksum_algorithm: sha1
        get_checksum: da
      registru: suma2
      
    - nume: rezultat
      ansible.builtin.copy:
        src: /home/archive/config.php
        dest: /home/roundcube/config.php
      când: sum.stat.checksum != sum2.stat.checksum
drapel br
Cele două sarcini *stat* sunt redundante. Modulul [*copy*](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html#ansible-builtin-copy-copy-files-to-remote-locations) compară *checksum* a *src* și *dest* în mod implicit. Citând din [*checksum*](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html#parameter-checksum): ``'... Dacă nu este furnizat, ansible va folosi suma de control calculată locală a fișierului src.'``
Puncte:1
drapel in

Îți lipsește cratima care definește a doua statistică ca sarcină.

---
- gazde: toate
  remote_user: root
  sarcini:
    - nume: obține suma fișierului
      stat:
        calea: /home/roundcube/config.php
        checksum_algorithm: sha1
        get_checksum: da
      registru: suma      
      
    - stat:
        calea: /home/archive/config.php
        checksum_algorithm: sha1
        get_checksum: da
      registru: suma2
      
    - nume: rezultat
      ansible.builtin.copy:
        src: /home/archive/config.php
        dest: /home/roundcube/config.php
        remote_src: da
      când: sum.stat.checksum != sum2.stat.checksum

Rețineți că, de asemenea, vă lipsește remote_src: da parametrul în sarcina de copiere. Fără el, Ansible presupune că fișierul se află pe mașina dvs. locală, nu pe gazda de la distanță.

Zeitounator avatar
drapel fr
Vă rugăm să rețineți că toate aceste verificări sunt total inutile, deoarece ansible va copia fișierul numai dacă sursa (locală sau la distanță) și destinația sunt de fapt diferite. În caz contrar, va raporta pur și simplu „OK”.
drapel bo
Multumesc Gerald Mi-ai făcut ziua, acum funcționează corect. A fost atât de simplu.
drapel in
Grozav, dar ține cont de sfaturile lui Zeitounator și Vladimir. Aceste verificări SUNT de prisos, Ansible va face din nou aceleași verificări în sarcina „copiere”.

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.