Anonīms

Kā izmantot Ansible Register moduli

Kā izmantot Ansible Register moduli
Programmā Ansible jūs varat palaist jebkuru čaulas komandu savos Ansible resursdatoros - resursdatoros, kurus konfigurēsit ar Ansible. Šīm čaulas komandām var būt izejas. Pēc noklusējuma izeja tiek ignorēta. Ja vēlaties saglabāt izvadi mainīgajā un izmantot to vēlāk, varat izmantot Ansible reģistrēties modulis. Šis raksts parādīs, kā izmantot Ansible reģistrēties moduli, lai saglabātu komandu izvadi mainīgajā un piekļūtu tam vēlāk savā Ansible playbook.

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 + X, sekoja un .

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 + X, sekoja un .

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: ubuntu20
lietotā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 + X, sekoja un , lai saglabātu ģenerēt pāreju.yaml failu.

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: ubuntu20
lietotā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 + X, sekoja un , lai saglabātu ģenerēt pāreju.yaml failu.

Š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.yaml

Kā 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.yaml

Kā 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: ubuntu20
lietotā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 + X, sekoja un , lai saglabātu backup_home_dir.yaml failu.

Š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: ubuntu20
lietotā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 + X, sekoja un , lai saglabātu reģistrēt_nosacījumus.yaml failu.

Š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.yaml

Kā 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.

Kā mainīt peles rādītāja un kursora izmēru, krāsu un shēmu operētājsistēmā Windows 10
Peles rādītājs un kursors operētājsistēmā Windows 10 ir ļoti svarīgi operētājsistēmas aspekti. To var teikt arī par citām operētājsistēmām, tāpēc pati...
Bezmaksas un atvērtā koda spēļu dzinēji Linux spēļu izstrādei
Šis raksts aptvers bezmaksas un atvērtā koda spēļu motoru sarakstu, kurus var izmantot, lai izstrādātu 2D un 3D spēles Linux. Šādu spēļu dzinēju ir da...
Tomb Raider for Linux apmācība
Tomb Raider ēna ir divpadsmitais papildinājums Tomb Raider sērijai - darbības piedzīvojumu spēļu franšīzei, kuru izveidoja Eidos Montreal. Spēli gan k...