Ansible Copy

Ansible fornisce la funzionalità di copiare i file e le directory con l’aiuto dei moduli copy e fetch. Il modulo copy è versatile.

Il modulo copy è usato per copiare file e cartelle dalla macchina locale ai server remoti. E il modulo fetch per copiare i dati dalla macchina remota alla macchina locale.

Se vuoi copiare i file dopo averli sostituiti con variabili, come i file di configurazione con cambiamenti di IP, o puoi usare anche il modulo template. Puoi eseguire molti compiti complicati con questo modulo.

Copiare file da locale a remoto

Il modulo di copia è usato per controllare il file impostato nel parametro src, sulla macchina locale. E poi, copierà i dati nel percorso della macchina remota specificato nel destpath.

Nell’esempio seguente, copieremo il file sample.txt nella directory home della macchina locale, nella destinazione è la directory /tmp sul server remoto. Finché non specifichiamo alcun permesso per il file, il permesso predefinito per il file remoto è impostato come -rw-rw-r-(0664).

Caso 1: se il file è già presente sul server remoto, ma il contenuto del file sorgente è diverso, allora il file di destinazione sarà modificato. Puoi controllare questo impostando il parametro force. Il default è impostato su yes. Quindi modifica il file per impostazione predefinita.

Se non vuoi che il file venga modificato, se il file di origine è diverso, allora puoi impostare No. Il seguente compito copierà il file se il file non esiste sul server remoto.

Caso 2: Se il file non è stato trovato sulla macchina locale, Ansible lancia un errore.

Per esempio: fatal: : FAILED!=> {“changed”: false, “failed”: true, “msg”: “unable to find ‘~/sample.txt’ in expected paths.”}

Copiare directory da locale a remoto

Puoi anche copiare cartelle o directory usando il modulo Ansible copy. Se il percorso ‘src’ è una directory, allora sarà copiato ricorsivamente. Oppure verrà copiata l’intera directory.

Ci sono due diverse varianti per questo compito. A seconda che tu abbia o meno il carattere ‘/’ all’estremità del percorso ‘src’.

Il primo metodo creerà una directory sul server remoto, con il nome impostato nel parametro src. Poi, copierà e incollerà il contenuto della cartella sorgente in quella directory.

Se vuoi questo comportamento, allora non dare la ‘/’ dopo il percorso nel parametro src.

Nell’esempio seguente, creerà prima una directory chiamata copy_dir_ex nella /tmp del server remoto.

Copiare file tra directory sulla macchina remota

Ansible copy ti permette di copiare i file da una directory all’altra sulla stessa macchina remota. Ma questo è solo per i file, non per le directory. Puoi usare il parametro remote_src per far sapere ad Ansible le tue intenzioni.

Il codice seguente copierà /tmp/test.txt nella directory home dell’utente (/home//).