Ansible Copy

Ansible giver mulighed for at kopiere filer og mapper ved hjælp af copy- og fetch-moduler. Kopimodulet er alsidigt.

Kopimodulet bruges til at kopiere filer og mapper fra den lokale maskine til fjernservere. Og hente-modulet til at kopiere data fra fjernmaskinen til den lokale maskine.

Hvis du ønsker at kopiere filer efter substitution med variabler, f.eks. konfigurationsfiler med IP-ændringer, eller du kan også bruge skabelonmodulet. Du kan udføre en masse komplicerede opgaver med dette modul.

Kopiering af filer fra lokal til ekstern

Kopieringsmodulet bruges til at kontrollere den fil, der er angivet i src-parameteren, på den lokale maskine. Og derefter kopierer det dataene til den fjernmaskinesti, der er angivet i destpath.

I nedenstående eksempel kopierer vi filen sample.txt i home-mappen på den lokale maskine til destinationen er /tmp-mappen på fjernserveren. Så længe vi ikke angiver nogen tilladelse til filen, er standardtilladelsen til fjernfilen indstillet som -rw-rw-r-r-(0664).

Fald 1: Hvis filen allerede findes på fjernserveren, men kildefilens indhold er anderledes, vil destinationsfilen blive ændret. Du kan kontrollere dette ved at indstille force-parameteren. Standardværdien er indstillet til yes. Så den ændrer filen som standard.

Hvis du ikke ønsker, at filen skal ændres, hvis kildefilen er anderledes, kan du indstille den til No. Følgende opgave vil kopiere filen, hvis filen ikke findes på fjernserveren.

Fald 2: Hvis filen ikke findes på den lokale maskine, kaster Ansible en fejl.

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

Kopiering af mapper fra lokal til ekstern

Du kan også kopiere mapper eller mapper ved hjælp af Ansible-kopieringsmodulet. Hvis ‘src’-stien er en mappe, kopieres den rekursivt. Eller hele mappen vil blive kopieret.

Der er to forskellige variationer for denne opgave. Afhængigt af, om du har ‘/’-tegnet i slutpunktet af ‘src’-stien eller ej.

Den første metode opretter en mappe på fjernserveren med det navn, der er angivet i src-parameteren. Derefter vil den kopiere og indsætte indholdet af kildemappen i denne mappe.

Hvis du ønsker denne adfærd, så giver den ikke ‘/’ efter stien i src-parameteren.

I nedenstående eksempel vil den først oprette en mappe ved navn copy_dir_ex i /tmp på fjernserveren.

Kopiering af filer mellem mapper på fjernmaskinen

Ansible copy giver dig mulighed for at kopiere filerne fra en mappe til en anden på den samme fjernmaskine. Men det gælder kun for filer, ikke for mapper. Du kan bruge parameteren remote_src til at lade Ansible kende dine intentioner.

Den nedenstående kode kopierer /tmp/test.txt til brugerens hjemmemappe (/home//).