Š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
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
Š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: visilietotā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
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:
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
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
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
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
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
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 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
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 Jūs nedarbojat Debian Linux
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
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
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:
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
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
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
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
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.