Ansible Copy
Ansible oferă funcționalitatea de copiere a fișierelor și directoarelor cu ajutorul modulelor copy și fetch. Modulul de copiere este versatil.
Modulul de copiere este utilizat pentru a copia fișiere și foldere de pe mașina locală pe serverele de la distanță. Iar modulul fetch pentru a copia date de pe mașina la distanță pe mașina locală.
Dacă doriți să copiați fișiere după înlocuirea cu variabile, cum ar fi fișierele de configurare cu modificări de IP, sau puteți utiliza și modulul șablon. Puteți efectua o mulțime de sarcini complicate cu acest modul.
Copierea fișierelor de la local la distanță
Modulul de copiere este utilizat pentru a verifica fișierul setat în parametrul src, pe mașina locală. Și apoi, va copia datele în calea mașinii de la distanță specificată în destpath.
În exemplul de mai jos, vom copia fișierul sample.txt din directorul home al mașinii locale, la destinație este directorul /tmp de pe serverul de la distanță. atâta timp cât nu specificăm nicio permisiune pentru fișier, permisiunea implicită pentru fișierul de la distanță este setată ca -rw-rw-r-r-(0664).
Cazul 1: Dacă fișierul este deja prezent pe serverul de la distanță, dar conținutul fișierului sursă este diferit, atunci fișierul de destinație va fi modificat. Puteți controla acest lucru prin setarea parametrului force. Valoarea implicită este setată la yes. Deci modifică fișierul în mod implicit.
Dacă nu doriți ca fișierul să fie modificat, dacă fișierul sursă este diferit, atunci îl puteți seta la Nu. Următoarea sarcină va copia fișierul dacă acesta nu există pe serverul de la distanță.
Cazul 2: Dacă fișierul nu a fost găsit pe mașina locală, Ansible aruncă o eroare.
De exemplu: fatal: : FAILED!=> {„changed”: false, „failed”: true, „msg”: „unable to find ‘~/sample.txt’ in expected paths.”}
Copierea directoarelor de la local la distanță
De asemenea, puteți copia foldere sau directoare folosind modulul Ansible copy. Dacă calea „src” este un director, atunci acesta va fi copiat recursiv. Sau întregul director va fi copiat.
Există două variante diferite pentru această sarcină. În funcție de faptul că aveți sau nu caracterul ‘/’ la punctul final al căii ‘src’.
Prima metodă va crea un director pe serverul de la distanță, cu numele stabilit în parametrul src. Apoi, ea va copia și lipi conținutul folderului sursă în acel director.
Dacă doriți acest comportament, atunci nu se dă caracterul ‘/’ după calea din parametrul src.
În exemplul de mai jos, se va crea mai întâi un director numit copy_dir_ex în /tmp al serverului la distanță.
Copierea fișierelor între directoare pe o mașină la distanță
Copierea instabilă vă permite să copiați fișierele dintr-un director în altul pe aceeași mașină la distanță. Dar acest lucru este valabil numai pentru fișiere, nu și pentru directoare. Puteți folosi parametrul remote_src pentru a anunța Ansible despre intențiile dumneavoastră.
Codul de mai jos va copia /tmp/test.txt în directorul de domiciliu al utilizatorului (/home//).
.