Iesācēja apmācība - ansible Playbooks, Mainīgie un Inventory

Beginner S Tutorial Ansible Playbooks



Ansible spēļu grāmatas ir faili, kas satur uzdevumus, kas tiek izpildīti, lai konfigurētu saimniekdatorus ar Ansible. Neēdamās spēļu grāmatas ir rakstītas YAML formātā. YAML ir ļoti vienkāršs failu formāts, tāpat kā JSON. Šī raksta vēlākajā sadaļā es parādīšu, kā izskatās Ansible YAML spēļu grāmatas.

Ansible Inventory faili saglabā to saimniekdatoru sarakstu, kurus vēlaties konfigurēt vai pārvaldīt, izmantojot Ansible. Jūs varat grupēt šos saimniekus un pārvaldīt tos arī pēc grupām. Varat arī nodot dažādus mainīgos lielumus katram saimniekdatoram vai saimnieku grupai.







Šajā rakstā es parādīšu, kā strādāt ar Ansible spēļu grāmatām, mainīgajiem, inventāra failiem un dažiem izplatītiem Ansible moduļiem ar praktiskiem piemēriem. Tātad, sāksim darbu!



Priekšnosacījumi

Ja vēlaties izmēģināt šajā rakstā sniegtos piemērus,



1) Jūsu datorā jābūt instalētai Ansible.
2) Jums ir jābūt vismaz Ubuntu/Debian resursdatoram un CentOS/RHEL 8 resursdatoram, kas konfigurēts Ansible automatizācijai.





LinuxHint ir daudz rakstu, kas veltīti Ansible instalēšanai un Ansible automatizācijas resursdatoru konfigurēšanai. Ja nepieciešams, varat pārbaudīt šos rakstus, lai iegūtu vairāk informācijas.

Projekta direktorija izveide

Vispirms izveidojiet projektu direktoriju ~/projekts/ ar šādu komandu:

$mkdir -pv~/projekts/rotaļu grāmatas

Dodieties uz ~/projekts/ direktoriju šādi:

$CD~/projekts

Inventāra pamata fails:

Izveidojiet ansible inventarizācijas failu saimnieki projekta direktorijā ar šādu komandu:

$nanosaimnieki

Izmantojot Ansible, varat ierakstīt to saimniekdatoru IP adreses, kurus vēlaties konfigurēt/automatizēt saimnieki inventarizācijas fails.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

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

Ja inventāra failā vēlaties izmantot DNS nosaukumus, nevis IP adreses, varat to darīt arī.

Ja jums nav strādājoša DNS servera, varat izmantot /etc/hosts failu datorā vietējai DNS izšķirtspējai.

Lai iegūtu lokālu DNS izšķirtspēju, atveriet /etc/hosts fails ar teksta redaktoru ( nano , manā gadījumā) šādi:

$sudo nano /utt/saimnieki

Ievadiet IP adreses un vēlamos DNS nosaukumus šādi:

192.168.20.167 vm1.nodekite.com
192.168.20.168 vm2.nodekite.com
192.168.20.169 vm3.nodekite.com
192.168.20.170 vm4.nodekite.com

Kad esat pabeidzis šo darbību, nospiediet + X kam sekoja UN un .

Atveriet Ansible inventarizācijas failu saimnieki sekojoši:

$nanosaimnieki

Tagad varat ierakstīt to saimniekdatoru DNS nosaukumus, kurus vēlaties konfigurēt/automatizēt, izmantojot Ansible saimnieki inventarizācijas fails.

vm1.nodekite.com
vm2.nodekite.com
vm3.nodekite.com
vm4.nodekite.com

Kad esat pabeidzis, saglabājiet resursdatoru uzskaites failu, nospiežot + X kam sekoja UN un .

Savienojuma pārbaude ar visiem saimniekiem

Tagad varat mēģināt pingēt visus inventāra faila saimniekus šādi:

$nespējīgs-isaimnieko visi-unespējīgs-m ping

Kā redzat, visi inventāra faila saimnieki ir sasniedzami. Tātad, mēs esam gatavi pāriet uz nākamo šī raksta sadaļu.

Jūsu pirmā neēdamā rotaļu grāmata

Izveidosim vienkāršu Ansible spēļu grāmatu ping_all_hosts.yaml iekš rotaļu grāmatas/ direktoriju. Šī darbība pinga visus saimniekdatorus saimnieki inventāra fails, tāpat kā iepriekš.

$nanorotaļu grāmatas/ping_all_hosts.yaml

Ierakstiet tālāk norādītās rindiņas ping_all_hosts.yaml Nepiemērots spēļu grāmatas fails:

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: ping visus saimniekus
ping:

Šeit,

saimnieki: visi - no uzskaites faila izvēlas visus saimniekus saimnieki .
lietotājs: ansible - stāsta Ansible SSH saimniekdatoriem inventarizācijas failā kā nespējīgs lietotājs.
uzdevumus - šeit ir uzskaitīti visi uzdevumi, kurus Ansible izpildīs saimniekdatoros. Katram no uzdevumiem parasti ir a vārds un viena vai vairākas moduļa opcijas.

