Priekšnoteikumi
Ja vēlaties izmēģināt šī raksta piemērus, jums:
1) Vai datorā ir instalēta programma Ansible.
2) Ļaujiet konfigurēt Ubuntu resursdatoru Ansible automatizācijai.
Vietnē LinuxHint ir daudz rakstu, kas veltīti Ansible instalēšanai un resursdatoru konfigurēšanai Ansible automatizācijai. Vajadzības gadījumā jūs varat pārbaudīt šos rakstus.
Projektu direktorijas iestatīšana
Pirms turpināt darbu, izveidojiet jaunu Ansible projekta direktoriju, lai lietas būtu mazliet sakārtotas.
Lai izveidotu projekta direktoriju register-demo / un visas nepieciešamās apakšdirektorijas (pašreizējā darba direktorijā), izpildiet šādu komandu:
$ mkdir -pv register-demo / playbooks
Kad projekta direktorijs ir izveidots, dodieties uz projekta direktoriju šādi:
$ cd register-demo /
Izveidojiet a saimniekiem krājuma fails:
$ nano saimnieki
Inventāra failā pievienojiet sava Ubuntu resursdatora resursdatora IP vai DNS nosaukumu (viens resursdators katrā rindā), kā parādīts zemāk esošajā ekrānuzņēmumā.
Šeit es esmu pievienojis savu Ubuntu 20.04 LTS saimnieks vm3.nodekite.com iekš ubuntu20 grupa.
Kad esat pabeidzis, saglabājiet failu, nospiežot
Izveidojiet Ansible konfigurācijas failu iespējams.cfg projekta direktorijā šādi:
$ nano ansible.cfg
Pēc tam ierakstiet šādas rindiņas iespējams.cfg fails:
[noklusējumi]inventārs = saimnieki
host_key_checking = Nepatiesa
Kad esat pabeidzis, saglabājiet iespējams.cfg failu, nospiežot
Tagad mēģiniet pingēt Ubuntu resursdatoru šādi:
$ ansible ubuntu20 -u ansible -m ping
Kā redzat, mans Ubuntu 20.04 saimnieks vm3.nodekite.com ir pieejams.
1. piemērs: pamati
Šajā piemērā es parādīšu dažus no Ansible pamatiem reģistrēties modulis. Es izmantošu Ansible, lai ģenerētu nejaušu paroli savā Ubuntu 20.04 resursdators, izmantojot pwgen komandu, saglabājiet paroli mainīgajā, izmantojot reģistrēties moduli un ekrānā izdrukājiet paroli.
Vispirms izveidojiet jauno rotaļlietu grāmatu ģenerēt pāreju.yaml iekš playbooks / direktorijā:
$ nano playbooks / generator_pass.yaml
Ierakstiet šādas rindiņas ģenerēt pāreju.yaml fails:
- saimnieki: ubuntu20lietotājs: ansible
kļūt: Patiesi
uzdevumi:
- nosaukums: Pārliecinieties, vai ir instalēts pwgen
apt:
nosaukums: pwgen
stāvoklis: klāt
update_cache: True
- nosaukums: ģenerēt paroli
apvalks: pwgen-N 1 -s 30
reģistrēties: mypass
- nosaukums: izdrukājiet izveidoto paroli
atkļūdošana:
msg: "Parole ir mypass"
Kad esat pabeidzis, nospiediet
Nākamajā rindiņā Ansible ir norādīts palaist atskaņošanas grāmatu ģenerēt pāreju.yaml katram uzņēmējam ubuntu20 grupa. Manā gadījumā spēļu grāmata tiks palaista saimniekam vm3.nodekite.com.
Šajā rotaļgrāmatā es definēšu trīs uzdevumus.
Pirmais uzdevums nodrošinās, ka pwgen pakotne ir instalēta.
Otrais uzdevums ģenerēs nejaušu 30 rakstzīmju paroli, izmantojot pwgen komandu. Es izmantošu reģistrēties modulis, lai saglabātu ģenerēto paroli mypass mainīgais.
Trešais uzdevums izdrukās mypass mainīgais, izmantojot Ansible atkļūdošana modulis.
Palaidiet atskaņošanas grāmatu ģenerēt pāreju.yaml izmantojot šādu komandu:
$ ansible-playbook playbooks / generator_pass.yaml
Kā redzat, spēļu grāmata veiksmīgi darbojās. Ir ģenerēta arī parole.
Bet kāpēc mainīgais mypass izdrukājiet tik daudz priekšmetu?
Nu, mainīgais mypass ir objekts, kas satur dažas svarīgas īpašības.
Svarīgākās katra no šīm īpašībām reģistrēties mainīgie ir šādi:
cmd - Komanda, kas darbojās, lai ģenerētu izvadi.
stdout - Komandas izeja.
stderr - Kļūdas izvades komanda.
sākt - Datums un laiks, kad komanda sāka izpildīt.
beigas - Datums un laiks, kad komanda ir pabeigusi izpildi.
delta - Laiks, kas vajadzīgs komandas izpildei. Šī ir atšķirība starp beigas un sākt īpašības.
stdout_lines - Masīvs, kas satur katru komandas izejas rindu. Tāds pats kā stdout, bet stdout atdala rindas, izmantojot masīvu vietā jaunas līnijas (\ n) rakstzīmes.
stderr_lines - Masīvs, kas satur katru kļūdas izvades rindu komandā. Tāds pats kā stderr, bet stderr atdala rindas, izmantojot masīvu vietā jaunas līnijas (\ n).
Ja vēlaties tikai izdrukāt / piekļūt paroles virknei (kas ir ļoti iespējams), varat izdrukāt / piekļūt stdout īpašums mypass mainīgais jūsu spēles grāmatā, kā norādīts zemāk redzamajā ekrānuzņēmumā.
$ nano playbooks / generator_pass.yaml
Kad esat pabeidzis, palaidiet atskaņošanas grāmatu ģenerēt pāreju.yaml atkal. Tiks izdrukāta tikai paroles virkne, kā redzat zemāk redzamajā ekrānuzņēmumā.
Tas aptver Ansible pamatus reģistrēties modulis.
2. piemērs: Veikala direktorija saturs
Šajā piemērā es parādīšu, kā direktorija saturu var saglabāt mainīgajā, izmantojot Ansible reģistrēties moduli, kā arī to, kā tos atkārtot.
Vispirms izveidojiet jauno rotaļlietu grāmatu get_dir_contents.yaml iekš playbooks / direktorijā.
$ nano playbooks / get_dir_contents.yaml
Pēc tam ierakstiet šādas rindiņas get_dir_contents.yaml spēļu grāmata:
- saimnieki: ubuntu20lietotājs: ansible
kļūt: Patiesi
uzdevumi:
- nosaukums: Sarakstiet visus failus un direktorijus mapē / home / ansible
apvalks: ls / home / ansible
reģistrēties: dir_contents
- nosaukums: Drukājiet direktorija saturu, izmantojot cilpas
atkļūdošana:
ziņojums: "item"
cilpa: "dir_contents.stdout_lines "
Kad esat pabeidzis, nospiediet
Šajā rotaļgrāmatā es definēšu divus uzdevumus.
Pirmajā uzdevumā ir uzskaitīts viss / home / ansible direktorijā un glabā tos dir_contents mainīgais.
Otrais uzdevums izdrukā dir_contents mainīgais.
Palaidiet get_dir_contents.yaml playbook šādi.
$ ansible-playbook playbooks / get_dir_contents.yamlKā redzat, stdout_lines rekvizīts glabāja direktorija saturu kā masīvu. The stdout rekvizīts tiek saglabāts arī direktorija saturā. Šīs īpašības atdala ar newline (\ n) rakstzīmēm. Šajā piemērā stdout_lines ar īpašumu ir viegli strādāt.
Pēc tam atkārtojiet direktorija saturu, izmantojot cilpu.
Lai to izdarītu, atveriet get_dir_contents.yaml un mainiet otro uzdevumu, kā norādīts zemāk redzamajā ekrānuzņēmumā.
$ nano playbooks / get_dir_contents.yaml
Šeit es atkārtoju dir_contents.stdout_lines masīvu, izmantojot cilpu, un masīva elementu izdrukāšanu, izmantojot Ansible atkļūdošana modulis. Šajā uzdevumā lieta mainīgais ir cilpas mainīgais, ko izmanto, lai atkārtotu masīva elementus.
Palaidiet get_dir_contents.yaml playbook šādi:
$ ansible-playbook playbooks / get_dir_contents.yamlKā redzat, / home / ansible direktorija tiek drukāta uz ekrāna.
3. piemērs: direktorija dublēšana
Šajā piemērā es parādīšu, kā dublēt direktoriju, izmantojot Ansible reģistrēties, failu, un kopija moduļi.
Vispirms izveidojiet jauno rotaļlietu grāmatu backup_home_dir.yaml iekš playbooks / direktorijā:
$ nano playbooks / backup_home_dir.yaml
Pēc tam ierakstiet šādas rindiņas backup_home_dir.yaml failu.
- saimnieki: ubuntu20lietotājs: ansible
kļūt: Patiesi
uzdevumi:
- nosaukums: iegūt mājas direktoriju / home / ansible content
apvalks: ls / home / ansible
reģistrēties: dir_contents
- nosaukums: izveidojiet jaunu direktoriju / tmp / ansible
fails:
ceļš: / tmp / ansible
stāvoklis: direktorijs
- nosaukums: Rezerves mājas direktorija / home / ansible to / tmp / ansible
kopija:
src: / home / ansible / item
dest: / tmp / ansible /
remote_src: Patiesi
cilpa: "dir_contents.stdout_lines
Kad esat pabeidzis, nospiediet
Šajā rotaļgrāmatā es definēšu trīs uzdevumus.
Pirmajā uzdevumā tiek glabāts / home / ansible direktorijā (direktorijā, kuru dublēšu) dir_contents mainīgais, izmantojot Ansible reģistrēties modulis.
Otrais uzdevums izveido jaunu direktoriju / tmp / ansible izmantojot Ansible failu modulis. Šis ir katalogs, kurā tiks saglabāta dublējumkopija.
Trešais uzdevums notiek caur dir_contents.stdout_lines masīvs un izmanto Ansible kopija moduli, lai kopētu katru direktoriju / tmp / ansible / direktorijā.
Palaidiet backup_home_dir.yaml playbook šādi:
$ ansible-playbook playbooks / backup_home_dir.yaml
Kā redzat, manā Ubuntu 20.04 LTS resursdators, dublēšana bija veiksmīga.
4. piemērs: Uzdevumu izpildīšana vai izlaišana
Šajā piemērā es parādīšu, kā izpildīt vai izlaist uzdevumus, atkarībā no reģistrētā mainīgā, izmantojot reģistrēties modulis.
Vispirms izveidojiet jauno rotaļlietu grāmatu reģistrēt_nosacījumus.yaml iekš playbooks / direktoriju šādi:
$ nano playbooks / register_conditions.yaml
Pēc tam ierakstiet šādas rindiņas reģistrēt_nosacījumus.yaml failu.
- saimnieki: ubuntu20lietotājs: ansible
kļūt: Patiesi
uzdevumi:
- nosaukums: Saraksta direktorija satura saraksts
apvalks: ls / home / ansible / test3
reģistrēties: dir_contents
- nosaukums: Pārbaudiet, vai direktorijs ir tukšs
atkļūdošana:
msgstr: "Katalogs ir tukšs."
kad: dir_contents.stdout == ""
Kad esat pabeidzis, nospiediet
Šajā spēles grāmatā esmu definējis divus uzdevumus.
Pirmajā uzdevumā tiek saglabāts / home / ansible / test3 direktorijā dir_contents mainīgais.
Otrais uzdevums pārbauda, vai dir_contents.stdout ir tukša virkne vai direktorija nosaukums / home / ansible / test3 ir tukšs. Ja direktorijs ir tukšs, tiek parādīts ziņojums Katalogs ir tukšs izdrukās.
Palaidiet reģistrēt_nosacījumus.yaml playbook šādi:
$ ansible-playbook atskaņošanas grāmatas / register_conditions.yamlKā redzat, spēļu grāmata veiksmīgi darbojās.
Kopš direktorija / home / ansible / test3 ir tukšs, grāmata izdrukāja ziņojumu Katalogs ir tukšs.
Pēc tam izveidojiet jaunu failu mapē / home / ansible / test3 direktorijā.
$ touch test3 / myfile
Kopš / home / ansible / test3 direktorija vairs nav tukša, uzdevums Pārbaudiet, vai direktorijs ir tukšs tiek izlaists, kā redzat zemāk redzamajā ekrānuzņēmumā.
$ ansible-playbook atskaņošanas grāmatas / register_conditions.yaml
Secinājums
Ansible reģistrēties modulis ir ļoti noderīgs servera automatizācijai. Šis raksts parādīja reģistrēties modulis, ieskaitot Ansible izmantošanas piemērus reģistrēties modulis direktoriju glabāšanai un dublēšanai, kā arī direktoriju uzdevumu izpildei.