Ansible er et av de beste automatiseringsverktøyene som er tilgjengelige, og tilbyr enkle, intuitive og kraftige verktøy for å utføre automatiseringsoppgaver i den moderne verden.
For de fleste automatiseringsoppgaver må du lage kataloger, spesielt når du installerer forskjellige verktøy og applikasjoner, sikkerhetskopiering og gjenoppretter. Selv om du kan utføre disse oppgavene ved hjelp av et automatisert skript, gir Ansible bedre funksjonalitet, slik at du kan lage kataloger i spesifiserte verter.
Denne opplæringen viser deg hvordan du bruker Ansible -filmodulen til å opprette, fjerne og endre katalogtillatelser for spesifiserte verter.
Hvordan lage en katalog i Ansible
En av følgende metoder kan brukes til å lage en katalog i Ansible:
For å opprette en katalog i Ansible ved hjelp av kommandomodulen, skriv inn kommandoen vist nedenfor:
$ ansible all -m command -a "mkdir ~/backups"
Etter å ha lagt inn kommandoen ovenfor, bør du skaffe utgangen som er vist nedenfor:
Skriv inn passord for nøkkel '/Hjem/bruker/.ssh/id_rsa ':
[Advarsel]: Vurder å bruke filmodulen med State = Directory i stedet for å kjøre 'MkDir'. Hvis du trenger å bruke kommando fordi filen er utilstrekkelig, kan du legge til 'advare: falsk' til denne kommandooppgaven eller sette 'command_warnings = falsk' i Ansible.CFG for å bli kvitt denne meldingen.
35.222.210.12 | Endret | RC = 0 >>
Kontroller at Ansible -verten din varelager i/etc/Ansible/verter inneholder riktig informasjon om dine eksterne verter.
Selv om kommandomodulen er enkel å bruke på en enkelt Ansible -vert, blir den veldig ineffektiv når du arbeider med flere verter med forskjellige kataloger og oppgaver.
For å motvirke denne ulempen, vil vi bruke Ansible -filmodulen og bygge en spillbok som inneholder vertene som vi ønsker å bruke og katalogene vi ønsker å lage.
MERK: Filmodulen kan også brukes som en enkelt kommando i Ansible, men den fungerer omtrent som kommandomodulen.
For å bruke en Ansible Playbook, oppretter du en YAML -fil og skriver inn følgende oppføringer for å opprette en katalog:
- Verter: Alle oppgaver:
- Navn: Ansible File Module Create Directory
fil:
Sti: ~/sikkerhetskopier
Tilstand: Katalog
Lagre filen og bruk Ansible-Playbook for å lage katalogene:
Ansible-Playbook Mkdir.yml
Dette skal produsere en utdata som den nedenfor, noe som indikerer at handlingene ble utført med hell ved å bruke den spesifiserte Playbook -filen.
Spill alt] ********************************************** ******************************************************** *************
Oppgave [Samling fakta] *************************************************** ******************************************************** **
Skriv inn passord for nøkkel '/Hjem/bruker/.ssh/id_rsa ':
OK: [35.222.210.12]
Oppgave [Ansible File Module Create Directory] ********************************************** ************************************
OK: [35.222.210.12]
Spill Recap **************************************************** ******************************************************** ***********
35.222.210.12: OK = 2 endret = 0 Utilgjengelig = 0 mislyktes = 0 hoppet over = 0 reddet = 0 ignorert = 0
Hvordan lage flere kataloger med elementer
Ansible playbooks lar deg også lage flere kataloger ved hjelp av med_items -setningen i YAML -filen.
For å lage sikkerhetskopier for de tre tjenestene, MySQL, Repository og Config, kan du for eksempel bygge oppgaven som vises i YAML -filen nedenfor:
- Verter: Alle oppgaver:
- Navn: Ansible Lag flere kataloger med_items
fil:
Sti: ~/backups/item
Tilstand: Katalog
med_items:
- 'mysql'
- 'oppbevaringssted'
- 'Config'
Lagre filen ovenfor og kjør den med Ansible-Playbook.
$ Ansible-Playbook MKDIR_MULTI.YML -spill [alle] *************************************************** ******************************************************** ******************************************************** ******************************************************** ***
Oppgave [Samling fakta] *************************************************** ******************************************************** ******************************************************** *********************************************
Skriv inn passord for nøkkel '/Hjem/bruker/.ssh/id_rsa ':
OK: [35.222.210.12]
Oppgave [Ansible Lag flere kataloger med_items] ********************************************** ******************************************************** ******************************************************** *************
endret: [35.222.210.12] => (vare = mysql)
endret: [35.222.210.12] => (vare = depot)
endret: [35.222.210.12] => (vare = konfigurasjon)
Spill Recap **************************************************** ******************************************************** ******************************************************** ********************************************************
35.222.210.12: OK = 2 endret = 1 Utilgjengelig = 0 mislyktes = 0 hoppet over = 0 reddet = 0 ignorert = 0
Ovennevnte spillbok skal lage flere kataloger, for eksempel ~/backups/mysql, ~/backups/repository, og ~/backups/config.
$ ls -la
Kataloglisteutgangen er som vist nedenfor:
Totalt 0
DRWXRWXR-X. 5 Debian Debian 51. mars 6 17:26 .
DRWX------. 6 Debian Debian 117 mars 6 17: 26 ..
DRWXRWXR-X. 2 Debian Debian 6. mars 6 17:26 Konfigurasjon
DRWXRWXR-X. 2 Debian Debian 6. mars 6 17:26 mysql
DRWXRWXR-X. 2 Debian Debian 6. mars 6 17:26 depot
Hvordan sette tillatelser for en katalog
Ansible lar deg spesifisere tillatelser for en katalog ved hjelp av modusdirektivet. Tenk på følgende spillbok, som oppretter en katalog og setter tillatelser:
- Verter: Alle
oppgaver:
- Navn: Ansible Opprett katalog og angi tillatelser
fil:
Sti: /sikkerhetskopier
Tilstand: Katalog
modus: "u = rw, g = wx, o = rwx"
Bli: Ja
I oppføringen ovenfor opprettet vi en katalog i /. Vi trengte også å bli rot, derav bli: ja inngang.
$ Ansible-Playbook-tillatelse.YML -spill [alle] *************************************************** ******************************************************** ******************************************************** ******************************************************** ***
Oppgave [Samling fakta] *************************************************** ******************************************************** ******************************************************** *********************************************
Skriv inn passord for nøkkel '/Hjem/bruker/.ssh/id_rsa ':
OK: [35.222.210.12]
Oppgave [Ansible Opprett katalog og angi tillatelser] *********************************************** ******************************************************** ******************************************************** ****************
endret: [35.222.210.12]
Spill Recap **************************************************** ******************************************************** ******************************************************** ********************************************************
35.222.210.12: OK = 2 endret = 1 Utilgjengelig = 0 mislyktes = 0 hoppet over = 0 reddet = 0 ignorert = 0
Hvis du ser tillatelsene til katalogen vi opprettet, vil du se følgende:
$ ls -lrt / | grep sikkerhetskopier
Utgangen er som vist nedenfor:
DRW-WXRWX. 2 rotrot 6 mars 6 17:36 sikkerhetskopier
Hvordan du rekursivt endrer tillatelser i en katalog
For å endre tillatelsene til en katalog og dens filer rekursivt, spesifiser bare den rekursive oppføringen, som vist nedenfor:
- Verter: Alle
oppgaver:
- Navn: Ansible Opprett katalog og angi tillatelser
fil:
Sti: /sikkerhetskopier
Tilstand: Katalog
modus: "u = rw, g = wx, o = rwx"
Rekursiv: Ja
Bli: Ja
Hvordan sette tillatelser i flere kataloger
Å sette opp tillatelser for flere kataloger i Ansible er også så enkelt som noen få linjer med oppføringer. Tenk på følgende spillbok.
- Verter: Alle
oppgaver:
- Navn: Ansible Create Mutliple Directory med tillatelser
fil:
Sti: "element.bane "
modus: "element.modus"
Tilstand: Katalog
med_items:
- bane: '~/backups/mysql', modus: '0777'
- bane: '~/backups/depot', modus: '0755'
- bane: '~/backups/config', modus: '0707'
Hvordan slette en katalog i Ansible
For å fjerne en katalog og alt innholdet ved hjelp av en Ansible Playbook, spesifiserer du staten som fraværende, som vist nedenfor:
- Verter: Alle
oppgaver:
- Navn: Ansible Delete Directory
fil:
Sti: /sikkerhetskopier
Stat: fraværende
Bli: Ja
Denne kommandoen vil fjerne katalogen og alle barna filer og kataloger.
MERK: Forsikre deg om at du har tillatelser for katalogen du jobber med.
Hvordan lage en tidsstemplet katalog
I noen tilfeller kan det hende du må opprette en katalog med en tidsstempel knyttet til den, noe som kan være veldig nyttig, spesielt når du oppretter sikkerhetskopiering. For å lage en tidsstempel katalog, kan vi bruke Ansible_Date_Time -variabelen.
Tenk på følgende spillbok:
- Verter: Alle
oppgaver:
- Navn: Ansible Legg til tidsstempel i katalogen
fil:
Sti: "/Backups/MySQL Ansible_Date_Time.Dato"
Tilstand: Katalog
Mode: "0777"
Bli: Ja
Når du har kjørt spillboken, vil du ha en katalog med tidsstempel.
$ ls -l
Katalogoppføringen skal være som vist nedenfor:
Totalt 0 drwxrwxrwx. 2 Root Root 6. mars 6 18:03 MySQL2021-03-06
MERK: For å unngå feil, må du alltid sjekke YAML -filsyntaksen du har tenkt å bruke i Ansible.
Konklusjon
Denne opplæringen viste deg at det er veldig enkelt og intuitivt å jobbe med Ansible -moduler, noe som gjør automatisering av komplekse oppgaver enklere. Ved hjelp av Ansible -filmodulen kan du opprette ett eller flere kataloger og legge til tillatelser for hver. Du kan også bruke den samme modulen for å fjerne en katalog for mer informasjon om hvordan du bruker Ansible File Module, sjekk den offisielle dokumentasjonen på ressurssiden.