Spēļu grāmata ping_all_hosts.yaml ir tikai viens uzdevums, pingojot visus resursus inventāra failā saimnieki . Uzdevuma nosaukums ir Ping visus saimniekus un tas izmanto ping modulis.

The ping modulim nav vajadzīgas citas iespējas. Tātad, es to atstāju tukšu (pēc resnās zarnas nav nekā, : )

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

Jūs varat palaist ping_all_hosts.yaml Nepiemērota spēļu grāmata:

$ansible-playbook-ivada spēļu grāmatas/ping_all_hosts.yaml

Kā redzat, ping uzdevums ir veiksmīgs visos inventāra faila saimniekdatoros.

Vienkāršs neiespējams konfigurācijas fails

Iepriekšējā piemērā jums bija jāizmanto -i iespēja pateikt Ansible, kuru inventarizācijas failu izmantot. Manā gadījumā tas ir saimnieki inventarizācijas fails.

$ansible-playbook-ivada spēļu grāmatas/ping_all_hosts.yaml

Ja nevēlaties nodot inventarizācijas failu ar -i opcija katru reizi, kad palaižat Ansible spēļu grāmatu, viss, kas jums jādara, ir iestatīt savam projektam noklusējuma inventarizācijas failu.

Lai to izdarītu, izveidojiet jaunu Ansible konfigurācijas failu ansible.cfg projekta saknē šādi:

$nanoansible.cfg

Ierakstiet tālāk norādītās rindiņas ansible.cfg fails:

[noklusējuma]
inventārs =./saimnieki

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Jūs varat palaist to pašu Ansible spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/ping_all_hosts.yaml

Kā redzat, spēļu grāmata izmanto saimnieki inventāra fails pēc noklusējuma. Jūs joprojām varat izmantot -i iespēju norādīt citu inventāra failu, ja vēlaties. Ansible ir ļoti elastīgs.

Saimnieku grupēšana inventarizācijas failā

Līdz šim es jums parādīju, kā izpildīt uzdevumu kopu (spēļu grāmatu) visos inventāra faila resursdatoros. Bet ko darīt, ja vēlaties izpildīt uzdevumu kopumu dažiem saimniekiem un citu uzdevumu kopu citiem saimniekiem? Jūs varat sagrupēt resursdatorus inventāra failā un izpildīt dažādus uzdevumus saimniekdatora grupās.

Šajā sadaļā es parādīšu, kā sagrupēt resursdatorus inventarizācijas failā un kā strādāt ar saimniekdatora grupām.

Vispirms atveriet inventarizācijas failu saimnieki sekojoši:

$nanosaimnieki

Ierakstiet tālāk norādītās rindiņas saimnieki inventāra fails:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[centos8]
vm3.nodekite.com
vm4.nodekite.com

Šeit esmu izveidojis divas saimniekgrupas: debian10 un centos8 .

Iekš debian10 Man ir divi saimnieki: vm1.nodekite.com un vm2.nodekite.com

Iekš centos8 Man ir divi saimnieki: vm3.nodekite.com un vm4.nodekite.com

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Tagad mēs izveidosim jaunu spēļu grāmatu ping_debian10_hosts.yaml , kas pingēs saimniekus tāpat kā iepriekš, bet tikai saimniekus debian10 uzņēmēja grupa.

Izveidojiet spēļu grāmatu ping_debian10_hosts.yaml iekš rotaļu grāmatas/ direktoriju šādi:

$nanorotaļu grāmatas/ping_debian10_hosts.yaml

Ierakstiet tālāk norādītās rindiņas ping_debian10_hosts.yaml Neizmantojama spēļu grāmata:

- saimnieki: debian10
lietotājs: ansible
uzdevumi:
- nosaukums: Ping all Debian10saimnieki
ping:

Tā vietā saimnieki: visi , Esmu piebildis saimnieki: debian10 šeit. debian10 ir saimnieku grupa. Šī spēļu grāmata darbosies tikai saimniekdatoros debian10 uzņēmēja grupa.

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Palaidiet spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/ping_debian10_hosts.yaml

Kā redzat, tikai saimnieki debian10 uzņēmējas grupa ir saspiesta.

Izmantojot to pašu metodi, izveidojiet citu spēļu grāmatu ping_centos8_hosts.yaml sekojoši:

$nanorotaļu grāmatas/ping_centos8_hosts.yaml

Ierakstiet tālāk norādītās rindiņas ping_centos8_hosts.yaml Neizmantojama spēļu grāmata:

- saimnieki: centos8
lietotājs: ansible
uzdevumi:
- nosaukums: Ping all CentOS8saimnieki
ping:

Tādā pašā veidā es esmu piebildis saimnieki: centos8 šeit. centos8 ir saimnieku grupa. Šī spēļu grāmata darbosies tikai saimniekdatoros centos8 uzņēmēja grupa.

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Palaidiet spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/ping_centos8_hosts.yaml

Kā redzat, tikai saimnieki centos8 uzņēmējas grupa ir saspiesta.

Iespējamie mainīgo veidi

