Hvordan bruke Ansible LineInfile

Hvordan bruke Ansible LineInfile
Ansible er et gratis, open source automatiseringsverktøy som kan administrere en eller hundrevis av eksterne verter. Hovedbruken er å administrere konfigurasjoner, distribuere eksterne servere, administrere applikasjoner og tjenester og mange flere. Det fungerer også på både UNIX og UNIX-lignende systemer, så vel som vinduer.

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:

  1. En ansettbar kontrollnode
  2. En ekstern vert for å administrere
  3. SSH -tilgang til den eksterne verten

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!