Hvordan kopiere flere filer i Ansible

Hvordan kopiere flere filer i Ansible
Ansible er et kjipt automatiseringsverktøy som muliggjør automatisering av forskjellige funksjoner. Det gir full kontroll til brukeren på enhetene sine, enten de er lokale eller eksterne. Det leveres syltetøy med flere moduler (rundt 750 - 800 av dem), som alle viser seg å være ganske gunstige for brukerne. Ansible Playbook er enkel å skrive, og det hjelper med å utføre pliktene som er tildelt den som å sette tid for en viss jobb eller ta en pause visse aktiviteter osv.

Det er tider hvor vi kanskje må kopiere flere filer fra en enhet til en annen. Ansible gir også forskjellige moduler for dette. Disse modulene gjør oss i stand til å kopiere flere filer samtidig og sende dem over eksterne enheter. Det bringer oss til emnet for denne artikkelen: Ansible Copy -modulen, som vi vil implementere i denne guiden.

Kopier flere filer

I tilfelle vi ønsker å overføre flere filer, må vi lage en spillbok med mange oppgaver for hver kopi. Selv om dette kan løse problemet, er det ikke veldig tidseffektivt og kan bli ganske kjedelig. Følgelig ville vi ha en stor spillbok med flere sjanser for menneskelige feil. Det ville også være vanskeligere å feilsøke. Heldigvis kan vi bruke flere andre tilnærminger for å løse dette problemet som er mye mer praktisk og spare ressursene våre.

Ved hjelp av løkker

Generelt er Ansible et enkelt automatiseringsverktøy som ikke krever fullverdig programmeringskunnskap. Imidlertid, hvis du har den grunnleggende kunnskapen om hvordan en kildekode fungerer, kan den være veldig nyttig i Ansible og gi deg en dypere innsikt for å løse forskjellige problemer du oppstår fra tid til annen.

En sløyfe i dataprogrammering er et sett med instruksjoner som forteller systemet om å gjenta et visst sett med kommandoer i en spesifisert mengde ganger eller til en viss tilstand er oppfylt.

Eksempler

-Navn: Kopier alle filer i MyConf/
kopiere:
src: elementer
dest:/etc/myapp/
Eier: Root
Gruppe: rot
modus: u = rw, g = rw, o = r
Med_fileglob:
-“Myconf /*”

Kjør spillboken ved å bruke denne kommandoen i Linux -terminalen.

Ansible-Playbook Testbook.yml

Skriptet ovenfor kopierer “MyConf/” sammen med alt innholdet til destinasjonskatalogen/etc/myapp/på den eksterne verten. Kopikommandoen er utstedt for overføring av kopiert innhold. Med_fileglob er løkken som kjører til filene er fullstendig kopiert til den eksterne verten.

Denne tilnærmingen fungerer når det er flere filer som skal overføres til den samme katalogen.

Katalogkopi

Dette er en annen tilnærming for å sende filkopier til den eksterne verten. Her kopierer vi hele katalogen som inneholder filene vi trenger å overføre og sende den til den eksterne noden. Det kan være litt tidkrevende ettersom man først må flytte alle filene til en viss katalog og deretter kopiere katalogen helt. Et eksempel demonstrerer dette.

-Navn: Katalogkopi til ekstern enhet
kopiere:
SRC: Myconfig/
dest: etc/myfolder
Eier: Root
Gruppe: rot
modus: u = rw, g = rw, o = r

Skriptet ovenfor kopierer katalogen MyConfig/til en ekstern enhet med destinasjon/etc/MyFolder. Det er en interkatalogoverføring. "Mode" -segmentet sikrer ganske enkelt at objektene til filsystemet opprettes med riktige tillatelser. Disse modusene kan vises på modulens hovedside under "Copy Module Parameters".

Kopiere filer til flere eksterne destinasjoner

For ytterligere effektivitet i kopiering av flere filer, kan vi bruke en loop for å sende filer til flere destinasjoner helt. La oss bruke sløyfemekanismen for å sende 4 verktøy til den eksterne verten på en gang.

-Navn: Kopiere flere filer til flere destinasjoner
kopiere:
src: element.src
dest: vare.dest
Eier: Root
Gruppe: rot
modus: u = rw, g = rw, o = r
med elementer:
-SRC: Setup1.konf, dest:/etc/setup1f/
-SRC: Setup2.Conf, dest:/etc/setup2f/
-SRC: Setup3.Conf, dest:/etc/setup3f/
-SRC: Setup4.Conf, dest:/etc/setup4f/

Koden over kopierer installasjonsfilene til 4 verktøy fra rotseieren til den eksterne verten på /etc /setup -katalogen. Gjenstanden.SRC ”indikerer at mer enn 1 vare kopieres fra målmaskinen.

Kopier filer fra en destinasjon til en annen på den eksterne verten

Med Ansible kan vi også kopiere filer fra en destinasjon til en annen på den eksterne verten. Selv om denne prosedyren er gyldig for filer, fungerer den ikke for kataloger. Et lite skript som overfører en testfil fra Folder1 til Folder2 vises nedenfor.

-Navn: Filoverføring på ekstern vert
kopiere:
src: $ home/mappe1/test_file
Remote_src: True
dest: $ home/mappe2/test_file

Opprett en sikkerhetskopiering på den eksterne verten før du kopierer

Det er tider hvor vi kan kopiere en annen fil ved en feiltakelse. Et middel for å unngå slike problemer er å opprette en sikkerhetskopifil på den eksterne serveren.

Ansible Copy -modulen kommer med en "backup" -parameter for å motvirke nettopp det. I tilfelle en ekstern fil er der og ikke er den samme som den kopierte filen, vil det opprettes en ny fil. Forskjellen er at den nye filen vil bli lagt ved gjeldende tidsstempel og navnet på den opprinnelige filen. Som standard har sikkerhetskopiparameteren sin verdier som 'nei'.

For eksempel oppretter følgende skript en sikkerhetskopi av “MyScript.txt ”i /ABC -katalogen til den eksterne verten. Det vil bli kåret til noe som 'myscript.tekst.8565.2022-03-17@20: 51: 18 '.

- Verter: blokker
oppgaver:
- Navn: Ansible Copy File Backup Eksempel
kopiere:
SRC: ~/MyScript.tekst
dest: /abc
Sikkerhetskopiering: Ja

Konklusjon

I denne artikkelen gikk vi over kopimodulen og dens parametere. Vi så hvordan vi kunne bruke flere tilnærminger til å overføre flere filer fra lokale til den eksterne verten og også manipulere visse aspekter som å endre katalogen til kopierte filer eksternt eller overføre flere filer til flere destinasjoner.

Det var alt for kopimodulen i Ansible sammen med kopieringsprosedyrer for flere filer på tvers av enheter. Forhåpentligvis blir enhver forvirring du hadde angående Ansible Copy -mekanismen, ryddet etter å ha gått gjennom denne artikkelen.