Anonīms

Kā izmantot Ansible Template Module

Kā izmantot Ansible Template Module
Ansible veidne moduli galvenokārt izmanto, lai kopētu failus no Ansible klienta (kur ir instalēta Ansible) uz Ansible saimniekiem (pārvalda Ansible). Ieguvums, lietojot veidne modulis, nevis kopija modulis, vai tas ir Ansible veidne modulis var izmantot Jinja2 veidņu valodu. Jinja2 ir spēcīga Python veidņu valoda, ar kuras palīdzību jūs varat ģenerēt konfigurācijas failus, tīmekļa lapas utt. Jinja2 veidnēs varat izmantot arī Ansible fact mainīgos, cilpas un nosacījumus.

Šis raksts parādīs, kā izmantot Ansible veidne modulis un daži Jinja2 veidņu valodas pamati. Tātad, sāksim darbu!

Priekšnoteikumi


Ja vēlaties izmēģināt šī raksta piemērus:

1) Jūsu datorā jābūt instalētai programmai Ansible.

2) Jums jābūt vismaz Ubuntu / Debian resursdatoram vai CentOS / RHEL 8 resursdatoram, kas konfigurēts iespējamai automatizācijai.

Vietnē LinuxHint ir daudz rakstu, kas veltīti Ansible instalēšanai un resursdatoru konfigurēšanai Ansible automatizācijai. Ja nepieciešams, varat pārbaudīt arī šos.

Ansible Project Directory iestatīšana

Pirms mēs dodamies tālāk, ir ieteicams izveidot projekta direktoriju struktūru, lai lietas būtu mazliet sakārtotas.

Lai izveidotu projekta direktoriju template-demo / un visas nepieciešamās apakšdirektorijas (pašreizējā darba direktorijā), izpildiet šādu komandu:

$ mkdir -pv template-demo / playbooks / templates

Kad projekta direktorijs ir izveidots, dodieties uz projekta direktoriju šādi:

$ cd template-demo /

Izveidojiet a saimniekiem krājuma fails:

$ nano saimnieki

Pēc tam pievienojiet sava resursdatora IP vai DNS nosaukumu (vm1.nodekite.com un vm2.nodekite.com) inventarizācijas lietā.

Kad esat pabeidzis šo darbību, saglabājiet failu, nospiežot + X, sekoja un .

Projekta direktorijā izveidojiet Ansible konfigurācijas failu šādi:

$ nano ansible.cfg

Pēc tam ierakstiet šādas rindiņas iespējams.cfg failu.

Kad esat pabeidzis šo darbību, saglabājiet failu, nospiežot + X, sekoja un .

Šajā brīdī projekta direktorijai vajadzētu izskatīties šādi:

$ koks

Kā redzat, ir pieejami arī Ansible saimnieki. Tātad, mēs varam pāriet uz nākamo šī raksta sadaļu.

$ ansible all -u ansible -m ping

Iespējamās veidnes moduļa pamati

The veidne modulis Ansible pieņem tādas pašas iespējas kā kopija modulis.

Bieži Ansible veidne moduļa iespējas:

src - Datora Jinja2 veidnes faila ceļš, kuru parsēs Jinja2 veidņu valoda un nokopēs attālajos resursdatoros.
gal - Galamērķa ceļš uz attālajiem resursdatoriem, uz kuriem tiks kopēts fails.
īpašnieks - Attālā saimniekdatora faila īpašnieks.
grupa - Attālā saimniekdatora faila grupa.
režīmā - Faila atļaujas režīms attālajos resursdatoros.

Apskatīsim piemēru.

Vispirms izveidojiet jaunu Ansible playbook copy_file_template1.yaml iekš playbooks / direktorijā:

$ nano playbooks / copy_file_template1.yaml

