Ansible

Hvordan bruke Ansible Register Module

Hvordan bruke Ansible Register Module
I Ansible kan du kjøre hvilken som helst shell-kommando på Ansible-vertene, vertene du vil konfigurere med Ansible. Disse skallkommandoene kan ha utganger. Som standard ignoreres utdataene. Hvis du vil lagre utdataene i en variabel og bruke den senere, kan du bruke Ansible registrere modul. Denne artikkelen viser deg hvordan du bruker Ansible registrere modul for å lagre kommandoutgangen i en variabel og få tilgang til den senere i Ansible-spillboken.

Forutsetninger

Hvis du vil prøve eksemplene i denne artikkelen, må du:

1) Har Ansible installert på datamaskinen din.

2) Ha en Ubuntu-vert konfigurert for Ansible automatisering.

Det er mange artikler om LinuxHint dedikert til å installere Ansible og konfigurere verter for Ansible automatisering. Du kan sjekke disse artiklene om nødvendig.

Sette opp en prosjektkatalog

Før du går videre, sett opp en ny Ansible-prosjektkatalog, bare for å holde ting litt organisert.

Å lage prosjektkatalogen registrer-demo / og alle nødvendige underkataloger (i din nåværende arbeidskatalog), kjør følgende kommando:

$ mkdir -pv register-demo / spillbøker

Når prosjektkatalogen er opprettet, navigerer du til prosjektkatalogen, som følger:

$ cd register-demo /

Lage en verter inventarfil, som følger:

$ nano verter

Legg til verts-IP- eller DNS-navnet til din Ubuntu-vert i lagerfilen (en vert per linje), som vist på skjermbildet nedenfor.

Her har jeg lagt til min Ubuntu 20.04 LTS vert vm3.nodekite.com i ubuntu20 gruppe.

Når du er ferdig, lagrer du filen ved å trykke på + X, etterfulgt av Y og .

Opprett en Ansible-konfigurasjonsfil ansible.cfg i prosjektkatalogen din, som følger:

$ nano ansible.cfg

Deretter skriver du inn følgende linjer i ansible.cfg fil:

[standard]
inventar = verter
host_key_checking = Usann

Når du er ferdig, lagrer du ansible.cfg filen ved å trykke på + X, etterfulgt av Y og .

Prøv nå å pinge din Ubuntu-vert, som følger:

$ ansible ubuntu20 -u ansible -m ping

Som du kan se, min Ubuntu 20.04 vert vm3.nodekite.com er tilgjengelig.

Eksempel 1: Grunnleggende

I dette eksemplet vil jeg vise deg noen av det grunnleggende i Ansible registrere modul. Jeg vil bruke Ansible til å generere et tilfeldig passord i Ubuntu 20.04 vert ved hjelp av pwgen kommandoen, lagre passordet i en variabel ved hjelp av registrere modulen, og skriv ut passordet på skjermen.

Først oppretter du den nye spillboken generere_pass.yaml i lekebøker / katalog, som følger:

$ nano playbooks / generer_pass.yaml

Skriv inn følgende linjer i generere_pass.yaml fil:

- verter: ubuntu20
bruker: ansible
bli: Sant
oppgaver:
- navn: Sørg for at pwgen er installert
apt:
navn: pwgen
tilstand: til stede
update_cache: Sant
- navn: Generer passord
skall: pwgen -N 1 -s 30
register: mypass
- navn: Skriv ut det genererte passordet
feilsøke:
msg: "Passordet er mypass"

Når du er ferdig, trykker du på + X, etterfulgt av Y og , for å redde generere_pass.yaml fil.

Den følgende linjen forteller Ansible å kjøre spillboken generere_pass.yaml på hver vert i ubuntu20 gruppe. I mitt tilfelle vil spillboken kjøres på verten vm3.nodekite.com.

I denne lekeboken vil jeg definere tre oppgaver.

Den første oppgaven vil sikre at pwgen pakken er installert.

Den andre oppgaven genererer et tilfeldig passord på 30 tegn ved hjelp av pwgen kommando. Jeg vil bruke registrere modul for å lagre det genererte passordet i mypass variabel.

Den tredje oppgaven vil skrive ut mypass variabel ved hjelp av Ansible feilsøke modul.

Kjør lekeboken generere_pass.yaml ved hjelp av følgende kommando:

$ ansible-playbook playbooks / generate_pass.yaml

Som du kan se, kjørte spillboken vellykket. Det har også blitt generert et passord.

