Odgovorno

Kako uporabljati modul Ansible Register

Kako uporabljati modul Ansible Register
V programu Ansible lahko zaženete kateri koli ukaz lupine na gostiteljih Ansible, gostitelji, ki jih boste konfigurirali z Ansible. Ti ukazi lupine imajo lahko izhode. Izhod je privzeto prezrt. Če želite izhod shraniti v spremenljivko in jo uporabiti pozneje, lahko uporabite Ansible register modul. Ta članek vam bo pokazal, kako uporabljati Ansible register modul za shranjevanje izhoda ukaza v spremenljivko in dostop do njega kasneje v vaši knjigi Ansible.

Pogoji

Če želite preizkusiti primere v tem članku, morate:

1) V računalniku namestite Ansible.

2) Naj bo gostitelj Ubuntu konfiguriran za avtomatizacijo Ansible.

V LinuxHintu je veliko člankov, namenjenih namestitvi Ansible in konfiguriranju gostiteljev za avtomatizacijo Ansible. Po potrebi lahko pregledate te članke.

Nastavitev imenika projektov

Preden nadaljujete, nastavite nov direktorij projekta Ansible, samo da bodo stvari nekoliko organizirane.

Če želite ustvariti imenik projekta register-demo / in vse zahtevane podimenike (v trenutnem delovnem imeniku) zaženite naslednji ukaz:

$ mkdir -pv register-demo / playbooks

Ko je imenik projekta ustvarjen, se pomaknite do imenika projekta, kot sledi:

$ cd register-demo /

Ustvariti gostitelji inventarna datoteka, kot sledi:

$ nano gostitelji

V inventarno datoteko dodajte ime gostitelja IP ali DNS vašega gostitelja Ubuntu (en gostitelj v vrstico), kot je prikazano na spodnjem posnetku zaslona.

Tu sem dodal svoj Ubuntu 20.04 LTS gostitelj vm3.nodekite.com v ubuntu20 skupini.

Ko končate, datoteko shranite s pritiskom na + X, čemur sledi Y in .

Ustvarite konfiguracijsko datoteko Ansible ansible.prim v imeniku vašega projekta, kot sledi:

$ nano ansible.prim

Nato v vrstico vnesite naslednje vrstice ansible.prim mapa:

[privzeto]
inventar = gostitelji
host_key_checking = False

Ko končate, shranite ansible.prim s pritiskom na + X, čemur sledi Y in .

Zdaj poskusite pingati vašega gostitelja Ubuntu, kot sledi:

$ ansible ubuntu20 -u ansible -m ping

Kot lahko vidite, moj Ubuntu 20.04 gostitelj vm3.nodekite.com je dostopna.

Primer 1: Osnove

V tem primeru vam bom pokazal nekaj osnov Ansible register modul. Ansible bom uporabil za ustvarjanje naključnega gesla v mojem Ubuntu 20.04 gostitelj z uporabo pwgen ukaz, shranite geslo v spremenljivko s pomočjo register modul in na zaslon natisnite geslo.

Najprej ustvarite novo igro generiraj_pas.yaml v igralne knjige / imenik, kot sledi:

$ nano playbooks / create_pass.yaml

V vrstico vnesite naslednje vrstice generiraj_pas.yaml mapa:

- gostitelji: ubuntu20
uporabnik: ansible
postati: Resnično
naloge:
- ime: Prepričajte se, da je nameščen pwgen
primeren:
ime: pwgen
stanje: prisotno
update_cache: True
- ime: Ustvari geslo
lupina: pwgen -N 1 -s 30
register: mypass
- ime: Natisnite ustvarjeno geslo
odpravljanje napak:
msg: "Geslo je mypass"

Ko končate, pritisnite + X, čemur sledi Y in , shraniti generiraj_pas.yaml mapa.

Naslednja vrstica pove Ansibleju, da zažene igro generiraj_pas.yaml na vsakem gostitelju v ubuntu20 skupini. V mojem primeru se bo igrana knjiga izvajala na gostitelju vm3.nodekite.com.

V tej knjigi iger bom opredelil tri naloge.

Prva naloga bo zagotovila, da pwgen paket je nameščen.

Druga naloga bo ustvarila naključno 30-mestno geslo z uporabo pwgen ukaz. Uporabil bom register modul za shranjevanje ustvarjenega gesla v mypass spremenljivka.

Tretja naloga bo natisnila mypass s spremenljivko Ansible odpravljanje napak modul.

Zaženite knjigo iger generiraj_pas.yaml z naslednjim ukazom:

