Synlig

Sådan bruges Ansible Register Module

Sådan bruges Ansible Register Module
I Ansible kan du køre en hvilken som helst shell-kommando på dine Ansible-værter, de værter, du konfigurerer med Ansible. Disse shell-kommandoer kan have output. Som standard ignoreres output. Hvis du vil gemme output i en variabel og bruge det senere, kan du bruge Ansible Tilmeld modul. Denne artikel viser dig, hvordan du bruger Ansible Tilmeld modul til at gemme kommandooutputtet i en variabel og få adgang til det senere i din Ansible playbook.

Forudsætninger

Hvis du vil prøve eksemplerne i denne artikel, skal du:

1) Har Ansible installeret på din computer.

2) Har en Ubuntu-vært konfigureret til Ansible-automatisering.

Der er mange artikler om LinuxHint dedikeret til installation af Ansible og konfigurering af værter til Ansible-automatisering. Du kan tjekke disse artikler, hvis det er nødvendigt.

Opsætning af et projektmappe

Inden du går videre, skal du oprette en ny Ansible-projektmappe, bare for at holde tingene lidt organiserede.

For at oprette projektmappen register-demo / og alle de krævede underkataloger (i din nuværende arbejdsmappe), kør følgende kommando:

$ mkdir -pv register-demo / playbøger

Når projektmappen er oprettet, skal du navigere til projektmappen som følger:

$ cd register-demo /

Lave en værter opgørelsesfil som følger:

$ nano værter

Tilføj værts-IP- eller DNS-navnet på din Ubuntu-vært i lagerfilen (en vært pr. Linje), som vist på skærmbilledet nedenfor.

Her har jeg tilføjet min Ubuntu 20.04 LTS vært vm3.nodekite.com i ubuntu20 gruppe.

Når du er færdig, skal du gemme filen ved at trykke på + x, efterfulgt af Y og .

Opret en Ansible konfigurationsfil ansible.cfg i din projektmappe som følger:

$ nano ansible.cfg

Skriv derefter følgende linjer i ansible.cfg fil:

[standard]
beholdning = værter
host_key_checking = Falsk

Når du er færdig, skal du gemme ansible.cfg fil ved at trykke på + x, efterfulgt af Y og .

Prøv nu at pinge din Ubuntu-vært som følger:

$ ansible ubuntu20 -u ansible -m ping

Som du kan se, min Ubuntu 20.04 vært vm3.nodekite.com er tilgængelig.

Eksempel 1: Grundlæggende

I dette eksempel vil jeg vise dig nogle af de grundlæggende i Ansible Tilmeld modul. Jeg bruger Ansible til at generere en tilfældig adgangskode i min Ubuntu 20.04 vært ved hjælp af pwgen kommando, gem adgangskoden i en variabel ved hjælp af Tilmeld modulet, og udskriv adgangskoden på skærmen.

Opret først den nye playbook generere_pass.yaml i legebøger / katalog, som følger:

$ nano playbooks / generer_pass.yaml

Skriv følgende linjer i generere_pass.yaml fil:

- værter: ubuntu20
bruger: ansible
blive: Sandt
opgaver:
- navn: Sørg for, at pwgen er installeret
apt:
navn: pwgen
tilstand: til stede
update_cache: Sandt
- navn: Generer adgangskode
skal: pwgen -N1 -s 30
register: mypass
- navn: Udskriv den genererede adgangskode
fejlfinde:
msg: "Adgangskoden er mypass"

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at redde generere_pass.yaml fil.

Den følgende linje beder Ansible om at køre playbook generere_pass.yaml på hver vært i ubuntu20 gruppe. I mit tilfælde vil playbook køres på værten vm3.nodekite.com.

I denne playbook definerer jeg tre opgaver.

Den første opgave vil sikre, at pwgen pakken er installeret.

Den anden opgave genererer en tilfældig adgangskode på 30 tegn ved hjælp af pwgen kommando. Jeg vil bruge Tilmeld modul til at gemme den genererede adgangskode i mypass variabel.