Men hvorfor gjorde variabelen mypass skrive ut så mange gjenstander?

Vel, variabelen mypass er et objekt som inneholder noen viktige egenskaper.

De viktigste egenskapene til hver av registrere variabler er som følger:

cmd - Kommandoen som kjørte for å generere utdata.

stdout - Resultatet av kommandoen.

stderr - Feilutgangen til kommandoen.

start - Datoen og klokkeslettet da kommandoen begynte å utføres.

slutt - Dato og klokkeslett da kommandoen ble utført.

delta - Tiden det tok å kjøre kommandoen. Dette er forskjellen mellom slutt og start eiendommer.

stdout_lines - En matrise som inneholder hver utgangslinje i kommandoen. Samme som stdout, men stdout skiller linjene ved hjelp av en ny linje (\ n) tegn i stedet for matriser.

stderr_lines -  En matrise som inneholder hver feilutgangslinje i kommandoen. Samme som stderr, men stderr skiller linjene ved hjelp av nye linjer (\ n) tegn i stedet for matriser.

Hvis du bare vil skrive ut / få tilgang til passordstrengen (som er veldig sannsynlig), kan du skrive ut / få tilgang til stdout eiendommen til mypass variabel i spillboken din, som markert i skjermbildet nedenfor.

$ nano playbooks / generer_pass.yaml

Når du er ferdig, kjører du lekeboken generere_pass.yaml en gang til. Bare passordstrengen blir skrevet ut, som du kan se på skjermbildet nedenfor.

Det dekker det grunnleggende i Ansible registrere modul.

Eksempel 2: Lagre kataloginnhold

I dette eksemplet vil jeg vise deg hvordan du lagrer innholdet i en katalog i en variabel ved hjelp av Ansible registrere modul, samt hvordan du kan gjenta dem.

Først oppretter du den nye spillboken get_dir_contents.yaml i lekebøker / katalog.

$ nano playbooks / get_dir_contents.yaml

Deretter skriver du inn følgende linjer i get_dir_contents.yaml spillbok:

- verter: ubuntu20
bruker: ansible
bli: Sant
oppgaver:
- navn: Liste opp alle filer og kataloger i / home / ansible
skall: ls / hjem / ansible
register: dir_contents
- navn: Skriv ut kataloginnhold ved hjelp av løkker
feilsøke:
msg: "item"
loop: "dir_contents.stdout_lines "

Når du er ferdig, trykker du på + X, etterfulgt av Y og , for å redde generere_pass.yaml fil.

I denne lekeboken vil jeg definere to oppgaver.

Den første oppgaven viser alt innholdet i / hjem / ansible katalogen og lagrer dem i dir_innhold variabel.

Den andre oppgaven skriver ut dir_innhold variabel.

Kjør get_dir_contents.yaml spillebok, som følger.

$ ansible-playbook playbooks / get_dir_contents.yaml

Som du kan se, er stdout_lines eiendom lagret kataloginnholdet som en matrise. De stdout eiendommen er også lagret i kataloginnholdet. Disse egenskapene er atskilt med newline (\ n) tegn. I dette eksemplet er stdout_lines eiendommen er enkel å jobbe med.

Deretter gjentas det over kataloginnholdet ved hjelp av en sløyfe.

For å gjøre dette, åpne get_dir_contents.yaml spillbok og endre den andre oppgaven, som markert i skjermbildet nedenfor.

$ nano playbooks / get_dir_contents.yaml

Her gjentar jeg det over dir_innhold.stdout_lines array ved hjelp av en løkke og skrive ut matriseelementene ved hjelp av Ansible feilsøke modul. I denne oppgaven er den punkt variabel er en løkkevariabel som brukes til å iterere over matriseelementene.

Kjør get_dir_contents.yaml spillbok, som følger:

$ ansible-playbook playbooks / get_dir_contents.yaml

Som du kan se, innholdet i / hjem / ansible katalogen skrives ut på skjermen.

Eksempel 3: Sikkerhetskopier katalog

I dette eksemplet vil jeg vise deg hvordan du sikkerhetskopierer en katalog ved hjelp av Ansible registrere, fil, og kopiere moduler.

Først oppretter du den nye spillboken backup_home_dir.yaml i lekebøker / katalog, som følger:

$ nano playbooks / backup_home_dir.yaml

Deretter skriver du inn følgende linjer i backup_home_dir.yaml fil.