$ ansible-playbook playbooks / create_pass.yaml

Kot lahko vidite, je knjiga iger uspešno tekla. Ustvarjeno je bilo tudi geslo.

Zakaj pa spremenljivka mypass natisnite toliko predmetov?

No, spremenljivka mypass je predmet, ki vsebuje nekatere pomembne lastnosti.

Najpomembnejše lastnosti vsakega od register spremenljivke so naslednje:

cmd - Ukaz, ki se je zagnal za generiranje izhoda.

stdout - Izhod ukaza.

stderr - Izpis napake ukaza.

začetek - Datum in čas, ko se je ukaz začel izvajati.

konec - Datum in čas, ko se je ukaz končal.

delta - Čas, potreben za zagon ukaza. To je razlika med konec in začetek lastnosti.

stdout_lines - Matrika, ki vsebuje vsako izhodno vrstico ukaza. Enako kot stdout, ampak stdout loči vrstice z uporabo znakov za novo vrstico (\ n) namesto nizov.

stderr_lines -  Polje, ki vsebuje vsako izhodno vrstico ukaza. Enako kot stderr, ampak stderr ločuje vrstice z uporabo znakov za nove vrstice (\ n) namesto nizov.

Če želite samo natisniti / dostopati do gesla (kar je zelo verjetno), lahko natisnete / dostopate do stdout lastnina mypass spremenljivka v vaši knjigi iger, kot je označeno na spodnjem posnetku zaslona.

$ nano playbooks / create_pass.yaml

Ko končate, zaženite knjigo iger generiraj_pas.yaml ponovno. Natisnjen bo samo niz gesla, kot lahko vidite na spodnjem posnetku zaslona.

To zajema osnove Ansible register modul.

Primer 2: Vsebina imenika za shranjevanje

V tem primeru vam bom pokazal, kako shranite vsebino imenika v spremenljivko z uporabo Ansible register modul, pa tudi kako iterati nad njimi.

Najprej ustvarite novo igro get_dir_contents.yaml v igralne knjige / imenik.

$ nano playbooks / get_dir_contents.yaml

Nato v vrstico vnesite naslednje vrstice get_dir_contents.yaml knjiga z igrami:

- gostitelji: ubuntu20
uporabnik: ansible
postati: Resnično
naloge:
- ime: Seznam vseh datotek in imenikov v / home / ansible
lupina: ls / home / ansible
register: dir_contents
- ime: Natisnite vsebino imenika z zankami
odpravljanje napak:
sporočilo: "element"
zanka: "dir_contents.stdout_lines "

Ko končate, pritisnite + X, čemur sledi Y in , shraniti generiraj_pas.yaml mapa.

V tej knjigi iger bom opredelil dve nalogi.

V prvi nalogi je navedena vsa vsebina / domov / ansible in jih shrani v dir_contents spremenljivka.

Druga naloga natisne dir_contents spremenljivka.

Zaženite get_dir_contents.yaml playbook, kot sledi.

$ ansible-playbook playbooks / get_dir_contents.yaml

Kot lahko vidite, stdout_lines lastnost je shranila vsebino imenika kot matriko. The stdout lastnost je shranjena tudi v vsebini imenika. Te lastnosti so ločene z znaki za novo vrstico (\ n). V tem primeru je stdout_lines z nepremičninami je enostavno delati.

Nato s pomočjo zanke preglejte vsebino imenika.

Če želite to narediti, odprite get_dir_contents.yaml playbook in spremenite drugo nalogo, kot je označeno na spodnjem posnetku zaslona.

$ nano playbooks / get_dir_contents.yaml

Tukaj ponavljam dir_contents.stdout_lines matriko z zanko in tiskanje elementov matrike s pomočjo Ansible odpravljanje napak modul. Pri tej nalogi je element spremenljivka je spremenljivka zanke, ki se uporablja za iteracijo po elementih matrike.

Zaženite get_dir_contents.yaml playbook, kot sledi:

$ ansible-playbook playbooks / get_dir_contents.yaml

Kot lahko vidite, je vsebina / domov / ansible imenika se natisnejo na zaslon.

Primer 3: Varnostno kopiranje imenika

V tem primeru vam bom pokazal, kako varnostno kopirati imenik z uporabo Ansible register, mapa, in kopirati moduli.

Najprej ustvarite novo igro backup_home_dir.yaml v igralne knjige / imenik, kot sledi:

$ nano playbooks / backup_home_dir.yaml

Nato v vrstico vnesite naslednje vrstice backup_home_dir.yaml mapa.

