Preduvjeti
Ako želite isprobati primjere u ovom članku, morate:
1) Neka je Ansible instaliran na računalu.
2) Neka Ubuntu domaćin bude konfiguriran za Ansible automatizaciju.
Na LinuxHintu postoji mnogo članaka posvećenih instaliranju programa Ansible i konfiguriranju hostova za automatizaciju programa Ansible. Ako je potrebno, možete provjeriti ove članke.
Postavljanje direktorija projekata
Prije nego što nastavite dalje, postavite novi direktorij projekta Ansible, samo da stvari budu malo organizirane.
Za stvaranje direktorija projekta registracija-demo / i sve potrebne poddirektorijume (u vašem trenutnom radnom direktoriju), pokrenite sljedeću naredbu:
$ mkdir -pv register-demo / playbooks
Jednom kad se kreira direktorij projekta, prijeđite na direktorij projekta, kako slijedi:
$ cd registracija-demo /
Stvoriti domaćini inventarna datoteka, kako slijedi:
$ nano domaćini
Dodajte IP ili DNS ime vašeg hosta Ubuntu u datoteku inventara (jedan host u retku), kao što je prikazano na snimci zaslona u nastavku.
Evo, dodao sam svoj Ubuntu 20.04 LTS domaćin vm3.nodekite.com u ubuntu20 skupina.
Nakon što završite, datoteku spremite pritiskom na
Stvorite konfiguracijsku datoteku Ansible ansible.usp u vašem direktoriju projekta, kako slijedi:
$ nano ansible.usp
Zatim unesite sljedeće retke u ansible.usp datoteka:
[zadane postavke]inventar = domaćini
host_key_checking = Netačno
Nakon što završite, spremite ansible.usp datoteku pritiskom na
Sada pokušajte pingati vaš Ubuntu domaćin, kako slijedi:
$ ansible ubuntu20 -u ansible -m ping
Kao što vidite, moj Ubuntu 20.04 domaćin vm3.nodekite.com je dostupan.
Primjer 1: Osnove
U ovom primjeru pokazat ću vam neke od osnova Ansiblea Registar modul. Koristit ću Ansible za generiranje slučajne lozinke u mom Ubuntu 20.04 domaćin koristeći pwgen naredbu, pohranite lozinku u varijablu pomoću Registar modul i ispišite lozinku na zaslon.
Prvo izradite novu knjigu pjesama generiraj_prolaz.yaml u igraonice / direktorij, kako slijedi:
$ nano knjige / play_pass.yaml
Utipkajte sljedeće retke u generiraj_prolaz.yaml datoteka:
- domaćini: ubuntu20korisnik: ansible
postati: Istina
zadaci:
- ime: Provjerite je li instaliran pwgen
prikladan:
naziv: pwgen
stanje: prisutno
update_cache: Tačno
- ime: Generiraj lozinku
ljuska: pwgen -N 1 -s 30
registar: mypass
- ime: Ispis generirane lozinke
otklanjanje pogrešaka:
msg: "Lozinka je mypass"
Kada završite, pritisnite
Sljedeći redak govori Ansibleu da pokrene knjigu s igrama generiraj_prolaz.yaml na svakom domaćinu u ubuntu20 skupina. U mom slučaju, igrana knjiga će se pokretati na hostu vm3.nodekite.com.
U ovoj priručniku definirat ću tri zadatka.
Prvi zadatak osigurat će da pwgen paket je instaliran.
Drugi će zadatak generirati slučajnu lozinku od 30 znakova pomoću pwgen naredba. Ja ću koristiti Registar modul za pohranu generirane lozinke u mypass varijabilna.
Treći zadatak ispisat će mypass varijabla pomoću Ansible otklanjanje pogrešaka modul.
Pokrenite knjigu s igrama generiraj_prolaz.yaml koristeći sljedeću naredbu:
$ ansible-playbook playbooks / generiraj_prolaz.yaml
Kao što vidite, priručnik se uspješno izvodio. Također je generirana lozinka.
Ali, zašto varijabla mypass ispisati toliko predmeta?
Pa, varijabla mypass je objekt koji sadrži neka važna svojstva.
Najvažnija svojstva svakog od Registar varijable su kako slijedi:
cmd - Naredba koja se pokrenula za generiranje rezultata.
stdout - Izlaz naredbe.
stderr - Izlaz pogreške naredbe.
početak - Datum i vrijeme kada je zapovijed započela izvršenje.
kraj - Datum i vrijeme kada je naredba završila s izvršavanjem.
delta - Vrijeme potrebno za pokretanje naredbe. To je razlika između kraj i početak Svojstva.
stdout_lines - Niz koji sadrži svaki izlazni redak naredbe. Isto kao stdout, ali stdout razdvaja linije pomoću znakova za novi redak (\ n) umjesto nizova.
stderr_lines - Niz koji sadrži svaku liniju izlaza pogreške naredbe. Isto kao stderr, ali stderr razdvaja linije pomoću znakova za nove redove (\ n) umjesto nizova.
Ako samo želite ispisati / pristupiti nizu lozinke (što je vrlo vjerojatno), možete ispisati / pristupiti stdout vlasništvo mypass varijabla u vašoj knjizi pjesama, kao što je označeno na snimci zaslona u nastavku.
$ nano playbooks / generiraj_prolaz.yaml
Kad završite, pokrenite knjigu s igrama generiraj_prolaz.yaml opet. Ispisat će se samo niz lozinke, kao što možete vidjeti na snimci zaslona u nastavku.
To pokriva osnove Ansiblea Registar modul.
Primjer 2: Sadržaj direktorija trgovine
U ovom primjeru pokazat ću vam kako pohraniti sadržaj direktorija u varijablu koristeći Ansible Registar modul, kao i kako ih prevrtati.
Prvo izradite novu knjigu pjesama get_dir_contents.yaml u igraonice / imenik.
$ nano playbooks / get_dir_contents.yaml
Zatim unesite sljedeće retke u get_dir_contents.yaml knjiga s igrama:
- domaćini: ubuntu20korisnik: ansible
postati: Istina
zadaci:
- ime: Popis svih datoteka i direktorija u / home / ansible
ljuska: ls / home / ansible
registar: dir_contents
- ime: Ispis sadržaja direktorija pomoću petlji
otklanjanje pogrešaka:
msg: "item"
petlja: "dir_contents.stdout_lines "
Kada završite, pritisnite
U ovoj priručniku definirat ću dva zadatka.
Prvi zadatak navodi sav sadržaj datoteke / home / ansible direktorij i pohranjuje ih u dir_contents varijabilna.
Drugi zadatak ispisuje dir_contents varijabilna.
Pokrenite get_dir_contents.yaml playbook, kako slijedi.
$ ansible-playbook playbooks / get_dir_contents.yamlKao što vidite, stdout_lines svojstvo je pohranilo sadržaj direktorija kao niz. The stdout svojstvo se također pohranjuje u sadržaj direktorija. Ta su svojstva odvojena znakovima novog reda (\ n). U ovom primjeru, stdout_lines s imovinom je lako raditi.
Dalje, pređite preko sadržaja direktorija pomoću petlje.
Da biste to učinili, otvorite get_dir_contents.yaml playbook i promijenite drugi zadatak, kao što je označeno na snimci zaslona u nastavku.
$ nano playbooks / get_dir_contents.yaml
Evo, ponavljam preko dir_contents.stdout_lines niz pomoću petlje i ispis stavki niza pomoću Ansible otklanjanje pogrešaka modul. U ovom zadatku, artikal varijabla je varijabla petlje koja se koristi za itiranje preko elemenata niza.
Pokrenite get_dir_contents.yaml playbook, kako slijedi:
$ ansible-playbook playbooks / get_dir_contents.yamlKao što vidite, sadržaj datoteke / home / ansible direktorij ispisuju se na ekranu.
Primjer 3: Izrada sigurnosne kopije direktorija
U ovom primjeru pokazat ću vam kako napraviti sigurnosnu kopiju direktorija pomoću Ansiblea Registar, datoteka, i kopirati modula.
Prvo izradite novu knjigu pjesama backup_home_dir.yaml u igraonice / direktorij, kako slijedi:
$ nano playbooks / backup_home_dir.yaml
Zatim unesite sljedeće retke u backup_home_dir.yaml datoteka.
- domaćini: ubuntu20korisnik: ansible
postati: Istina
zadaci:
- ime: Nabavite sadržaj kućnog direktorija / kuće / odgovora
ljuska: ls / home / ansible
registar: dir_contents
- ime: Stvorite novi direktorij / tmp / ansible
datoteka:
putanja: / tmp / ansible
stanje: direktorij
- ime: Sigurnosna kopija kućnog direktorija / home / ansible na / tmp / ansible
kopirati:
src: / home / ansible / item
dest: / tmp / ansible /
remote_src: Tačno
petlja: "dir_contents.stdout_lines
Kada završite, pritisnite
U ovoj priručniku definirat ću tri zadatka.
Prvi zadatak sprema sadržaj datoteke / home / ansible direktorij (direktorij koji ću sigurnosno kopirati) u dir_contents varijabla pomoću Ansible Registar modul.
Drugi zadatak stvara novi direktorij / tmp / ansible koristeći Ansible datoteka modul. Ovo je direktorij u kojem će biti pohranjena sigurnosna kopija.
Treći zadatak petlja kroz dir_contents.stdout_lines niz i koristi Ansible kopirati modul za kopiranje svakog direktorija u / tmp / ansible / imenik.
Pokrenite backup_home_dir.yaml playbook, kako slijedi:
$ ansible-playbook playbooks / backup_home_dir.yaml
Kao što vidite, na mom Ubuntu 20.04 LTS domaćina, sigurnosna kopija bila je uspješna.
Primjer 4: Pokreni ili preskoči zadatke
U ovom primjeru pokazat ću vam kako pokretati ili preskakati zadatke, ovisno o varijabli koju ste registrirali, pomoću Registar modul.
Prvo izradite novu knjigu pjesama uvjeti_registra.yaml u igraonice / direktorij kako slijedi:
$ nano playbooks / register_conditions.yaml
Zatim unesite sljedeće retke u uvjeti_registara.yaml datoteka.
- domaćini: ubuntu20korisnik: ansible
postati: Istina
zadaci:
- ime: Popis sadržaja direktorija
ljuska: ls / home / ansible / test3
registar: dir_contents
- ime: Provjerite je li direktorij prazan
otklanjanje pogrešaka:
msg: "Direktorij je prazan."
kada: dir_contents.stdout == ""
Kada završite, pritisnite
U ovoj knjizi priručnika definirao sam dva zadatka.
Prvi zadatak sprema sadržaj datoteke / home / ansible / test3 direktorij u dir_contents varijabilna.
Drugi zadatak provjerava je li dir_contents.stdout je prazan niz ili je li direktorij / home / ansible / test3 prazno je. Ako je direktorij prazan, poruka Imenik je prazan ispisat će.
Pokrenite uvjeti_registra.yaml playbook, kako slijedi:
$ ansible-playbook playbooks / register_conditions.yamlKao što vidite, priručnik se uspješno izvodio.
Budući da je direktorij / home / ansible / test3 je prazno, knjiga za reprodukciju ispisala je poruku Imenik je prazan.
Zatim stvorite novu datoteku u / home / ansible / test3 imenik.
$ touch test3 / myfile
Budući da je / home / ansible / test3 direktorij više nije prazan, zadatak Provjerite je li direktorij prazan preskače se, kao što možete vidjeti na donjoj snimci zaslona.
$ ansible-playbook playbooks / register_conditions.yaml
Zaključak
Odgovoran Registar modul je vrlo koristan za automatizaciju poslužitelja. Ovaj vam je članak pokazao osnove Registar modul, uključujući primjere korištenja Ansible Registar modul za pohranu i sigurnosno kopiranje direktorija te za izvršavanje zadataka direktorija.