Ansible Copy

Ansible tillhandahåller funktionalitet för att kopiera filer och kataloger med hjälp av moduler för kopiering och hämtning. Kopieringsmodulen är mångsidig.

Kopieringsmodulen används för att kopiera filer och mappar från den lokala maskinen till fjärrservrarna. Och hämta-modulen för att kopiera data från fjärrmaskinen till den lokala maskinen.

Om du vill kopiera filer efter att ha ersatt med variabler, t.ex. konfigurationsfiler med IP-ändringar, eller så kan du använda mallmodulen också. Du kan utföra många komplicerade uppgifter med den här modulen.

Kopiering av filer från lokal till fjärr

Kopieringsmodulen används för att kontrollera den fil som anges i src-parametern, på den lokala maskinen. Därefter kopieras data till den fjärrmaskinsökväg som anges i destpath.

I nedanstående exempel kopierar vi filen sample.txt i hemkatalogen på den lokala maskinen till destinationen /tmp-katalogen på fjärrservern. Så länge vi inte anger någon behörighet för filen är standardbehörigheten för fjärrfilen inställd som -rw-rw-r-(0664).

Fall 1: Om filen redan finns på fjärrservern, men källfilens innehåll är annorlunda, kommer destinationsfilen att ändras. Du kan kontrollera detta genom att ställa in parametern force. Standardvärdet är inställt på yes. Så den ändrar filen som standard.

Om du inte vill att filen ska ändras, om källfilen är annorlunda, kan du ställa in den på No. Följande uppgift kopierar filen om filen inte finns på fjärrservern.

Fall 2: Om filen inte hittades på den lokala maskinen, kastar Ansible ett fel.

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

Kopiering av kataloger från lokal till fjärr

Du kan också kopiera mappar eller kataloger med hjälp av Ansible copy-modulen. Om sökvägen ”src” är en katalog kopieras den rekursivt. Eller så kopieras hela katalogen.

Det finns två olika varianter för den här uppgiften. Beroende på om du har tecknet ”/” i slutpunkten av ”src”-sökvägen eller inte.

Den första metoden skapar en katalog på fjärrservern, med det namn som anges i src-parametern. Sedan kommer den att kopiera och klistra in innehållet i källmappen i den katalogen.

Om du vill ha det här beteendet så ger den inte ”/” efter sökvägen i src-parametern.

I exemplet nedan skapas först en katalog som heter copy_dir_ex i /tmp på fjärrservern.

Kopiering av filer mellan kataloger på en fjärrmaskin

Ansible copy gör det möjligt att kopiera filerna från en katalog till en annan på samma fjärrmaskin. Men detta gäller endast för filer, inte för kataloger. Du kan använda parametern remote_src för att låta Ansible veta dina avsikter.

Med nedanstående kod kopieras /tmp/test.txt till användarens hemkatalog (/home//).