Vietnē Ansible ir dažādi mainīgo veidi. Galvenie mainīgo veidi ir Ansible Facts mainīgie un Lietotāja definēti mainīgie .

Ansible Facts mainīgie: Atkarībā no resursdatora, pie kura Ansible strādā, Ansible ģenerē maināmo faktu mainīgos lielumus. Ansible faktu mainīgie satur informāciju par resursdatoru, piemēram, IP adreses, resursdatora nosaukumu, domēna nosaukumu, datumu, laiku, čaulas vides mainīgos un daudz ko citu.

Lietotāja definēti mainīgie: Tie ir lietotāja definēti pielāgoti mainīgie. Jūs varat nodot lietotāja definētus mainīgos no komandrindas vai izmantojot inventāra failu.

Galvenokārt lietotāja definēti mainīgie ir divu veidu: Grupējiet mainīgos un Uzņēmēja mainīgie .

Iespējama mainīga prioritāte

Ansible mainīgā prioritāte ir : Komandrindas mainīgie > Uzņēmēja mainīgie > Grupas mainīgie

Ja iestatāt tādu pašu mainīgo kā saimniekdatora mainīgo un grupas mainīgo, tiks lietots resursdatora mainīgais.

Līdzīgi mainīgie, ko iestatījāt komandrindā, spēlējot spēles grāmatu, aizstās gan resursdatora, gan grupas mainīgos.

Darbs ar mainīgo faktu mainīgajiem

Šajā sadaļā es parādīšu, kā strādāt ar mainīgo faktu mainīgajiem. Tātad, sāksim darbu!

Jūs varat uzskaitīt visus savā saimniekdatorā esošos maināmo faktu mainīgos saimnieki inventarizācijas failu šādi:

$spējīgs viss-unespējīgs-muzstādīt

Kā redzat, visi maināmo faktu mainīgie ir uzskaitīti JSON formātā. Tas ir ļoti garš saraksts.

Tā kā saraksts ir diezgan garš, varat to atvērt, izmantojot peidžera programmu, piemēram mazāk sekojoši:

$spējīgs viss-unespējīgs-muzstādīt| mazāk

Tagad varat pēc nepieciešamības ritināt izvadi uz augšu, uz leju, pa kreisi un pa labi.

Mainīgo nosaukumus varat meklēt arī peidžerī. Lai to izdarītu, nospiediet / taustiņu uz tastatūras. Pēc tam ierakstiet meklēšanas virkni ( saimniekdatora nosaukums manā gadījumā) un nospiediet .

Kā redzat, maināmie fakti, kas atbilst meklēšanas virknei, ir ansible_hostname . Jūs varat nospiest N lai pārietu uz nākamo maču un Lpp lai no peidžera pārietu uz iepriekšējo spēli. Tādā veidā jūs atrodat mainīgo faktu mainīgo, kas jums nepieciešams jūsu Ansible projektam.

Tagad apskatīsim, kā piekļūt mainīgo faktu mainīgajiem.

Izveidojiet jaunu spēļu grāmatu print_variable1.yaml sekojoši:

$nanorotaļu grāmatas/print_variable1.yaml

Ierakstiet tālāk norādītās rindiņas print_variable1.yaml fails:

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: drukātsaimniekdatora nosaukumsno visiem saimniekiem
atkļūdot:
ziņojums:'{{ansible_hostname}}'

Šeit es pievienoju vienu uzdevumu Drukāt visu saimniekdatoru resursdatora nosaukumu . Šis uzdevums izmanto Ansible atkļūdošana moduli, lai izdrukātu ziņojumu, kad darbojas spēļu grāmata.

msg ir vienīgais nepieciešamais parametrs atkļūdošana modulis. The msg parametrs pieņem virkni pēdiņās, kas ir ziņojums, kas tiks drukāts uz konsoles.

Šeit, {{mainīgais_nosaukums}} formātu izmanto, lai piekļūtu mainīgajam. Šajā gadījumā, {{ansible_hostname}} tiek izmantots, lai drukātu ansible_hostname mainīgais katram inventāra faila saimniekdatoram.

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Varat piekļūt arī mainīgajam faktam mainīgajam kā ansible_facts [mainīgā_nosaukums] . Tātad, ansible_hostname mainīgais kļūs ansible_facts [resursdatora nosaukums] .

Mēs varam pārrakstīt print_variable1.yaml arī šāda spēļu grāmata. Mēs iegūsim tādu pašu rezultātu.

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: drukātsaimniekdatora nosaukumsno visiem saimniekiem
atkļūdot:
ziņojums:'{{ansible_facts [' variable_name ']}}'

Palaidiet spēļu grāmatu print_variable1.yaml sekojoši:

$ansible-playbook spēļu grāmatas/print_variable1.yaml

Kā redzat, katra inventāra failā esošā saimniekdatora nosaukums tiek drukāts uz konsoles.

Tagad izdrukāsim katra saimnieka noklusējuma IPv4 adresi kopā ar saimniekdatora nosaukumu. Kā redzat, resursdatora noklusējuma IPv4 adresei var piekļūt, izmantojot adrese īpašums ansible_default_ipv4 objekts.