- gostitelji: ubuntu20
uporabnik: ansible
postati: Resnično
naloge:
- ime: Pridobite vsebino domačega imenika / doma / ansibla
lupina: ls / home / ansible
register: dir_contents
- ime: Ustvari nov imenik / tmp / ansible
mapa:
pot: / tmp / ansible
stanje: imenik
- ime: Varnostno kopiraj domači imenik / home / ansible na / tmp / ansible
kopirati:
src: / home / ansible / item
dest: / tmp / ansible /
remote_src: True
zanka: "dir_contents.stdout_lines

Ko končate, pritisnite + X, čemur sledi Y in , shraniti backup_home_dir.yaml mapa.

V tej knjigi iger bom opredelil tri naloge.

Prvo opravilo shrani vsebino datoteke / domov / ansible imenik (imenik, ki ga bom varnostno kopiral) v dir_contents s spremenljivko Ansible register modul.

Druga naloga ustvari nov imenik / tmp / ansible z uporabo Ansible mapa modul. To je imenik, v katerem bo shranjena varnostna kopija.

Tretja naloga se vrti skozi dir_contents.stdout_lines array in uporablja Ansible kopirati modul za kopiranje vsakega imenika v / tmp / ansible / imenik.

Zaženite backup_home_dir.yaml playbook, kot sledi:

$ ansible-playbook playbooks / backup_home_dir.yaml

Kot lahko vidite, na mojem Ubuntu 20.04 LTS gostitelj, varnostno kopiranje je bilo uspešno.

Primer 4: Zaženi ali preskoči naloge

V tem primeru vam bom pokazal, kako zagnati ali preskočiti opravila, odvisno od spremenljivke, ki ste jo registrirali, z uporabo register modul.

Najprej ustvarite novo igro pogoji_registra.yaml v igralne knjige / imenik, kot sledi:

$ nano playbooks / register_conditions.yaml

Nato v vrstico vnesite naslednje vrstice pogoji_registra.yaml mapa.

- gostitelji: ubuntu20
uporabnik: ansible
postati: Resnično
naloge:
- ime: Seznam vsebine imenika
lupina: ls / home / ansible / test3
register: dir_contents
- ime: Preverite, ali je imenik prazen
odpravljanje napak:
msg: "Imenik je prazen."
kdaj: dir_contents.stdout == ""

Ko končate, pritisnite + X, čemur sledi Y in , shraniti pogoji_registra.yaml mapa.

V tej knjigi iger sem opredelil dve nalogi.

Prvo opravilo shrani vsebino datoteke / home / ansible / test3 v imeniku dir_contents spremenljivka.

Druga naloga preveri, če dir_contents.stdout je prazen niz, ali pa imenik / home / ansible / test3 je prazno. Če je imenik prazen, sporočilo Imenik je prazen bo natisnil.

Zaženite pogoji_registra.yaml playbook, kot sledi:

$ ansible-playbook playbooks / register_conditions.yaml

Kot lahko vidite, je knjiga iger uspešno tekla.

Ker imenik / home / ansible / test3 je prazna, v knjigi je sporočilo natisnjeno Imenik je prazen.

Nato ustvarite novo datoteko v / home / ansible / test3 imenik.

$ touch test3 / myfile

Ker je / home / ansible / test3 imenik ni več prazen, naloga Preverite, ali je imenik prazen je preskočeno, kot lahko vidite na spodnjem posnetku zaslona.

$ ansible-playbook playbooks / register_conditions.yaml

Zaključek

Ansible register modul je zelo uporaben za avtomatizacijo strežnikov. Ta članek vam je pokazal osnove register modul, vključno s primeri uporabe Ansible register modul za shranjevanje in varnostno kopiranje imenika ter za izvajanje imeniških nalog.

5 najboljših arkadnih iger za Linux
Dandanes so računalniki resni stroji, ki se uporabljajo za igre na srečo. Če ne boste mogli dobiti novega visokega rezultata, boste vedeli, kaj mislim...
Bitka za Wesnoth 1.13.6 Razvoj izdan
Bitka za Wesnoth 1.13.6, ki je izšel prejšnji mesec, je šesta razvojna izdaja v 1.13.x series in prinaša številne izboljšave, predvsem uporabniški vme...
Kako namestiti League Of Legends na Ubuntu 14.04
Če ste ljubitelj League of Legends, je to priložnost, da preizkusite League of Legends. Upoštevajte, da LOL podpira PlayOnLinux, če uporabljate Linux....