Ad hoc -kommandoer er imidlertid ikke gjenbrukbare. Jada, de gir deg en måte å raskt drive individuelle oppgaver på, men de kan ikke gjenbrukes. En analogi kan tegnes der Playbook-modus er som et skallskript, mens individuelle kommandoer er en-linjers.
Apropos Shell, har Ansible også en skallmodul. Denne modulen brukes til å kjøre skallkommandoer på målsystemer. I denne guiden vil vi gå over Ansible Shell -modulen og demonstrere eksempler på hvordan den kan brukes.
Hva er skallmodulen?
Ansible Shell -modulen lar brukeren kjøre komplekse kommandoer med omdirigering, rør osv. Det tar et kommandonavn, argumentene med hvite romavgrensere og kjører det på eksterne verter.
Det kan høres ut som nøyaktig det samme som Ansible Command -modulen, men forskjellen er at den kjører kommandoene på verten ved hjelp av et skall. Shell -modulen har også tilgang til miljøvariabler og spesielle operatører som | &; etc. Enda bedre, du kan kjøre hele skript ved hjelp av skallmodulen. Ikke desto mindre er det vanlig kunnskap blant ansible brukere at kommandomodulen er et tryggere og mer forutsigbart alternativ enn Shell -modulen.
Til slutt er det viktig å huske på at denne modulen bare fungerer med Linux -systemer. Windows -brukere kan bruke Ansible.vinduer.Win_shell på sin plass. Når det er sagt, la oss komme inn på detaljene i Ansible Shell -modulen.
Bruke Ansible Shell -modulen
La oss ta en titt på parametrene du trenger å overføre verdier til mens vi begynner å kjøre kommandoer og skript.
Med det ut av veien, la oss komme til noen eksempler på hvordan du bruker Ansible Shell.
Eksempel 1: Endring av arbeidskatalogen
Hvis du vil endre arbeidskatalogen før du utfører en kommando, er det slik det ville bli gjort.
- Navn: Endre arbeidskatalogen til myDIRNå som vi har laget en spillbok, kan du kjøre den ved hjelp av Linux -terminalen ved å kjøre:
Ansible-Playbook Testbook.ymlEksempel 2: Ekstrahering av kommandoutgang
Hvis du vil fange og lagre returverdien til en skallkommando, kan registeret nøkkelord brukes.
- Navn: Opprette en .txt -fil i $ hjemEksempel 3: Kontroller datoen
La oss starte med å sjekke datoen på vår eksterne server som heter Test. Legg merke til hvordan syntaksen til skallmodulen er annerledes her. Dette er bare en annen måte å bruke Ansible Shell -modulen.
- Navn: Kontroller datoenVi har brukt den enkle datakommandoen for å sjekke datoen på et eksternt system. Dessuten blir output fra kommandoen (selve datoen) returnert til et register som heter Datecmd. Til slutt viser vi innholdet i registervariabelen Datecmd ved å skrive ut STDOUT -attributtet.
Eksempel 4: Kjøre flere kommandoer
I dette eksemplet vil vi lage noen tekstfiler i en midlertidig katalog.
oppgaver:Her har vi brukt skallkode for å lage tre filer, nemlig myfile1, myfile2, og myfile3. Den blir: ekte linje lar deg "bli" brukeren av den eksterne verten. Til slutt passerer vi et CHDIR -argument og endrer katalogen.
Eksempel 5: Bruke omdirigering og rør
La oss nå se hvordan rør og omdirigering fungerer i Ansible Shell -modulen. Vi vil kjøre en enkel LS -kommando med litt forbehandling gjennom AWK. Videre bruker vi SED for å fjerne tomme linjer. Til slutt vil vi omdirigere utdataene til en tekstfil.
- Navn: Ta en liste over katalogen og mate den til en filFørst utfører vi den nevnte kommandoen og lagrer resultatet i MyDir.tekst. Etterpå bruker vi en annen kommandokatt for å lagre innholdet i filen i et register. Til slutt vises denne registervariabelen.
Hvordan forhindre kommandoinjeksjon?
Som vi nevnte tidligere, regnes kommandomodulen som en tryggere måte å gjøre ting. Imidlertid har det noe begrenset funksjonalitet. Så, hvordan bruker man skallmodulen trygt?
Du kan bruke tilbudsfilteret for å beskytte variabelnavnene du sender til skallmodulen fra kommandoinjeksjon. Nedenfor er et eksempel på denne desinfiseringen.
- Navn: Opprette en .txt med tilbudsfilteretDet er en god praksis å alltid bruke tilbudsfilteret med variablene dine. Dette vil hindre hackere i å endre kommandoen ved kjøretid. Det er mye som SQL -injeksjon, men så lenge du tar sikkerhetsforholdsregler, trenger du ikke å bekymre deg!
Konklusjon
Ansible Shell -modulen er en allsidig og kraftig modul som øker brukerkontrollen og gjør ekstern konfigurasjon mye enklere. I denne artikkelen har vi sett på hva den gjør, hvilke parametere den har og hvilke argumenter den krever, og mer. Forhåpentligvis er du nå godt utstyrt til å bruke Ansible Shell -modulen.