- verter: ubuntu20
bruker: ansible
bli: Sant
oppgaver:
- navn: Få hjemmekatalog / hjem / synlig innhold
skall: ls / hjem / ansible
register: dir_contents
- navn: Opprett en ny katalog / tmp / ansible
fil:
sti: / tmp / ansible
tilstand: katalog
- navn: Backup hjemmekatalog / hjem / ansible til / tmp / ansible
kopiere:
src: / home / ansible / item
dest: / tmp / ansible /
remote_src: Sant
loop: "dir_contents.stdout_lines

Når du er ferdig, trykker du på + X, etterfulgt av Y og , for å redde backup_home_dir.yaml fil.

I denne lekeboken vil jeg definere tre oppgaver.

Den første oppgaven lagrer innholdet i / hjem / ansible katalogen (katalogen jeg skal sikkerhetskopiere) i dir_innhold variabel ved hjelp av Ansible registrere modul.

Den andre oppgaven oppretter en ny katalog / tmp / ansible ved hjelp av Ansible fil modul. Dette er katalogen der sikkerhetskopien vil bli lagret.

Den tredje oppgaven går gjennom dir_innhold.stdout_lines array og bruker Ansible kopiere modul for å kopiere hver katalog til / tmp / ansible / katalog.

Kjør backup_home_dir.yaml spillebok, som følger:

$ ansible-playbook playbooks / backup_home_dir.yaml

Som du kan se, på min Ubuntu 20.04 LTS-vert, sikkerhetskopien var vellykket.

Eksempel 4: Kjør eller hopp over oppgaver

I dette eksemplet vil jeg vise deg hvordan du kjører eller hopper over oppgaver, avhengig av variabelen du har registrert, ved hjelp av registrere modul.

Først oppretter du den nye spillboken register_conditions.yaml i lekebøker / katalog som følger:

$ nano playbooks / register_conditions.yaml

Deretter skriver du inn følgende linjer i register_conditions.yaml fil.

- verter: ubuntu20
bruker: ansible
bli: Sant
oppgaver:
- navn: Liste over kataloginnhold
skall: ls / hjem / ansible / test3
register: dir_contents
- navn: Sjekk om katalogen er tom
feilsøke:
msg: "Katalogen er tom."
når: dir_contents.stdout == ""

Når du er ferdig, trykker du på + X, etterfulgt av Y og , for å redde register_conditions.yaml fil.

I denne lekeboken har jeg definert to oppgaver.

Den første oppgaven lagrer innholdet i / hjem / ansible / test3 katalog i dir_innhold variabel.

Den andre oppgaven sjekker om dir_innhold.stdout er en tom streng, eller om katalogen / hjem / ansible / test3 er tom. Hvis katalogen er tom, meldingen Katalogen er tom vil skrive ut.

Kjør register_conditions.yaml spillebok, som følger:

$ ansible-playbook playbooks / register_conditions.yaml

Som du kan se, kjørte spillboken vellykket.

Siden katalogen / hjem / ansible / test3 er tom, skrev spillboken meldingen Katalogen er tom.

Deretter oppretter du en ny fil i / hjem / ansible / test3 katalog.

$ touch test3 / myfile

Siden / hjem / ansible / test3 katalogen er ikke lenger tom, oppgaven Sjekk om katalogen er tom hoppes over, som du kan se på skjermbildet nedenfor.

$ ansible-playbook playbooks / register_conditions.yaml

Konklusjon

The Ansible registrere modulen er veldig nyttig for serverautomatisering. Denne artikkelen viste deg det grunnleggende om registrere modul, inkludert eksempler på bruk av Ansible registrere modul for kataloglagring og sikkerhetskopiering, og for å kjøre katalogoppgaver.

HD Remastered Games for Linux som aldri hadde en Linux-utgave tidligere
Mange spillutviklere og utgivere kommer med HD-remaster av gamle spill for å forlenge franchisetiden, vennligst fans som ber om kompatibilitet med mod...
Hvordan bruke AutoKey til å automatisere Linux-spill
AutoKey er et desktopautomatiseringsverktøy for Linux og X11, programmert i Python 3, GTK og Qt. Ved å bruke skript og MACRO-funksjonalitet kan du aut...
Hvordan vise FPS-teller i Linux-spill
Linux-spill fikk et stort press da Valve kunngjorde Linux-støtte for Steam-klient og spillene deres i 2012. Siden den gang har mange AAA- og indiespil...