Ci sono momenti in cui potremmo dover copiare più file da un dispositivo a un altro. Ansible fornisce anche vari moduli per questo. Questi moduli ci consentono di copiare più file contemporaneamente e di inviarli su dispositivi remoti. Questo ci porta sull'argomento di questo articolo: il modulo di copia Ansible, che implementeremo in questa guida.
Copia più file
Nel caso in cui vogliamo trasferire più file, dobbiamo creare un playbook con numerose attività per ogni copia. Sebbene ciò possa risolvere il problema, non è molto efficiente nel tempo e può diventare abbastanza noioso. Di conseguenza, avremmo un grande playbook con più possibilità di errori umani. Sarebbe anche più difficile eseguire il debug. Fortunatamente, possiamo usare molti altri approcci per risolvere questo problema che sono molto più convenienti e salvare le nostre risorse.
Usando i loop
In generale, Ansible è un semplice strumento di automazione che non richiede una conoscenza di programmazione completa. Tuttavia, se hai il know-how di base di come funziona un codice sorgente, può essere davvero utile in Ansible e darti una visione più profonda per risolvere vari problemi che incontri di volta in volta.
Un ciclo nella programmazione del computer è un insieme di istruzioni che indica al sistema di ripetere una determinata serie di comandi per una quantità di volte specificata o fino a quando non viene soddisfatta una determinata condizione.
Esempi
-Nome: copia tutti i file in myconf/
copia:
src: elementi
dest:/etc/myapp/
Proprietario: radice
Gruppo: radice
Modalità: u = rw, g = rw, o = r
With_fileglob:
-"Myconf /*"
Esegui il playbook usando questo comando nel terminale Linux.
libro di prova Ansible-Playbook.YML
Lo script sopra copia "MyConf/" insieme a tutti i suoi contenuti alla directory di destinazione/etc/myapp/sull'host remoto. Il comando Copy viene emesso per il trasferimento del contenuto copiato. With_fileglob è il ciclo che funziona fino a quando i file non sono completamente copiati nell'host remoto.
Questo approccio funziona quando ci sono più file da trasferire alla stessa directory.
Copia della directory
Questo è un altro approccio per inviare copie di file all'host remoto. Qui, copiamo l'intera directory contenente i file che dobbiamo trasferirli e inviarli al nodo remoto. Potrebbe richiedere un po 'di tempo in quanto bisogna prima spostare tutti i file in una determinata directory e quindi copiare del tutto la directory. Un esempio lo dimostra.
-Nome: Copia della directory sul dispositivo remoto
copia:
src: myconfig/
dest: ecc/myfolder
Proprietario: radice
Gruppo: radice
Modalità: u = rw, g = rw, o = r
Lo script sopra copia la directory myconfig/su un dispositivo remoto con destinazione/etc/myfolder. È un trasferimento tra directory. Il segmento "Modalità" garantisce semplicemente che gli oggetti del file system siano creati con le autorizzazioni corrette. Queste modalità possono essere visualizzate nella pagina principale del modulo in "Copia Parametri del modulo".
Copia di file in più destinazioni remote
Per un'ulteriore efficienza nei file di più file, possiamo utilizzare un loop per inviare file a più destinazioni del tutto. Usiamo il meccanismo ad anello per inviare 4 utility all'host remoto in una volta.
-Nome: copia più file in più destinazioni
copia:
src: item.src
dest: item.dest
Proprietario: radice
Gruppo: radice
Modalità: u = rw, g = rw, o = r
con i vicoli:
-src: setup1.conf, dest:/etc/setup1f/
-src: setup2.conf, dest:/etc/setup2f/
-src: setup3.conf, dest:/etc/setup3f/
-src: setup4.conf, dest:/etc/setup4f/
Il codice sopra copia i file di configurazione di 4 utility dal proprietario root all'host remoto nella directory /etc /setup. L'oggetto.src ”indica che più di 1 articolo viene copiato dalla macchina di destinazione.
Copia i file da una destinazione a un'altra sull'host remoto
Con Ansible, possiamo anche copiare file da una destinazione all'altra sull'host remoto. Sebbene questa procedura sia valida per i file, non funziona per le directory. Di seguito è visualizzato un piccolo script che trasferisce un file di test da cartella1 a cartella2.
-Nome: trasferimento di file su host remoto
copia:
SRC: $ Home/Folder1/Test_File
remote_src: vero
dest: $ home/cartella2/test_file
Crea un file di backup presso l'host remoto prima di copiare
Ci sono momenti in cui possiamo copiare un altro file per errore. Un rimedio per evitare tali problemi è creare un file di backup sul server remoto.
Il modulo di copia Ansible viene fornito con un parametro "backup" per contrastare proprio questo. Nel caso in cui ci sia un file remoto e non è uguale al file copiato, verrà creato un nuovo file. La differenza è che il nuovo file verrà aggiunto al timestamp corrente e al nome del file originale. Per impostazione predefinita, il parametro di backup ha il suo valore impostato come "no".
Ad esempio, il seguente script crea un backup di "MyScript.txt "nella directory /ABC dell'host remoto. Sarà nominato qualcosa come 'MyScript.TXT.8565.2022-03-17@20: 51: 18 '.
- Host: blocchi
compiti:
- Nome: Esempio di backup del file di copia ansible
copia:
src: ~/myscript.TXT
dest: /ABC
Backup: Sì
Conclusione
In questo articolo, abbiamo superato il modulo di copia e i suoi parametri. Abbiamo visto come potremmo utilizzare più approcci per trasferire più file dal locale all'host remoto e manipolare anche alcuni aspetti come la modifica della directory dei file copiati in remoto o il trasferimento di più file in più destinazioni.
Questo era tutto per il modulo di copia in Ansible insieme a procedure di copia per più file tra i dispositivi. Spero che qualsiasi confusione che avevi riguardo al meccanismo di copia Ansible sia cancellata dopo aver attraversato questo articolo.