Izveidojiet jaunu spēļu grāmatu print_variable2.yaml sekojoši:

$nanorotaļu grāmatas/print_variable2.yaml

Ierakstiet tālāk norādītās rindiņas print_variable2.yaml fails:

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: drukātsaimniekdatora nosaukumsno visiem saimniekiem
atkļūdot:
ziņojums:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}'

Šī spēļu grāmata ir tāda pati kā iepriekš. Vienīgā atšķirība ir jaunais mainīgais {{ansible_default_ipv4.address}} iekš msg iespēja no atkļūdošana modulis.

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Palaidiet print_variable2.yaml spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/print_variable2.yaml

Kā redzat, konsolē tiek drukāta noklusējuma IPv4 adrese un saimniekdatora resursdatora nosaukums.

Tātad, šādi jūs strādājat ar maināmo faktu mainīgajiem.

Lietotāja definētu mainīgo iestatīšana komandrindā:

Šajā sadaļā es parādīšu, kā komandrindā iestatīt lietotāja definētus mainīgos, kamēr darbojas Ansible playbooks.

Vispirms izveidojiet jaunu spēļu grāmatu print_variable3.yaml sekojoši:

$nanorotaļu grāmatas/print_variable3.yaml

Ierakstiet tālāk norādītās rindiņas print_variable3.yaml fails:

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: drukātkomandulīnijas mainīgais
atkļūdot:
ziņojums:'Laipni lūdzam, {{username}}!'

Šeit es izmantoju atkļūdošana moduli, lai izdrukātu ziņojumu Laipni lūdzam {{username}}! . lietotājvārds ir mainīgais, kas tiks aizstāts, kad mēs izpildīsim spēļu grāmatu.

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Palaidiet spēļu grāmatu print_variable3.yaml sekojoši:

$ansible-playbook-Un 'lietotājvārds = Bobs'rotaļu grāmatas/print_variable3.yaml

PIEZĪME: Šeit, -Un opcija tiek izmantota, lai nokārtotu a lietotājvārds mainīgais ar vērtību Bobs uz spēļu grāmatu print_variable3.yaml no komandrindas.

Kā redzat, ziņa Laipni lūdzam Bob ir uzdrukāts uz konsoles.

Tagad atklāsim, kā pārsūtīt vairākus mainīgos no komandrindas.

Izveidojiet jaunu spēļu grāmatu print_variable4.yaml sekojoši:

$nanorotaļu grāmatas/print_variable4.yaml

Ierakstiet tālāk norādītās rindiņas print_variable4.yaml fails:

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: drukājiet lietotāja definētos mainīgos
atkļūdot:
ziņojums:'lietotājvārds = {{lietotājvārds}} http_port = {{http_port}}'

Spēļu grāmatai jums tagad vajadzētu būt ļoti pazīstamai. Viss, kas jādara, ir izdrukāt 2 mainīgos lietotājvārds un http_port uz konsoles.

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Tagad jūs varat iziet lietotājvārds un http_port mainīgs uz spēļu grāmatu, izmantojot divus dažādus -Un iespēja šādi:

$ ansible-playbook-Un 'lietotājvārds = Bobs' -Un 'http_port = 8080'
rotaļu grāmatas/print_variable4.yaml

Vai arī varat vienkārši atdalīt mainīgos ar atstarpi šādi:

$ ansible-playbook-Un 'lietotājvārds = Bobs http_port = 8080'
rotaļu grāmatas/print_variable4.yaml

Kā redzat, lietotājvārds un http_port mainīgie tiek drukāti uz konsoles.

Darbs ar lietotāja definētiem grupas mainīgajiem

Pieņemsim, ka vēlaties mitinātāju grupai pievienot dažus mainīgos. Šo darbību ir ļoti viegli izdarīt Ansible.

Vispirms atveriet savu saimnieki inventarizācijas failu šādi:

$nanosaimnieki

Ierakstiet savā rindā šādas rindas saimnieki inventāra fails:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[debian10: vars]
lietotājvārds = Lilija
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vars]
lietotājvārds = Bobs
http_port =7878

Kā redzat, esmu izveidojis jaunu sadaļu [debian10: vars] priekš debian10 uzņēmējas grupā un pievienoja mainīgos ( lietotājvārds un http_port ) priekš debian10 uzņēmējas grupa.

Tādā pašā veidā esmu izveidojis jaunu sadaļu [centos8: vars] priekš centos8 uzņēmējas grupā un pievienoja mainīgos ( lietotājvārds un http_port ) priekš centos8 uzņēmējas grupa.

Kad esat pabeidzis, saglabājiet saimnieki uzskaites failu, nospiežot + X kam sekoja UN un .

Palaidiet print_variable4.yaml spēļu grāmatas šādi:

$ansible-playbook spēļu grāmatas/print_variable4.yaml

Kā redzat, pareizie mainīgie tiek nodoti katram saimniekam atkarībā no viņu saimniekgrupas.

Darbs ar lietotāja definētiem resursdatora mainīgajiem

Šajā sadaļā es parādīšu, kā inventarizācijas failā iestatīt mainīgos lielumus konkrētiem saimniekiem.