Pēc tam ierakstiet šādas rindiņas copy_file_template1.yaml rotaļu grāmata.

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: Kopēt indeksu.HTML failu uz serveri
veidne:
src: indekss.jinja2
dest: / home / ansible / index.html
īpašnieks: ansible
grupa: ansible
režīms: 0644

Šī spēļu grāmata kopēs indekss.jinja2 failu no rotaļlietas / veidnes / direktoriju (salīdzinājumā ar jūsu projekta direktoriju) attāliem saimniekiem, izmantojot Ansible veidne modulis.

Kad esat pabeidzis šo darbību, saglabājiet failu, nospiežot + X, sekoja un .

Izveidojiet indekss.jinja2 veidnes fails atskaņošanas grāmatas / veidnes direktorijā:

$ nano playbooks / templates / index.jinja2

Ierakstiet šādas rindiņas indekss.jinja2 veidnes fails:




Jinja2 veidnes demonstrācija


Laipni lūdzam Linuxhint!



Šis ir tikai vienkāršs HTML fails. Es šeit neizmantoju nevienu iedomātu Jinja2 sintaksi.

Kad esat pabeidzis šo darbību, saglabājiet failu, nospiežot + X, sekoja un .

Palaidiet atskaņošanas grāmatu copy_file_template1.yaml sekojoši:

$ ansible-playbook playbooks / copy_file_template1.yaml

Spēļu grāmatai vajadzētu darboties veiksmīgi.

Kā redzat, indekss.jinja2 veidne tika renderēta, izmantojot Jinja2 veidņu valodu. Izveidotais saturs jāpārkopē uz indekss.html attālo saimnieku fails.

Mainīgo drukāšana Jinja2 veidnē

Jinja2 veidnēs varat izmantot Ansible Facts, mainīgos un lietotāja definētos mainīgos.

Jinja2 veidnē varat izdrukāt mainīgā vērtību, izmantojot mainīgaisName sintakse. Ja mainīgais ir objekts, varat izdrukāt atsevišķu objektu rekvizītus, izmantojot objektsVariable.īpašuma nosaukums sintakse.

Nākamajā piemērā mēs izdrukāsim datums īpašums ansible_date_time objekts mūsu indekss.jinja2 veidne.

$ ansible all -u ansible -m iestatīšana | egrep - krāsa “datums | laiks”

Vispirms atveriet indekss.jinja2 veidnes failu ar nano teksta redaktoru šādi:

$ nano playbooks / templates / index.jinja2

Pievienojiet rindai šādu rindu indekss.jinja2 veidnes fails:

Lapa izveidota ansible_date_time.datums

Fināls indekss.jinja2 failam vajadzētu izskatīties tā, kā parādīts zemāk esošajā ekrānuzņēmumā.

Kad esat pabeidzis šo darbību, saglabājiet failu, nospiežot + X, sekoja un .

Palaidiet atskaņošanas grāmatu copy_file_template1.yaml sekojoši:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kā redzat, indekss.jinja2 veidni apstrādāja Jinja2 veidņu valoda, un tā aizstāja ansible_date_time.datums mainīgais ar datumu GGGG-MM-DD formātā. Pēc tam produkcija tika nokopēta indekss.html failu attālajā resursdatorā.

Nosacījums, ja paziņojums Jinja2 veidnē

Jinja2 veidņu valoda atbalsta nosacīto ja paziņojumi. Pirms kaut ko drukāt, izmantojot., Varat pārbaudīt dažus mainīgos ja paziņojums, apgalvojums.

Jinja2 ja sintakse ir šāda:

%, ja nosacījums%
Dariet kaut ko, ja nosacījums ir patiess
% endif%

Apskatīsim Jinja2 piemēru ja paziņojums, apgalvojums.

Šajā sadaļā es parādīšu Jinja2 ja paziņojums, izmantojot ansible_distribution fakti mainīgs.

$ ansible all -u ansible -m iestatīšana | egrep - krāsa "dist"

Vispirms atveriet indekss.jinja2 Jinja2 veidne ar nano teksta redaktoru:

$ nano playbooks / templates / index.jinja2

Pēc tam pievienojiet šādas rindas indekss.jinja2 veidnes fails:

% if ansible_distribution == "Debian"%

Jūs izmantojat Debian Linux


% endif%

Lūk, es esmu pārbaudījis, vai ansible_distribution ir Debian. Ja tā ir, tad izdrukājiet virkni

Jūs izmantojat Debian Linux

. Pretējā gadījumā to nedrukājiet.

Visbeidzot indekss.jinja2 veidnes failam vajadzētu izskatīties tā, kā parādīts zemāk esošajā ekrānuzņēmumā.

Kad esat rediģējis failu, saglabājiet failu, nospiežot + X, sekoja un .

Tagad palaidiet spēļu grāmatu copy_file_template1.yaml sekojoši:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kā redzat, manā Debian attālajā resursdatorā indekss.html failā ir līnija

Jūs izmantojat Debian Linux

. Tomēr manā CentOS attālajā resursdatorā līnija nav. Tātad, Jinja2 ja stāvoklis darbojas.

Nosacīts: paziņojums if-else Jinja2 veidnē

Jinja2 veidņu valoda atbalsta nosacīto ja-vēl paziņojumi. Varat izdrukāt vienu lietu, ja nosacījums atbilst, un izdrukāt kaut ko citu, ja tajā netiek izmantots ja-vēl paziņojums, apgalvojums.

Jinja2 ja-vēl sintakse ir šāda:

%, ja nosacījums%
Dariet kaut ko, ja nosacījums ir patiess
% cits%
Dariet kaut ko, ja nosacījums ir nepatiess
% endif%

Apskatīsim Jinja2 piemēru ja-vēl paziņojums, apgalvojums.

Vispirms atveriet indekss.jinja2 Jinja2 veidne ar nano teksta redaktoru:

$ nano playbooks / templates / index.jinja2

Pēc tam pievienojiet šādas rindas indekss.jinja2 veidnes fails:

% if ansible_distribution == "Debian"%

Jūs izmantojat Debian Linux


% cits%

Jūs nedarbojat Debian Linux


% endif%

Lūk, es esmu pārbaudījis, vai ansible_distribution ir Debian. Ja tā ir, tad izdrukājiet virkni

Jūs izmantojat Debian Linux

. Pretējā gadījumā izdrukājiet

Jūs nedarbojat Debian Linux

.

Visbeidzot indekss.jinja2 veidnes failam vajadzētu izskatīties tā, kā parādīts zemāk esošajā ekrānuzņēmumā.

Kad esat rediģējis failu, saglabājiet failu, nospiežot + X, sekoja un .

Palaidiet atskaņošanas grāmatu copy_file_template1.yaml sekojoši:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kā redzat, manā Debian attālajā resursdatorā indekss.html failā ir līnija

Jūs izmantojat Debian Linux

. Bet manā CentOS attālajā resursdatorā indekss.html failā ir līnija

Jūs nedarbojat Debian Linux

. Tātad, Jinja2 ja-vēl stāvoklis darbojas.

Nosacīts: if-elif paziņojums Jinja2 veidnē

Jinja2 veidņu valoda atbalsta nosacīto ja-elifs paziņojumi.

Jinja2 ja-elifs sintakse ir šāda:

%, ja nosacījums1%
Dariet kaut ko, ja nosacījums1 ir patiess
% elif condition2%
Dariet kaut ko, ja nosacījums2 ir patiess
% elif nosacījums3%
Dariet kaut ko, ja nosacījums3 ir patiess

% elif conditionN%
Dariet kaut ko, ja nosacījums N ir patiess
% cits%
Dariet kaut ko, ja neviens no nosacījumiem neatbilst patiesībai
% endif%

Lūk, % cits% sadaļa nav obligāta, taču tā ir tur, ja jums to vajag.

