Ansible

Hur man använder Ansible Register Module

Hur man använder Ansible Register Module
I Ansible kan du köra valfritt skalkommando på dina Ansible-värdar, de värdar du konfigurerar med Ansible. Dessa skalkommandon kan ha utgångar. Som standard ignoreras utdata. Om du vill lagra utdata i en variabel och använda den senare kan du använda Ansible Registrera modul. Den här artikeln visar hur du använder Ansible Registrera modul för att lagra kommandoutgången i en variabel och komma åt den senare i din Ansible-spelbok.

Förutsättningar

Om du vill prova exemplen i den här artikeln måste du:

1) Har Ansible installerat på din dator.

2) Ha en Ubuntu-värd konfigurerad för Ansible-automatisering.

Det finns många artiklar på LinuxHint dedikerade till att installera Ansible och konfigurera värdar för Ansible-automatisering. Du kan kolla in dessa artiklar om det behövs.

Ställa in en projektkatalog

Innan du går vidare ska du skapa en ny Ansible-projektkatalog, bara för att hålla sakerna ordnade.

För att skapa projektkatalogen registrera-demo / och alla nödvändiga underkataloger (i din nuvarande arbetskatalog), kör följande kommando:

$ mkdir -pv register-demo / playbooks

När projektkatalogen har skapats navigerar du till projektkatalogen enligt följande:

$ cd register-demo /

Skapa en värdar inventeringsfil, enligt följande:

$ nano värdar

Lägg till värd-IP- eller DNS-namnet på din Ubuntu-värd i inventeringsfilen (en värd per rad), som visas på skärmdumpen nedan.

Här har jag lagt till min Ubuntu 20.04 LTS-värd vm3.nodekite.com i ubuntu20 grupp.

När du är klar sparar du filen genom att trycka på + X, följd av Y och .

Skapa en Ansible-konfigurationsfil ansible.cfg i din projektkatalog, enligt följande:

$ nano ansible.cfg

Skriv sedan följande rader i ansible.cfg fil:

[standard]
inventering = värdar
host_key_checking = Falskt

När du är klar sparar du ansible.cfg fil genom att trycka på + X, följd av Y och .

Försök nu att pinga din Ubuntu-värd enligt följande:

$ ansible ubuntu20 -u ansible -m ping

Som du kan se, min Ubuntu 20.04 värd vm3.nodekite.com är tillgänglig.

Exempel 1: Grunderna

I det här exemplet kommer jag att visa dig några av grunderna i Ansible Registrera modul. Jag kommer att använda Ansible för att skapa ett slumpmässigt lösenord i min Ubuntu 20.04 värd använder pwgen kommandot, lagra lösenordet i en variabel med hjälp av Registrera och skriv ut lösenordet på skärmen.

Skapa först den nya spelboken generera_pass.yaml i spelböcker / katalog, enligt följande:

$ nano-spelböcker / generera_pass.yaml

Skriv följande rader i generera_pass.yaml fil:

- värdar: ubuntu20
användare: ansible
bli sann
uppgifter:
- namn: Se till att pwgen är installerat
benägen:
namn: pwgen
tillstånd: närvarande
update_cache: True
- namn: Skapa lösenord
skal: pwgen -N 1 -s 30
register: mypass
- namn: Skriv ut det genererade lösenordet
felsöka:
msg: "Lösenordet är mypass"

När du är klar trycker du på + X, följd av Y och , för att spara generera_pass.yaml fil.

Följande rad säger till Ansible att köra spelboken generera_pass.yaml på varje värd i ubuntu20 grupp. I mitt fall körs spelboken på värden vm3.nodekite.com.

I den här spelboken kommer jag att definiera tre uppgifter.

Den första uppgiften kommer att säkerställa att pwgen paketet är installerat.

Den andra uppgiften genererar ett slumpmässigt lösenord med 30 tecken med hjälp av pwgen kommando. Jag kommer att använda Registrera för att lagra det genererade lösenordet i mypass variabel.

Den tredje uppgiften skriver ut mypass variabel med Ansible felsöka modul.

Kör spelboken generera_pass.yaml med följande kommando:

$ ansible-playbook playbooks / generera_pass.yaml

Som du kan se körde spelboken framgångsrikt. Ett lösenord har också skapats.

Men varför gjorde variabeln mypass skriva ut så många objekt?

Tja, variabeln mypass är ett objekt som innehåller några viktiga egenskaper.

De viktigaste egenskaperna hos var och en av Registrera variablerna är som följer:

cmd - Kommandot som sprang för att generera utdata.

stdout - Utdata från kommandot.

stderr - Felutmatningen för kommandot.

Start - Datum och tid då kommandot började köras.

slutet - Datum och tid då kommandot slutfördes.

delta - Tiden det tog att köra kommandot. Detta är skillnaden mellan slutet och den Start egenskaper.

stdout_lines - En matris som innehåller varje utdatarad i kommandot. Samma som stdout, men stdout separerar raderna med en ny rad (\ n) istället för matriser.

stderr_lines -  En matris som innehåller varje felutmatningsrad i kommandot. Samma som stderr, men stderr separerar raderna med hjälp av nya rader (\ n) istället för matriser.

Om du bara vill skriva ut / komma åt lösenordsträngen (vilket är mycket troligt) kan du skriva ut / komma åt stdout egendom för mypass variabel i din spelbok, som markeras i skärmdumpen nedan.

$ nano-spelböcker / generera_pass.yaml

När du är klar kör du spelboken generera_pass.yaml om igen. Endast lösenordssträngen skrivs ut, som du kan se på skärmdumpen nedan.

Det täcker grunderna i Ansible Registrera modul.

Exempel 2: Lagra katalogens innehåll

I det här exemplet visar jag hur du lagrar innehållet i en katalog i en variabel med Ansible Registrera modul, samt hur man itererar över dem.

Skapa först den nya spelboken get_dir_contents.yaml i spelböcker / katalog.

$ nano playbooks / get_dir_contents.yaml

Skriv sedan följande rader i get_dir_contents.yaml spelbok:

- värdar: ubuntu20
användare: ansible
bli sann
uppgifter:
- namn: Lista alla filer och kataloger i / home / ansible
skal: ls / hem / ansible
register: dir_contents
- namn: Skriv ut kataloginnehåll med slingor
felsöka:
msg: "item"
loop: "dir_contents.stdout_lines "

När du är klar trycker du på + X, följd av Y och , för att spara generera_pass.yaml fil.

I den här spelboken kommer jag att definiera två uppgifter.

Den första uppgiften listar allt innehåll i / hem / ansible katalogen och lagrar dem i dir_contents variabel.

Den andra uppgiften skriver ut dir_contents variabel.

Springa det get_dir_contents.yaml spelbok, enligt följande.

$ ansible-playbook playbooks / get_dir_contents.yaml

Som du kan se stdout_lines egendom lagrade kataloginnehållet som en matris. De stdout egenskapen lagras också i kataloginnehållet. Dessa egenskaper separeras av newline (\ n) tecken. I detta exempel är stdout_lines fastigheten är lätt att arbeta med.

Därefter iterera över kataloginnehållet med en slinga.

För att göra detta, öppna get_dir_contents.yaml spelbok och ändra den andra uppgiften, som markerad i skärmdumpen nedan.

$ nano playbooks / get_dir_contents.yaml

Här, jag itererar över dir_contents.stdout_lines array med en slinga och skriva ut array-objekt med Ansible felsöka modul. I denna uppgift Artikel variabel är en loopvariabel som används för att iterera över arrayelementen.

Springa det get_dir_contents.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / get_dir_contents.yaml

Som du kan se innehållet i / hem / ansible katalogen skrivs ut på skärmen.

Exempel 3: Säkerhetskopiera katalog

I det här exemplet visar jag hur du säkerhetskopierar en katalog med Ansible Registrera, fil, och kopiera moduler.

Skapa först den nya spelboken backup_home_dir.yaml i spelböcker / katalog, enligt följande:

$ nano playbooks / backup_home_dir.yaml

Skriv sedan följande rader i backup_home_dir.yaml fil.