Den tredje opgave udskriver mypass variabel ved hjælp af Ansible fejlfinde modul.

Kør playbook generere_pass.yaml ved hjælp af følgende kommando:

$ ansible-playbook playbooks / generate_pass.yaml

Som du kan se, kørte playbook med succes. Der er også genereret en adgangskode.

Men hvorfor gjorde variablen mypass udskrive så mange genstande?

Nå, variablen mypass er et objekt, der indeholder nogle vigtige egenskaber.

De vigtigste egenskaber ved hver af Tilmeld variabler er som følger:

cmd - Kommandoen, der løb for at generere output.

stdout - Output af kommandoen.

stderr - Fejloutput af kommandoen.

Start - Datoen og klokkeslættet, hvor kommandoen begyndte at udføres.

ende - Datoen og klokkeslættet, hvor kommandoen blev udført.

delta - Den tid, det tog at køre kommandoen. Dette er forskellen mellem ende og Start ejendomme.

stdout_lines - Et array, der indeholder hver outputlinje i kommandoen. Samme som stdout, men stdout adskiller linjerne ved hjælp af en ny linje (\ n) i stedet for arrays.

stderr_lines -  Et array, der indeholder hver fejloutputlinje i kommandoen. Samme som stderr, men stderr adskiller linjerne ved hjælp af nye linjer (\ n) tegn i stedet for arrays.

Hvis du bare vil udskrive / få adgang til adgangskodestrengen (hvilket meget sandsynligt er), kan du udskrive / få adgang til stdout ejendommen til mypass variabel i din playbook, som markeret i skærmbilledet nedenfor.

$ nano playbooks / generer_pass.yaml

Når du er færdig, skal du køre playbook generere_pass.yaml igen. Kun adgangskodestrengen udskrives, som du kan se på skærmbilledet nedenfor.

Det dækker det grundlæggende i Ansible Tilmeld modul.

Eksempel 2: Gem katalogindhold

I dette eksempel viser jeg dig, hvordan du gemmer indholdet af en mappe i en variabel ved hjælp af Ansible Tilmeld modul, samt hvordan man gentager dem.

Opret først den nye playbook get_dir_contents.yaml i legebøger / vejviser.

$ nano playbooks / get_dir_contents.yaml

Skriv derefter følgende linjer i get_dir_contents.yaml playbook:

- værter: ubuntu20
bruger: ansible
blive: Sandt
opgaver:
- navn: Liste over alle filer og mapper i / home / ansible
shell: ls / home / ansible
register: dir_contents
- navn: Udskriv biblioteksindhold ved hjælp af sløjfer
fejlfinde:
msg: "item"
loop: "dir_contents.stdout_lines "

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at redde generere_pass.yaml fil.

I denne playbook vil jeg definere to opgaver.

Den første opgave viser alt indholdet af / hjem / ansible og gemmer dem i dir_indhold variabel.

Den anden opgave udskriver dir_indhold variabel.

Kør get_dir_contents.yaml playbook som følger.

$ ansible-playbook playbooks / get_dir_contents.yaml

Som du kan se, er stdout_lines egenskab gemt bibliotekets indhold som en matrix. Det stdout ejendommen er også gemt i bibliotekets indhold. Disse egenskaber er adskilt af newline (\ n) tegn. I dette eksempel er stdout_lines ejendom er let at arbejde med.

Dernæst gentages over bibliotekets indhold ved hjælp af en sløjfe.

For at gøre dette skal du åbne get_dir_contents.yaml playbook og skift den anden opgave som markeret i skærmbilledet nedenfor.

$ nano playbooks / get_dir_contents.yaml

Her gentager jeg over dir_indhold.stdout_lines array ved hjælp af en sløjfe og udskrivning af array-elementer ved hjælp af Ansible fejlfinde modul. I denne opgave vare variabel er en loop-variabel, der bruges til at gentage over matrixelementerne.

Kør get_dir_contents.yaml playbook som følger:

$ ansible-playbook playbooks / get_dir_contents.yaml

Som du kan se, indholdet af / hjem / ansible bibliotek udskrives på skærmen.