Vispirms atveriet saimnieki inventarizācijas failu šādi:

$nanosaimnieki

Lai mainīgos pievienotu konkrētam saimniekdatoram (teiksim, vm1.nodekite.com ), vienkārši pievienojiet atstarpi/cilni aiz saimniekdatora IP/DNS nosaukuma un ierakstiet mainīgos, kā parādīts zemāk esošajā ekrānuzņēmumā.

Varat arī pievienot vairākus mainīgos. Vienkārši atdaliet katru mainīgo ar atstarpi.

Kad esat pabeidzis, saglabājiet inventāra failu, nospiežot + X kam sekoja UN un .

Palaidiet print_variable4.yaml spēļu grāmatas šādi:

$ansible-playbook spēļu grāmatas/print_variable4.yaml

Kā redzat, mainīgie ir iestatīti tikai vm1.nodekite.com saimnieks. Pārējiem saimniekiem ir piemēroti grupas mainīgie.

Ātra krājumu failu ģenerēšana ar diapazoniem

Varat izmantot diapazonus, lai ātri ģenerētu Ansible inventāra failus, ja jūsu resursdatora IP adreses vai DNS nosaukumi ir konsekventi (t.i., tiem ir noteikts formāts).

Iepriekšējos piemēros esmu izmantojis saimniekus vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com un vm4.nodekite.com . Tā vietā, lai rakstītu 4 rindas, es varēju vienkārši rakstīt vm [1: 4] .nodekite.com inventarizācijas failā.

Lai eksperimentētu ar diapazoniem, atveriet saimnieki inventarizācijas failu šādi:

$nanosaimnieki

No inventāra failiem noņemiet visus saimniekdatorus un mainīgos.

Tagad mēs varam nomainīt vm1.nodekite.com un vm2.nodekite.com ar vm [1: 2] .nodekite.com priekš debian10 uzņēmēja grupa šādi.

Tādā pašā veidā mēs varam aizstāt vm3.nodekite.com un vm4.nodekite.com ar vm [3: 4] .nodekite.com priekš centos8 uzņēmēja grupa.

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Palaidiet ping_all_hosts.yaml sekojoši:

$ansible-playbook spēļu grāmatas/ping_all_hosts.yaml

Kā redzat, saimniekdatoru diapazoni tika paplašināti, kad es vadīju spēļu grāmatu.

Mainīgo saglabāšana dažādos failos

Grupas mainīgo un saimniekdatora mainīgo saglabāšana vienā inventāra failā ir ļoti vienkārša. Bet jūs, iespējams, meklējat lielāku elastību. It īpaši, ja vēlaties inventarizācijas failā izmantot diapazonus, jo jūs vairs nevarat iestatīt resursdatora mainīgos, ja izmantojat diapazonus. Jūs varat saglabāt grupas mainīgos un resursdatora mainīgos dažādos failos. Šajā sadaļā es jums parādīšu, kā tas tiek darīts.

Pēc noklusējuma Ansible grupā meklē mainīgos group_vars / direktoriju un resursdatora mainīgos host_vars / direktoriju.

Tātad, izveidojiet group_vars / un host_vars / direktoriju šādi:

$mkdir -pv {saimnieks, grupa}_kuru

Lai grupai iestatītu grupas mainīgos debian10 resursdatora grupa, izveidojiet failu debian10 (tāds pats kā grupas nosaukums) group_vars / direktoriju šādi:

$nanogroup_vars/debian10

Ierakstiet savus mainīgos šādi:

lietotājvārds: Lilija
http://www.4343

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam seko Y un .

Tādā pašā veidā, lai iestatītu grupas mainīgos centos8 resursdatora grupa, izveidojiet failu centos8 (tāds pats kā grupas nosaukums) group_vars / direktoriju šādi:

$nanogroup_vars/centos8

Ierakstiet savus mainīgos šādi:

lietotājvārds: Bobs
http_port: 7878

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam seko Y un .

Palaidiet print_variable4.yaml spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/print_variable4.yaml

Kā redzat, grupu mainīgie ir pareizi iestatīti katrai saimniekgrupai.

Lai saimniekdatoram iestatītu resursdatora mainīgos vm1.nodekite.com , izveidojiet failu vm1.nodekite.com (tāds pats kā resursdatora nosaukums vai IP adrese) host_vars / direktoriju šādi:

$nanovm1.nodekite.com

Ierakstiet saimniekdatora mainīgos šādi:

lietotājvārds: Alekss
http_port: 7788

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam seko Y un .

Palaidiet print_variable4.yaml spēļu grāmatu šādi:

$ ansible-playbook spēļu grāmatas/print_variable4.yaml
[

Kā redzat, saimniekdatora mainīgie ir pareizi iestatīti saimniekdatoram vm1.nodekite.com .

Darbs ar cilpām Ansible

Šajā sadaļā es parādīšu, kā lietot cilpas Ansible.

Vispirms izveidojiet jaunu spēļu grāmatu cilpa1.yaml iekš rotaļu grāmatas/ direktoriju šādi:

$nanorotaļu grāmatas/cilpa1.yaml

Ierakstiet tālāk norādītās rindiņas cilpa1.yaml rotaļu grāmata:

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: Drukāt lietotāju sarakstu
atkļūdot:
ziņojums:'Lietotājs: {{item}}'
ar_ vienumiem:
- Alekss
- Bobs
- Lilija

Šeit man ir 1 uzdevums, kas izdrukā lietotāju sarakstu, izmantojot cilpu.

Lai iestatītu uzdevuma iterācijas vērtības, izmantojiet ar_ vienumiem modulis. Pēc tam pievienojiet vērtības pa vienam.

ar_ vienumiem:
- Alekss
- Bobs
- Lilija

Jūs piekļūstat pašreizējās iterācijas vērtībai, izmantojot lieta mainīgais.

atkļūdot:
ziņojums:'Lietotājs: {{item}}'

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Palaidiet cilpa1.yaml spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/cilpa1.yaml

Kā redzat, katram saimniekdatoram tika veikts viens un tas pats uzdevums. Tātad, cilpa darbojas.

Darbs ar apstākļiem ansible

Ja vēlaties izpildīt uzdevumus, pamatojoties uz noteiktiem nosacījumiem, šī sadaļa ir paredzēta jums.

Lai izpildītu uzdevumus, pamatojoties uz stāvokli, varat izmantot kad Ansible modulis. Apskatīsim šī moduļa piemēru. Vispirms izveidojiet jaunu spēļu grāmatu nosacījums1.yaml sekojoši:

$nanorotaļu grāmatas/nosacījums1.yaml

Ierakstiet tālāk norādītās rindiņas nosacījums1.yaml rotaļu grāmata:

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: izpildiet šo uzdevumu tikai Debian
atkļūdot:
ziņojums:'šis uzdevums darbojas Debian'
kad: ansible_facts['izplatīšana']=='Debian'

Šeit,

ansible_facts [‘distribūcija’] == ‘Debian’ izmanto, lai pārbaudītu, vai izplatīšanu ir Debian . Uzdevums tiks izpildīts tikai tad, ja izplatīšana ir Debian.

The ansible_facts [‘izplatīšana’] tiek izmantots, lai piekļūtu mainīgajiem faktiem ansible_distribution . Jūs varat arī pārbaudīt izplatīšanas versiju, izmantojot ansible_distribution_major_version mainīgais.

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Palaidiet nosacījums1.yaml spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/nosacījums1.yaml

Kā redzat, uzdevums tika izpildīts tikai Debian saimniekdatoros. Uzdevums netika izpildīts CentOS saimniekdatoros.

Varat arī pārbaudīt vairākus nosacījumus vienlaicīgi un izpildīt uzdevumu tikai tad, ja visi nosacījumi ir patiesi. Apskatīsim piemēru.

Izveidojiet jaunu spēļu grāmatu nosacījums2.yaml sekojoši:

$nanorotaļu grāmatas/nosacījums2.yaml

Ierakstiet tālāk norādītās rindiņas nosacījums2.yaml fails:

- saimnieki: visi
lietotājs: ansible
uzdevumi:
- nosaukums: izpildiet šo uzdevumu tikai Debian10
atkļūdot:
ziņojums:'šis uzdevums darbojas Debian 10'
kad: ansible_facts['izplatīšana']=='Debian'
un ansible_facts['distribūcijas_major_versija']==“10”

Šeit uzdevums tiks izpildīts tikai tad, ja izplatīšana ir Debian ( ansible_facts [‘distribūcija’] == ‘Debian’ ) un versija ir 10 ( ansible_facts [‘distribution_major_version’] == ’10’ ). Ja abi nosacījumi ir patiesi, uzdevums tiks izpildīts. Pretējā gadījumā uzdevums nedarbosies.

Esmu izmantojis un atslēgvārdu, lai pārbaudītu, vai abi nosacījumi šeit ir patiesi. Ja vēlaties pārbaudīt, vai kāds no nosacījumiem ir patiess, varat izmantot vai tā vietā atslēgvārdu.

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Palaidiet spēļu grāmatu nosacījums2.yaml sekojoši:

$ansible-playbook spēļu grāmatas/nosacījums2.yaml

Kā redzat, uzdevums tika izpildīts tikai Debian 10 saimniekdatoros.

Nomainīsim spēļu grāmatu nosacījums2.yaml izpildīt uzdevumu tikai Debian 8 resursdatoros šādi.

Kā redzat, visi saimnieki tika izlaisti, jo man inventarizācijas failā nav neviena Debian 8 resursdatora.

Darbs ar Ansible apt moduli

The trāpīgs Ansible modulis tiek izmantots, lai instalētu īpašu programmatūras pakotni Ubuntu/Debian saimniekdatoros. Apskatīsim, kā izmantot šo moduli.

Vispirms izveidojiet jaunu spēļu grāmatu apt1.yaml iekš rotaļu grāmatas/ direktoriju šādi:

$nanorotaļu grāmatas/apt1.yaml

Ierakstiet tālāk norādītās rindiņas apt1.yaml rotaļu grāmata:

- saimnieki: debian10
lietotājs: ansible
kļūt: Patiess
uzdevumi:
- nosaukums: instalējiet apache2
piemērots:
nosaukums: apache2
stāvoklis: jaunākais

The trāpīgs modulim ir nepieciešams tikai vārds pakotnē, kuru vēlaties instalēt/jaunināt/noņemt, un Valsts no iepakojuma.

Šeit es mēģinu instalēt apache2 pakete ( nosaukums: apache2 ) manos Debian 10 saimniekdatoros. Mēģinot instalēt pakotni un arī to jaunināt, ja ir pieejama jauna versija, Valsts vajadzētu būt jaunākais .

Valsts pieņem arī šādas iespējas:

- prombūtnē - Pakete tiks noņemta, ja tā jau ir instalēta.
- jaunākais - Ja ir pieejams atjauninājums, pakotne tiks jaunināta. Ja pakotne vēl nav instalēta, tā tiks instalēta.
- klāt - pakotne tiks instalēta, ja tā vēl nav instalēta. Bet pakotne netiks jaunināta, ja būs pieejams atjauninājums.

Ievērojiet, ka esmu pievienojis kļūt: Patiess spēļu grāmatā. Tas dos nespējīgs lietotāja sudo privilēģijas, lai mainītu failu sistēmas struktūru (t.i., instalēt/jaunināt/noņemt paketes). Bez kļūt: Patiess , trāpīgs modulis nevarēs instalēt apache2 iepakojums.

Kad esat pabeidzis, saglabājiet spēļu grāmatu, nospiežot + X kam sekoja UN un .

Palaidiet apt1.yaml spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/apt1.yaml

Kā redzat, spēļu grāmata veiksmīgi darbojās Debian 10 saimniekdatoros.

Kā redzat, apache2 pakotne ir instalēta manos Debian 10 resursdatoros.

Darbs ar Ansible dnf/yum moduli

The dnf un ņam Ansible modulis tiek izmantots, lai instalētu īpašu programmatūras pakotni CentOS/RHEL resursdatoros. Jūs varat izmantot šo moduli tāpat kā jūs trāpīgs moduli šī raksta iepriekšējā sadaļā.

Gan dnf un ņam moduļi pieņem tos pašus parametrus. Jūs varat izmantot dnf moduli CentOS/RHEL 8 resursdatoros un ņam uz CentOS/RHEL 7 vai vecāku versiju.

Tagad apskatīsim šī moduļa piemēru.

Vispirms izveidojiet jaunu spēļu grāmatu dnf1.yaml iekš rotaļu grāmatas/ direktoriju šādi:

$nanorotaļu grāmatas/dnf1.yaml

Ierakstiet tālāk norādītās rindiņas dnf1.yaml rotaļu grāmata:

- saimnieki: centos8
lietotājs: ansible
kļūt: Patiess
uzdevumi:
- nosaukums: instalējiet httpd pakotni
dnf:
nosaukums: httpd
stāvoklis: jaunākais

The dnf un ņam modulim ir nepieciešams tikai vārds pakotnē, kuru vēlaties instalēt/jaunināt/noņemt, un Valsts no iepakojuma.

Šeit es mēģinu instalēt httpd pakete ( nosaukums: httpd ) manos CentOS 8 saimniekdatoros. Tā kā es mēģinu instalēt pakotni un arī vēlētos to jaunināt, ja ir pieejama jauna versija Valsts vajadzētu būt jaunākais .

Valsts pieņem šādas iespējas:

- prombūtnē - Pakete tiks noņemta, ja tā jau ir instalēta.
- jaunākais - Ja ir pieejams atjauninājums, pakotne tiks jaunināta. Ja pakotne vēl nav instalēta, tā tiks instalēta.
- klāt - pakotne tiks instalēta, ja tā vēl nav instalēta. Bet pakotne netiks jaunināta, ja būs pieejams atjauninājums.

Ievērojiet, ka esmu pievienojis kļūt: Patiess spēļu grāmatā. Tas dod nespējīgs lietotāja sudo privilēģijas, lai mainītu failu sistēmas struktūru (t.i., instalēt/jaunināt/noņemt paketes). Bez kļūt: Patiess , trāpīgs modulis nevarēs instalēt httpd iepakojums.

Kad esat pabeidzis, saglabājiet spēļu grāmatu, nospiežot + X kam sekoja UN un .

Palaidiet dnf1.yaml spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/dnf1.yaml

Kā redzat, spēļu grāmata veiksmīgi darbojās CentOS 8 saimniekdatorā.

Darbs ar Ansible servisa moduli

The apkalpošana Ansible modulis tiek izmantots, lai jūsu saimniekdatoros sāktu, apturētu, restartētu, iespējotu (pievienotu pakalpojumu startēšanai) un atspējotu (noņemtu pakalpojumu no starta).

Iepriekšējās sadaļās es jums parādīju, kā instalēt Apache HTTP servera pakotni, izmantojot Ansible trāpīgs , dnf un ņam moduļi. Tagad nodrošināsim, ka Apache HTTP servera pakalpojums darbojas un ir pievienots sistēmas startēšanai.

Es strādāšu ar saviem Debian 10 saimniekiem. Bet, ja vēlaties, varat strādāt ar CentOS 8 saimniekiem. Vienkārši attiecīgi pielāgojiet spēļu grāmatu.

Vispirms izveidojiet jaunu Ansible spēļu grāmatu apt2.yaml sekojoši:

$nanorotaļu grāmatas/apt2.yaml

Ierakstiet tālāk norādītās rindiņas apt2.yaml rotaļu grāmata:

- saimnieki: debian10
lietotājs: ansible
kļūt: Patiess
uzdevumi:
- nosaukums: instalējiet apache2
piemērots:
nosaukums: apache2
stāvoklis: jaunākais
- nosaukums: palaidiet apache2 pakalpojumu
apkalpošana:
nosaukums: apache2
stāvoklis: sākās
iespējots: taisnība

Šeit es pievienoju jaunu uzdevumu, Sāciet apache2 pakalpojumu .

nosaukums: apache2 - pakalpojums, pie kura strādāju, ir apache2 .

stāvoklis: sākās - pakalpojumam ir jādarbojas.

iespējots: taisnība - pakalpojums jāpievieno sistēmas palaišanai.

The Valsts parametrs pieņem citas vērtības.

- pārlādēts - Pakalpojumam ir atkārtoti jāielādē konfigurācijas faili.
- restartēts - Pakalpojums ir jārestartē.
- sākās - Pakalpojumam ir jādarbojas. Ja pakalpojums nedarbojas, sāciet pakalpojumu.
- apstājās - Pakalpojums ir jāpārtrauc. Ja pakalpojums darbojas, pārtrauciet to.

Palaidiet spēļu grāmatu apt2.yaml sekojoši:

$ansible-playbook spēļu grāmatas/apt2.yaml

Kā redzat, spēļu grāmata tika veiksmīgi izpildīta.

Kā redzat, apache2 pakalpojums darbojas manos Debian 10 resursdatoros.

Darbs ar ansible copy moduli

Neēdamais kopiju moduli galvenokārt izmanto, lai kopētu failus no datora uz attālajiem saimniekiem.

Iepriekšējā sadaļā es instalēju Apache 2 tīmekļa serveri savos Debian 10 saimniekdatoros. Tagad kopēsim an index.html failu Debian 10 resursdatoru tīmekļa saknei.

Vispirms izveidojiet jaunu direktoriju faili/ sekojoši:

$mkdir -vfailus

Izveidojiet jaunu failu index.html iekš faili/ direktoriju šādi:

$nanofailus/index.html

Ierakstiet tālāk norādītās rindiņas index.html fails:


< html >
< galvu >
< titulu >Ansible tīmekļa serveris</ titulu >
</ galvu >
< ķermenis >
< h1 >Laipni lūdzam LinuxHint</ h1 >
< lpp >Šis tīmekļa serveris tika izvietots kopā ar Ansible.</ lpp >
</ ķermenis >
</ html >

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Izveidojiet jaunu Ansible spēļu grāmatu apt3.yaml sekojoši:

$nanorotaļu grāmatas/apt3.yaml

Ierakstiet tālāk norādītās rindiņas apt3.yaml fails:

- saimnieki: debian10
lietotājs: ansible
kļūt: Patiess
uzdevumi:
- nosaukums: instalējiet apache2
piemērots:
nosaukums: apache2
stāvoklis: jaunākais
- nosaukums: kopēt index.html uz serveri
kopija:
src: ../failus/index.html
dest:/kur/www/html/index.html
režīms: 0644
īpašnieks: www-data
grupa: www-dati
- nosaukums: palaidiet apache2 pakalpojumu
apkalpošana:
nosaukums: apache2
stāvoklis: sākās
iespējots: taisnība

Lūk, uzdevums Kopējiet index.html uz serveri kopē index.html no faili/ direktoriju uz / var / www / html / Debian 10 resursdatoru direktorijā.

src: ../files/index.html - Avota faila ceļš.
dest: /var/www/html/index.html - Galamērķa faila ceļš.
režīms: 0644 - Atļaujas faila lietotājam (6 - lasīt un rakstīt), grupai (4 - lasīt) un citiem (4 - lasīt).
īpašnieks: www-data - Iestatiet faila īpašnieku uz www-dati .
grupa: www-dati - Iestatiet faila grupu uz www-dati .

Kad esat pabeidzis, saglabājiet failu, nospiežot + X kam sekoja UN un .

Palaidiet apt3.yaml spēļu grāmatu šādi:

$ansible-playbook spēļu grāmatas/apt3.yaml

Kā redzat, uzdevums Kopējiet index.html uz serveri ir veiksmīgs.

Kā redzat, index.html fails tika kopēts uz Debian 10 resursdatoriem.

Kā redzat, tīmekļa serveris Debian 10 kalpo index.html lapu, kuru tikko nokopēju Debian 10 saimniekdatoros.

Tātad, šie ir Ansible pamati. Jūs varat uzzināt vairāk par Ansible, izlasot Ansible oficiālo dokumentāciju. Paldies, ka izlasījāt šo rakstu.