- värdar: ubuntu20
användare: ansible
bli sann
uppgifter:
- namn: Hämta hemkatalog / hem / synligt innehåll
skal: ls / hem / ansible
register: dir_contents
- namn: Skapa en ny katalog / tmp / ansible
fil:
sökväg: / tmp / ansible
tillstånd: katalog
- namn: Säkerhetskopiera hemkatalog / hem / ansible till / tmp / ansible
kopiera:
src: / home / ansible / item
dest: / tmp / ansible /
remote_src: True
loop: "dir_contents.stdout_lines

När du är klar trycker du på + X, följd av Y och , för att spara backup_home_dir.yaml fil.

I den här spelboken kommer jag att definiera tre uppgifter.

Den första uppgiften lagrar innehållet i / hem / ansible katalog (den katalog jag ska säkerhetskopiera) i dir_contents variabel med Ansible Registrera modul.

Den andra uppgiften skapar en ny katalog / tmp / ansible med Ansible fil modul. Det här är katalogen där säkerhetskopian lagras.

Den tredje uppgiften slingrar sig genom dir_contents.stdout_lines array och använder Ansible kopiera modul för att kopiera varje katalog till / tmp / ansible / katalog.

Springa det backup_home_dir.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / backup_home_dir.yaml

Som du kan se, på min Ubuntu 20.04 LTS-värd, backupen lyckades.

Exempel 4: Kör eller hoppa över uppgifter

I det här exemplet visar jag hur du kör eller hoppar över uppgifter, beroende på variabeln du har registrerat, med hjälp av Registrera modul.

Skapa först den nya spelboken register_villkor.yaml i spelböcker / katalog enligt följande:

$ nano playbooks / register_conditions.yaml

Skriv sedan följande rader i registerförhållanden.yaml fil.

- värdar: ubuntu20
användare: ansible
bli sann
uppgifter:
- namn: Lista katalogens innehåll
skal: ls / home / ansible / test3
register: dir_contents
- namn: Kontrollera om katalogen är tom
felsöka:
msg: "Katalogen är tom."
när: dir_contents.stdout == ""

När du är klar trycker du på + X, följd av Y och , för att spara register_villkor.yaml fil.

I den här spelboken har jag definierat två uppgifter.

Den första uppgiften lagrar innehållet i / hem / ansible / test3 katalog i dir_contents variabel.

Den andra uppgiften kontrollerar om dir_contents.stdout är en tom sträng, eller om katalogen / hem / ansible / test3 är tom. Om katalogen är tom kommer meddelandet Katalogen är tom kommer att skriva ut.

Springa det register_villkor.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / register_conditions.yaml

Som du kan se körde spelboken framgångsrikt.

Sedan katalogen / hem / ansible / test3 är tomt, skrev spelboken meddelandet Katalogen är tom.

Skapa sedan en ny fil i / hem / ansible / test3 katalog.

$ touch test3 / myfile

Sedan / hem / ansible / test3 katalogen är inte längre tom, uppgiften Kontrollera om katalogen är tom hoppas över, som du kan se på skärmdumpen nedan.

$ ansible-playbook playbooks / register_conditions.yaml

Slutsats

Ansible Registrera modulen är mycket användbar för serverautomation. Denna artikel visade dig grunderna i Registrera modul, inklusive exempel på hur Ansible används Registrera modul för kataloglagring och säkerhetskopiering och för körning av kataloguppgifter.

Mus Mellan musknappen fungerar inte i Windows 10
Mellan musknappen fungerar inte i Windows 10
De mittknappen hjälper dig att bläddra igenom långa webbsidor och skärmar med mycket data. Om det slutar, kommer du sluta använda tangentbordet för at...
Mus Hur man ändrar vänster och höger musknapp på Windows 10 PC
Hur man ändrar vänster och höger musknapp på Windows 10 PC
Det är en hel norm att alla datormusenheter är ergonomiskt utformade för högerhänta användare. Men det finns musenheter tillgängliga som är speciellt ...
Mus Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Att använda en mus eller tangentbord i fel hållning av överdriven användning kan resultera i många hälsoproblem, inklusive stam, karpaltunnelsyndrom o...