Eksempel 3: Sikkerhedskopier katalog

I dette eksempel vil jeg vise dig, hvordan du sikkerhedskopierer en mappe ved hjælp af Ansible Tilmeld, fil, og kopi moduler.

Opret først den nye playbook backup_home_dir.yaml i legebøger / katalog, som følger:

$ nano playbooks / backup_home_dir.yaml

Skriv derefter følgende linjer i backup_home_dir.yaml fil.

- værter: ubuntu20
bruger: ansible
blive: Sandt
opgaver:
- navn: Få hjemmekatalog / hjem / synligt indhold
shell: ls / home / ansible
register: dir_contents
- navn: Opret en ny mappe / tmp / ansible
fil:
sti: / tmp / ansible
tilstand: katalog
- navn: Sikkerhedskopier hjemmekatalog / hjem / ansible til / tmp / ansible
kopi:
src: / home / ansible / item
dest: / tmp / ansible /
remote_src: Sandt
loop: "dir_contents.stdout_lines

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at redde backup_home_dir.yaml fil.

I denne playbook definerer jeg tre opgaver.

Den første opgave gemmer indholdet af / hjem / ansible katalog (det bibliotek, jeg vil sikkerhedskopiere) i dir_indhold variabel ved hjælp af Ansible Tilmeld modul.

Den anden opgave opretter en ny mappe / tmp / ansible ved hjælp af Ansible fil modul. Dette er den mappe, hvor sikkerhedskopien gemmes.

Den tredje opgave løber gennem dir_indhold.stdout_lines array og bruger Ansible kopi modul til at kopiere hvert bibliotek til / tmp / ansible / vejviser.

Kør backup_home_dir.yaml playbook som følger:

$ ansible-playbook playbooks / backup_home_dir.yaml

Som du kan se, på min Ubuntu 20.04 LTS vært, sikkerhedskopien var vellykket.

Eksempel 4: Kør eller spring opgaver over

I dette eksempel viser jeg dig, hvordan du kører eller springer over opgaver afhængigt af den variabel, du har registreret, ved hjælp af Tilmeld modul.

Opret først den nye playbook register_conditions.yaml i legebøger / katalog som følger:

$ nano playbooks / register_conditions.yaml

Skriv derefter følgende linjer i register_conditions.yaml fil.

- værter: ubuntu20
bruger: ansible
blive: Sandt
opgaver:
- navn: Liste over katalogindhold
shell: ls / home / ansible / test3
register: dir_contents
- navn: Kontroller, om biblioteket er tomt
fejlfinde:
msg: "Directory er tom."
hvornår: dir_contents.stdout == ""

Når du er færdig, skal du trykke på + x, efterfulgt af Y og , for at redde register_conditions.yaml fil.

I denne playbook har jeg defineret to opgaver.

Den første opgave gemmer indholdet af / hjem / synlig / test3 bibliotek i dir_indhold variabel.

Den anden opgave kontrollerer, om dir_indhold.stdout er en tom streng, eller om kataloget / hjem / synlig / test3 er tom. Hvis telefonbogen er tom, meddelelsen Directory er tom udskrives.

Kør register_conditions.yaml playbook som følger:

$ ansible-playbook playbooks / register_conditions.yaml

Som du kan se, kørte playbook med succes.

Siden biblioteket / hjem / synlig / test3 er tom, trykte playbogen beskeden Directory er tom.

Opret derefter en ny fil i / hjem / synlig / test3 vejviser.

$ touch test3 / myfile

Siden den / hjem / synlig / test3 mappe er ikke længere tom, opgaven Kontroller, om biblioteket er tomt springes over, som du kan se i skærmbilledet nedenfor.

$ ansible-playbook playbooks / register_conditions.yaml

Konklusion

Det synlige Tilmeld modul er meget nyttigt til serverautomation. Denne artikel viste dig det grundlæggende i Tilmeld modul, herunder eksempler på brug af Ansible Tilmeld modul til kataloglagring og sikkerhedskopiering og til kørsel af biblioteksopgaver.

Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...
Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...
Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...