Ut av boksen har Ansible mange verktøy og funksjoner. En av dem er LineInfile -modulen. Denne modulen lar deg administrere en enkelt linje i en fil som ligger på en ekstern vert.
Den støtter funksjonaliteter som å erstatte innhold på en fil, oppdatere innhold i en linje, legge til innhold på en linje og mer.
Denne guiden vil illustrere hvordan du bruker Ansible LineInfile -modulen for å administrere filer på eksterne verter.
Krav
For å følge med på konseptet med denne opplæringen, må du forsikre deg om at du har følgende grunnleggende krav:
Bekreft om en spesifikk oppføring eksisterer
For å sikre at en spesifikk oppføring er til stede i en fil, kan vi bruke LineInfile -modulen og stille scenen til å presentere.
Tenk på eksemplet Playbook vist nedenfor:
---
- Verter: Alle
Samle_facts: Ja
Bli: Ja
oppgaver:
- Navn: Sjekk om /etc /verter inneholder 127.0.0.1"
lineInfile:
Sti: "/etc/hosts"
Stat: Nåværende
Linje: "127.0.0.1"
CHECK_MODE: Ja
Registrer deg: ut
Eksemplet ovenfor vil sjekke om oppføringen eksisterer i den spesifiserte filen og legger til den hvis den ikke eksisterer.
Lag en fil og legg til en ny linje
Vi kan bruke LineInfile -modulen til å opprette en fil og legge til en ny linje i den opprettede filen.
Tenk på eksemplet Playbook vist nedenfor:
---
- Verter: Alle
Samle_facts: Nei
oppgaver:
- Navn: Opprett fil og legg til linje
lineInfile:
Dest:/Home/Ubuntu/Eksempel.konf
Linje: Dette er en ny oppføring i filen
Stat: Nåværende
Opprett: sant
I eksemplet playbook ovenfor bruker vi DEST -parameteren for å spesifisere banen til filen.
Deretter bruker vi linjeparameteren for å stille inn linjen for å legge til filen. Vi bruker dette i forbindelse med staten: nåværende parameter.
Til slutt setter vi CREATE -parameteren til True, som ber Ansible om å opprette filen hvis den eksisterer.
Hvis du kjører spillboken to ganger, vil den ikke utføre noen handlinger som både filen og den spesifiserte linjen eksisterer.
Legg til en linje før/etter en oppføring
For å legge til en linje før eller etter en bestemt oppføring, kan du bruke innsatsen eller innsatsen før parametere.
Ta en titt på eksemplet vist nedenfor:
---
- Verter: Alle
Samle_facts: Nei
oppgaver:
- Navn: Legg til linje før/etter
lineInfile:
Sti:/etc/apache2/apache2.konf
regex: '^serverroot'
Sett etter: '^#serverroot'
linje: serverroot "/etc/apache2"
Etter den kommenterte linjen vil LineInfile-modulen legge til serverroot “/etc/Apache2” -oppføringen.
Slette en linje
For å fjerne en oppføring fra en fil, sett staten til fraværende som vist i eksemplet Playbook nedenfor:
---
- Verter: Alle
Samle_facts: Nei
oppgaver:
- Navn: Slett en linje
lineInfile:
Sti:/etc/apache2/apache2.konf
regex: '^#serverroot'
Stat: fraværende
Eksemplet over bruker et enkelt vanlig uttrykk for å matche linjen som starter med #serverroot.
Kommentere en linje
For å kommentere en linje, bruk parameteren Ansible LineInfile Backrefs. Ta en titt på eksemplet Playbook vist nedenfor:
---
- Verter: Alle
Samle_facts: Nei
oppgaver:
- Navn: Slett en linje
lineInfile:
Sti:/etc/apache2/apache2.konf
linje 1'
regex: '^#lytt 8080'
Backrefs: Ja
I eksemplet over bruker vi et vanlig uttrykk for å matche linjen vi ønsker å kommentere.
Vi bruker deretter innholdet i matchingslinjen og legger til et kommentarfigur.
Backup -fil før du endrer
Det er bra å sikre at du tar sikkerhetskopi av en kopi av filene dine før du redigerer dem for å lette filgjenoppretting i tilfelle feil.
For å sikkerhetskopiere en fil ved hjelp av LineInfile -modulen, kan vi angi alternativet for sikkerhetskopiering til True.
Tenk på eksemplet spillbok nedenfor:
---
- Verter: Alle
Samle_facts: Nei
oppgaver:
- Navn: Slett en linje
lineInfile:
Sti:/etc/apache2/apache2.konf
regex: '^#serverroot'
Stat: fraværende
Sikkerhetskopiering: Ja
Konklusjon
Ansible LineInfile -modulen er gunstig når du endrer konfigurasjonsfiler på eksterne verter ved hjelp av Ansible Playbooks.
Takk for at du leser!