Apskatīsim Jinja2 piemēru ja-elifs paziņojums, apgalvojums.

Vispirms atveriet indekss.jinja2 Jinja2 veidne ar nano teksta redaktoru:

$ nano playbooks / templates / index.jinja2

Pēc tam pievienojiet šādas rindas indekss.jinja2 veidnes fails:

% if ansible_distribution == "Debian"%

Jūs izmantojat Debian Linux


% elif ansible_distribution == "CentOS"%

Jūs izmantojat CentOS Linux


% cits%

Jūsu operētājsistēma netiek atbalstīta


% endif%

Lūk, es esmu pārbaudījis, vai ansible_distribution ir Debian. Ja tā ir, tad izdrukājiet virkni

Jūs izmantojat Debian Linux

.

Esmu arī pārbaudījis, vai ansible_distribution ir CentOS. Ja tā ir, tad izdrukājiet virkni

Jūs izmantojat CentOS Linux

.

Pretējā gadījumā izdrukājiet

Jūsu operētājsistēma netiek atbalstīta

.

Visbeidzot indekss.jinja2 veidnes failam vajadzētu izskatīties tā, kā parādīts zemāk esošajā ekrānuzņēmumā.

Kad esat rediģējis failu, saglabājiet failu, nospiežot + X, sekoja un .

Palaidiet atskaņošanas grāmatu copy_file_template1.yaml sekojoši:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kā redzat, manā Debian attālajā resursdatorā indekss.html failā ir līnija

Jūs izmantojat Debian Linux

.

Manā CentOS attālajā resursdatorā indekss.html failā ir līnija

Jūs izmantojat CentOS Linux

.

Ja man būtu cits attālais resursdators, kurā darbojas cita operētājsistēma, nevis Debian vai CentOS, tam būtu līnija

Jūsu operētājsistēma netiek atbalstīta

iekš indekss.html failu.

Tātad, Jinja2 ja-elifs stāvoklis darbojas.

Cilpas Jinja2 veidnē

Jūs varat arī izdrukāt masīvus un objektus, izmantojot cilnes programmā Jinja2.
Jinja2 priekš cilpas sintakse ir šāda:

% mainīgajamName masīvāName%
Dariet kaut ko ar variableName
% endfor%

Šeit katrā masīva atkārtojumā arrayName, viens no masīva elementiem (sākot no masīva sākuma) ir piešķirts mainīgaisNosaukums mainīgais. Jūs varat kaut ko darīt ar šo mainīgo cilpas iekšpusē.

Ļaujiet mums redzēt, kā jūs varat izdrukāt masīva elementus savā Jinja2 veidnē šajā piemērā.

Vispirms atveriet copy_file_template1.yaml Iespējama atskaņošanas grāmata ar nano teksta redaktoru:

$ nano playbooks / copy_file_template1.yaml

Pēc tam pievienojiet šādas rindas copy_file_template1.yaml atskaņošanas grāmatas fails:

vars:
izvēlnes:
- Mājas
- Produkti
- Par mums
- Sazinies ar mums

Šeit es esmu pievienojis izvēlnes masīvs copy_file_template1.yaml rotaļu grāmata. Pēc tam es izdrukāšu masīva elementus, izmantojot cilni manā indekss.jinja2 Jinja2 veidnes fails.

Visbeidzot copy_file_template1.yaml atskaņošanas grāmatas failam vajadzētu izskatīties tā, kā parādīts zemāk redzamajā ekrānuzņēmumā.

Kad esat rediģējis failu, saglabājiet failu, nospiežot + X, sekoja un .

Tagad atveriet indekss.jinja2 Jinja2 veidne ar nano teksta redaktoru:

$ nano playbooks / templates / index.jinja2

Pievienojiet šādas rindas indekss.jinja2 veidnes fails:

Šeit es ģenerēju vienkāršu HTML navigācijas joslu, izmantojot Jinja2 priekš cilpa. Cilpa atkārtojas caur izvēlnes masīvs (kuru esmu definējis copy_file_template1.yaml playbook) elementus un ģenerē a izvēlne vienums katrā atkārtojumā.

Visbeidzot indekss.jinja2 veidnes failam vajadzētu izskatīties tā, kā parādīts zemāk esošajā ekrānuzņēmumā.

Kad esat rediģējis failu, saglabājiet failu, nospiežot + X, sekoja un .

Palaidiet atskaņošanas grāmatu copy_file_template1.yaml sekojoši:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kā redzat, Jinja2 priekš cilpa izveidoja HTML navigācijas joslu ( indekss.html fails).

Varat arī piekļūt objektu masīvam savā Jinja2 veidnē.

Apskatīsim vēl vienu piemēru.

Vispirms atveriet copy_file_template1.yaml Iespējama atskaņošanas grāmata ar nano teksta redaktoru:

$ nano playbooks / copy_file_template1.yaml

Pēc tam pievienojiet šādas rindas copy_file_template1.yaml atskaņošanas grāmatas fails:

vars:
izvēlnes:
- nosaukums: Mājas
saite: / home
- nosaukums: Produkti
saite: / produkti
- nosaukums: Par mums
saite: / par-mums
- nosaukums: Sazinieties ar mums
saite: / sazinieties ar mums

Šeit es esmu pievienojis izvēlnes objektu masīvs copy_file_template1.yaml rotaļu grāmata. Katram no šiem objektiem ir divas īpašības, a nosaukums īpašums un a saite īpašums.

Visbeidzot copy_file_template1.yaml atskaņošanas grāmatas failam vajadzētu izskatīties tā, kā parādīts zemāk esošajā ekrānuzņēmumā.

Kad esat rediģējis failu, saglabājiet failu, nospiežot + X, sekoja un .

Atveriet indekss.jinja2 Jinja2 veidne ar nano teksta redaktoru:

$ nano playbooks / templates / index.jinja2

Pēc tam pievienojiet šādas rindas indekss.jinja2 veidnes fails:

Viss, ko šeit redzat, ir tāds pats kā iepriekšējā piemērā. Vienīgā atšķirība ir tā, ka es drukāju objekta īpašības nosaukums (izmantojot izvēlne.nosaukums) un saite (izmantojot izvēlne.saite) manā indekss.jinja2 Jinja2 veidne.

Visbeidzot indekss.jinja2 veidnes failam vajadzētu izskatīties tā, kā parādīts zemāk esošajā ekrānuzņēmumā.

Kad esat rediģējis failu, saglabājiet failu, nospiežot + X, sekoja un .

Tagad palaidiet spēļu grāmatu copy_file_template1.yaml sekojoši:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kā redzat, Jinja2 priekš cilpa izveidoja HTML navigācijas joslu ( indekss.html fails) no objektu masīva.

Ko tālāk?

Šajā rakstā es jums parādīju, kā izmantot Ansible veidne modulī un aprakstīja dažus Jinja2 veidņu valodas pamatus. Apmeklējiet Jinja2 oficiālo vietni, lai uzzinātu vairāk par Jinja2 veidņu valodu.

OpenTTD vs Simutrans
Transporta simulācijas izveide var būt jautra, relaksējoša un ārkārtīgi vilinoša. Tāpēc jums jāpārliecinās, ka izmēģināt pēc iespējas vairāk spēļu, la...
OpenTTD apmācība
OpenTTD ir viena no populārākajām biznesa simulācijas spēlēm. Šajā spēlē jums ir jāizveido brīnišķīgs transporta bizness. Tomēr jūs sāksit sākumā apmē...
SuperTuxKart operētājsistēmai Linux
SuperTuxKart ir lielisks nosaukums, kas paredzēts, lai sniegtu jums Mario Kart pieredzi bez maksas jūsu Linux sistēmā. Tas ir diezgan izaicinoši un ja...