Tutorial per a principiants: llibres de joc, variables i inventari Ansible

Beginner S Tutorial Ansible Playbooks



Els llibres de reproducció Ansible són fitxers que contenen tasques que s’executen per configurar els hosts amb Ansible. Els llibres de joc Ansible s’escriuen en format YAML. YAML és un format de fitxer molt senzill com JSON. En una secció posterior d’aquest article us mostraré l’aspecte de Ansible YAML.

Els fitxers d’inventari Ansible mantenen una llista dels hosts que voleu configurar o gestionar amb Ansible. També podeu agrupar aquests amfitrions i gestionar-los per grups. També podeu passar variables diferents per a cada amfitrió o per a un grup d'amfitrions.







En aquest article, us mostraré com treballar amb llibres de joc Ansible, variables, fitxers d’inventari i alguns mòduls Ansible comuns amb exemples pràctics. Comencem, doncs,



Requisits previs

Si voleu provar els exemples d’aquest article,



1) Heu de tenir Ansible instal·lat al vostre ordinador.
2) Heu de tenir com a mínim un host Ubuntu / Debian i un host CentOS / RHEL 8 configurats per a l'automatització Ansible.





Hi ha molts articles a LinuxHint dedicats a instal·lar Ansible i configurar hosts per a l'automatització Ansible. Podeu consultar aquests articles si cal per obtenir més informació.

Creació d’un directori de projectes

En primer lloc, creeu un directori de projectes ~ / projecte / amb l'ordre següent:

$mkdir -pv~/projecte/llibres de jocs

Aneu a ~ / projecte / directori de la següent manera:

$cd~/projecte

Fitxer bàsic d’inventari:

Creeu un fitxer d’inventari Ansible amfitrions al directori del projecte amb l'ordre següent:

$nanoamfitrions

Podeu escriure les adreces IP dels amfitrions que vulgueu configurar / automatitzar utilitzant Ansible al fitxer amfitrions fitxer d’inventari.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

Un cop hàgiu acabat aquest pas, deseu el fitxer prement + X Seguit per I i .

Si voleu utilitzar noms DNS en lloc d’adreces IP al fitxer d’inventari, també podeu fer-ho.

Si no teniu un servidor DNS que funcioni, podeu utilitzar el fitxer / etc / hosts arxiu al vostre ordinador per a la resolució de DNS local.

Per obtenir una resolució de DNS local, obriu el fitxer / etc / hosts fitxer amb un editor de text ( nano , en el meu cas) de la següent manera:

$suo nano /etc/amfitrions

Escriviu les adreces IP i els noms DNS desitjats de la manera següent:

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

Un cop hàgiu acabat aquest pas, premeu + X Seguit per I i .

Obriu el fitxer d’inventari Ansible amfitrions com segueix:

$nanoamfitrions

Ara podeu escriure els noms de DNS dels amfitrions que vulgueu configurar / automatitzar mitjançant Ansible a amfitrions fitxer d’inventari.

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

Un cop hàgiu acabat, deseu el fitxer d'inventari d'amfitrions prement + X Seguit per I i .

Prova de connectivitat a tots els amfitrions

Ara podeu provar de fer ping a tots els hosts del fitxer d’inventari de la manera següent:

$ansible-iallotja tots-uansible-m ping

Com podeu veure, es pot accedir a tots els amfitrions del fitxer d’inventari. Per tant, estem preparats per passar a la següent secció d’aquest article.

El vostre primer llibre de joc Ansible

Creem un llibre de joc Ansible senzill ping_all_hosts.yaml al llibres de jocs / directori. Aquesta acció farà ping a tots els amfitrions del fitxer amfitrions arxiu d’inventari, com abans.

$nanollibres de jocs/ping_all_hosts.yaml

Escriviu les línies següents al fitxer ping_all_hosts.yaml Fitxer del llibre de reproducció Ansible:

- amfitrions: tots
usuari: ansible
tasques:
- nom: fa ping a tots els amfitrions
ping:

Aquí,

amfitrions: tots - selecciona tots els hosts del fitxer d'inventari amfitrions .
usuari: ansible - diu Ansible a SSH als hosts del fitxer d'inventari com a ansible usuari.
tasques - Totes les tasques que Ansible executarà als hosts es detallen aquí. Cadascuna de les tasques sol tenir un nom i una o més opcions específiques del mòdul.

El llibre de joc ping_all_hosts.yaml només té una tasca, fent ping a tots els hosts del fitxer d'inventari amfitrions . El nom de la tasca és Ping a tots els amfitrions i utilitza el fitxer ping mòdul.

El ping El mòdul no necessita cap altra opció. Per tant, l’he deixat buit (no hi ha res després dels dos punts, : )

Un cop hàgiu acabat aquest pas, deseu el fitxer prement + X Seguit per I i .

Podeu executar el fitxer ping_all_hosts.yaml Llibre de joc Ansible de la següent manera:

$ansible-playbook-iallotja llibres de jocs/ping_all_hosts.yaml

Com podeu veure, la tasca de ping té èxit a tots els hosts del fitxer d’inventari.

Fitxer de configuració Ansible simple

A l'exemple anterior, havíeu d'utilitzar el fitxer -i opció per dir a Ansible quin fitxer d'inventari s'ha d'utilitzar. En el meu cas, és el amfitrions fitxer d’inventari.

$ansible-playbook-iallotja llibres de jocs/ping_all_hosts.yaml

Si no voleu passar un fitxer d 'inventari amb el fitxer -i opció cada vegada que executeu un llibre de joc Ansible, tot el que heu de fer és establir un fitxer d'inventari per defecte per al vostre projecte.

Per fer-ho, creeu un fitxer de configuració Ansible nou ansible.cfg a l'arrel del vostre projecte de la següent manera:

$nanoansible.cfg

Escriviu les línies següents al fitxer ansible.cfg dossier:

[per defecte]
inventari =./amfitrions

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Podeu executar el mateix llibre de joc Ansible de la següent manera:

$llibres de jocs ansible-playbook/ping_all_hosts.yaml

Com podeu veure, el llibre de joc utilitza el fitxer amfitrions fitxer d’inventari per defecte. Encara podeu utilitzar el fitxer -i opció per especificar un fitxer d’inventari diferent, si ho desitgeu. Ansible és molt flexible.

Agrupació d’amfitrions al fitxer d’inventari

Fins ara, us he mostrat com executar un conjunt de tasques (playbook) a tots els hosts del fitxer d’inventari. Però, i si voleu executar un conjunt de tasques en alguns amfitrions i un altre conjunt de tasques en altres amfitrions? Podeu agrupar els amfitrions al fitxer d’inventari i executar diferents tasques als grups d’amfitrions.

En aquesta secció, us mostraré com agrupar amfitrions al fitxer d’inventari i com treballar amb grups d’amfitrions.

Primer, obriu el fitxer d’inventari amfitrions com segueix:

$nanoamfitrions

Escriviu les línies següents al fitxer amfitrions fitxer d’inventari:

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

Aquí he creat dos grups d’amfitrió: debian10 i centos8 .

A la debian10 grup, tinc dos amfitrions: vm1.nodekite.com i vm2.nodekite.com

A la centos8 grup, tinc dos amfitrions: vm3.nodekite.com i vm4.nodekite.com

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Ara crearem un nou llibre de jocs ping_debian10_hosts.yaml , que farà ping als amfitrions com abans, però només als amfitrions del fitxer debian10 grup d’acollida.

Crea un llibre de jocs ping_debian10_hosts.yaml al llibres de jocs / directori de la següent manera:

$nanollibres de jocs/ping_debian10_hosts.yaml

Escriviu les línies següents al fitxer ping_debian10_hosts.yaml Llibre de joc Ansible:

- hosts: debian10
usuari: ansible
tasques:
- nom: fa ping a tot Debian10amfitrions
ping:

En lloc de amfitrions: tots , He afegit hosts: debian10 aquí. debian10 és el grup amfitrió. Aquest llibre de reproducció només s'executarà als amfitrions de debian10 grup d’acollida.

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Executeu el llibre de reproducció de la manera següent:

$llibres de jocs ansible-playbook/ping_debian10_hosts.yaml

Com podeu veure, només els amfitrions de debian10 el grup amfitrió té un ping.

Amb el mateix mètode, creeu un altre llibre de reproducció ping_centos8_hosts.yaml com segueix:

$nanollibres de jocs/ping_centos8_hosts.yaml

Escriviu les línies següents al fitxer ping_centos8_hosts.yaml Llibre de joc Ansible:

- amfitrions: centos8
usuari: ansible
tasques:
- nom: fa ping a tots els CentOS8amfitrions
ping:

De la mateixa manera, he afegit amfitrions: centos8 aquí. centos8 és el grup amfitrió. Aquest llibre de reproducció només s'executarà als amfitrions de centos8 grup d’acollida.

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Executeu el llibre de reproducció de la manera següent:

$llibres de jocs ansible-playbook/ping_centos8_hosts.yaml

Com podeu veure, només els amfitrions de centos8 el grup amfitrió té un ping.

Tipus de variables ansibles

A Ansible hi ha diferents tipus de variables. Els principals tipus de variables són Variables de Fets Ansibles i Variables definides per l'usuari .

Variables de dades assenyalables: Depenent de l'amfitrió en què treballi Ansible, Ansible genera variables de fets Ansible. Les variables de fets sensibles contenen informació sobre l'amfitrió, com ara adreces IP, nom d'amfitrió, nom de domini, data, hora, variables d'entorn de l'intèrpret d'ordres i molt més.

Variables definides per l'usuari: Són variables personalitzades definides per l'usuari. Podeu passar variables definides per l'usuari des de la línia d'ordres o mitjançant el fitxer d'inventari.

Les variables definides principalment per l'usuari són de dos tipus: Variables de grup i Variables d'amfitrió .

Precedència variable ansible

La precedència variable d'Ansible és : Variables de línia d'ordres > Variables d'amfitrió > Variables de grup

Si definiu la mateixa variable que la variable d'amfitrió i la variable de grup, s'aplicarà la variable d'amfitrió.

De la mateixa manera, les variables que definiu des de la línia d'ordres mentre s'executa un llibre de reproducció substituiran les variables d'amfitrió i de grup.

Treballar amb variables de fets Ansible

En aquesta secció, us mostraré com treballar amb variables de fets Ansible. Comencem, doncs,

Podeu enumerar totes les variables Fets Ansible dels amfitrions al vostre fitxer amfitrions arxiu d’inventari de la següent manera:

$ansible tots-uansible-mconfiguració

Com podeu veure, totes les variables de Fets Ansibles es mostren en format JSON. És una llista molt llarga.

Com que la llista és bastant llarga, podeu obrir-la amb un programa de localització com ara menys com segueix:

$ansible tots-uansible-mconfiguració| menys

Ara podeu desplaçar la sortida cap amunt, cap avall, cap a l’esquerra i cap a la dreta segons sigui necessari.

També podeu cercar noms de variables des del localitzador. Per fer-ho, premeu el botó / del teclat. A continuació, escriviu la cadena de cerca ( nom d'amfitrió en el meu cas) i premeu .

Com podeu veure, la variable de fets Ansible que coincideix amb la cadena de cerca és ansible_hostname . Podeu prémer N per anar al següent partit i Pàg per anar al partit anterior des del localitzador. Així trobareu la variable de fets Ansible que necessiteu per al vostre projecte Ansible.

Vegem ara com accedir a les variables de fets Ansible.

Creeu un llibre de reproducció nou print_variable1.yaml com segueix:

$nanollibres de jocs/print_variable1.yaml

Escriviu les línies següents al fitxer print_variable1.yaml dossier:

- amfitrions: tots
usuari: ansible
tasques:
- nom: imprimirnom d'amfitrióde tots els amfitrions
depurar:
msg:'{{ansible_hostname}}'

Aquí he afegit una tasca Imprimeix el nom d'amfitrió de tots els amfitrions . Aquesta tasca utilitza Ansible depurar per imprimir un missatge quan s’executa el llibre de reproducció.

msg és l'únic paràmetre obligatori del fitxer depurar mòdul. El msg El paràmetre accepta una cadena entre cometes, que és el missatge que s’imprimirà a la consola.

Aquí, {{variable_name}} El format s’utilitza per accedir a una variable. En aquest cas, {{ansible_hostname}} s'utilitza per imprimir el fitxer ansible_hostname variable de cadascun dels amfitrions del fitxer d'inventari.

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

També podeu accedir a la variable Ansible facts com ansible_facts [variable_name] . Doncs el ansible_hostname variable es convertirà ansible_facts [nom de l’amfitrió] .

Podem tornar a escriure el fitxer print_variable1.yaml llibre de joc així també. Obtindrem la mateixa sortida.

- amfitrions: tots
usuari: ansible
tasques:
- nom: imprimirnom d'amfitrióde tots els amfitrions
depurar:
msg:'{{ansible_facts [' variable_name ']}}'

Executeu el llibre de reproducció print_variable1.yaml com segueix:

$llibres de jocs ansible-playbook/print_variable1.yaml

Com podeu veure, el nom d'amfitrió de cadascun dels amfitrions del fitxer d'inventari s'imprimeix a la consola.

Imprimim ara l'adreça IPv4 per defecte de cada amfitrió juntament amb el nom de l'amfitrió. Com podeu veure, es pot accedir a l'adreça IPv4 per defecte de l'amfitrió mitjançant el fitxer adreça propietat del ansible_default_ipv4 objecte.

Creeu un llibre de reproducció nou print_variable2.yaml com segueix:

$nanollibres de jocs/print_variable2.yaml

Escriviu les línies següents al fitxer print_variable2.yaml dossier:

- amfitrions: tots
usuari: ansible
tasques:
- nom: imprimirnom d'amfitrióde tots els amfitrions
depurar:
msg:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}'

Aquest llibre de joc és el mateix que abans. L’única diferència és la nova variable {{ansible_default_ipv4.address}} al msg opció del fitxer depurar mòdul.

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Executeu el fitxer print_variable2.yaml playbook de la següent manera:

$llibres de jocs ansible-playbook/print_variable2.yaml

Com podeu veure, l'adreça IPv4 i el nom d'amfitrió per defecte s'imprimeixen a la consola.

Per tant, així és com treballeu amb variables de Fets Ansibles.

Configuració de variables definides per l'usuari des de la línia d'ordres:

En aquesta secció, us mostraré com configurar variables definides per l'usuari des de la línia d'ordres mentre executeu els llibres de reproducció Ansible.

En primer lloc, creeu un nou llibre de jocs print_variable3.yaml com segueix:

$nanollibres de jocs/print_variable3.yaml

Escriviu les línies següents al fitxer print_variable3.yaml dossier:

- amfitrions: tots
usuari: ansible
tasques:
- nom: imprimircomandamentvariable de línia
depurar:
msg:'Benvingut {{username}}'

Aquí he utilitzat el fitxer depurar per imprimir el missatge Benvingut {{username}} . nom d'usuari és una variable que se substituirà quan executem el llibre de reproducció.

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Executeu el llibre de reproducció print_variable3.yaml com segueix:

$ansible-playbook-I 'nom d'usuari = Bob'llibres de jocs/print_variable3.yaml

NOTA: Aquí, -I l'opció s'utilitza per passar un nom d'usuari variable amb el valor Bob al llibre de joc print_variable3.yaml des de la línia d'ordres.

Com podeu veure, el missatge Benvingut Bob s’imprimeix a la consola.

Descobrim ara com passar diverses variables des de la línia d'ordres.

Creeu un llibre de reproducció nou print_variable4.yaml com segueix:

$nanollibres de jocs/print_variable4.yaml

Escriviu les línies següents al fitxer print_variable4.yaml dossier:

- amfitrions: tots
usuari: ansible
tasques:
- nom: imprimeix les variables definides per l'usuari
depurar:
msg:'nom d'usuari = {{nom d'usuari}} http_port = {{http_port}}'

El llibre de joc hauria de ser molt familiar ara mateix. Tot el que fa és imprimir les 2 variables nom d'usuari i http_port a la consola.

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Ara podeu passar el nom d'usuari i http_port variable al llibre de joc utilitzant dues diferents -I opció de la següent manera:

$ ansible-playbook-I 'nom d'usuari = Bob' -I 'http_port = 8080'
llibres de jocs/print_variable4.yaml

O bé, podeu separar les variables amb un espai en blanc, de la següent manera:

$ ansible-playbook-I 'nom d'usuari = Bob http_port = 8080'
llibres de jocs/print_variable4.yaml

Com podeu veure, el nom d'usuari i http_port les variables s’imprimeixen a la consola.

Treballar amb variables de grup definides per l'usuari

Per exemple, voleu afegir algunes variables a un grup d'amfitrions. Aquesta acció és molt fàcil de fer a Ansible.

Primer, obriu el fitxer amfitrions arxiu d’inventari de la següent manera:

$nanoamfitrions

Escriviu les línies següents al vostre amfitrions fitxer d’inventari:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[debian10: vars]
nom d'usuari = Lily
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vars]
nom d'usuari = Bob
http_port =7878

Com podeu veure, he creat una secció nova [debian10: vars] per debian10 grup amfitrió i afegit les variables ( nom d'usuari i http_port ) per debian10 grup d’allotjament allà.

De la mateixa manera, he creat una nova secció [centos8: vars] per centos8 grup amfitrió i afegit les variables ( nom d'usuari i http_port ) per centos8 grup d’allotjament allà.

Un cop hàgiu acabat, deseu el fitxer amfitrions fitxer d’inventari prement + X Seguit per I i .

Executeu el fitxer print_variable4.yaml llibres de joc de la següent manera:

$llibres de jocs ansible-playbook/print_variable4.yaml

Com podeu veure, les variables correctes es passen a cadascun dels amfitrions en funció del grup d'amfitrions.

Treballar amb variables d'amfitrió definides per l'usuari

En aquesta secció, us mostraré com definir variables per a amfitrions específics al fitxer d’inventari.

Primer, obriu el fitxer amfitrions arxiu d’inventari de la següent manera:

$nanoamfitrions

Per afegir variables a un amfitrió específic (per exemple, vm1.nodekite.com ), només cal afegir un espai / pestanya després del nom IP / DNS de l’amfitrió i escriure les variables, com es mostra a la captura de pantalla següent.

També podeu afegir diverses variables. Simplement separeu cada variable amb un espai.

Quan hàgiu acabat, deseu el fitxer d'inventari prement + X Seguit per I i .

Executeu el fitxer print_variable4.yaml llibres de joc de la següent manera:

$llibres de jocs ansible-playbook/print_variable4.yaml

Com podeu veure, les variables només es defineixen per a vm1.nodekite.com amfitrió. A la resta d’amfitrions s’hi han aplicat variables de grup.

Generació de fitxers d’inventari ràpidament amb intervals

Podeu utilitzar intervals per generar ràpidament fitxers d’inventari Ansible si les vostres adreces IP d’amfitrió o noms DNS són coherents (és a dir, tenen un format específic).

En els exemples anteriors, he utilitzat els hosts vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com i vm4.nodekite.com . En lloc d’escriure 4 línies, hauria pogut escriure vm [1: 4] .nodekite.com al fitxer d’inventari.

Per experimentar amb intervals, obriu el fitxer amfitrions arxiu d’inventari de la següent manera:

$nanoamfitrions

Elimineu tots els hosts i les variables dels fitxers d'inventari.

Ara podem substituir vm1.nodekite.com i vm2.nodekite.com amb vm [1: 2] .nodekite.com per debian10 grup amfitrió de la següent manera.

De la mateixa manera, podem substituir-los vm3.nodekite.com i vm4.nodekite.com amb vm [3: 4] .nodekite.com per centos8 grup d’acollida.

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Executeu el fitxer ping_all_hosts.yaml com segueix:

$llibres de jocs ansible-playbook/ping_all_hosts.yaml

Com podeu veure, els rangs d’amfitrions es van ampliar quan vaig executar el llibre de reproducció.

Emmagatzematge de variables en diferents fitxers

Emmagatzemar les variables de grup i les variables d’amfitrió al mateix fitxer d’inventari és molt fàcil. Però és possible que busqueu més flexibilitat. Especialment quan voleu utilitzar intervals al fitxer d’inventari, ja que ja no podeu definir variables d’amfitrió si feu servir intervals. Bé, podeu emmagatzemar variables de grup i variables d’amfitrió en diferents fitxers. En aquesta secció, us mostraré com es fa.

Per defecte, Ansible cerca variables de grup al fitxer grups_vars / variables de directori i amfitrió a host_vars / directori.

Per tant, creeu el fitxer grups_vars / i host_vars / directori de la següent manera:

$mkdir -pv {amfitrió, grup}_de qui

Per definir variables de grup per a debian10 grup amfitrió, creeu un fitxer debian10 (igual que el nom del grup) al fitxer grups_vars / directori de la següent manera:

$nanogrups_vars/debian10

Escriviu les vostres variables de la següent manera:

nom d'usuari: Lily
http_port: 4343

Un cop hàgiu acabat, deseu el fitxer prement + X seguit de Y i .

De la mateixa manera, per establir variables de grup per a centos8 grup amfitrió, creeu un fitxer centos8 (igual que el nom del grup) al fitxer grups_vars / directori de la següent manera:

$nanogrups_vars/centos8

Escriviu les vostres variables de la següent manera:

nom d'usuari: Bob
http_port: 7878

Un cop hàgiu acabat, deseu el fitxer prement + X seguit de Y i .

Executeu el fitxer print_variable4.yaml playbook de la següent manera:

$llibres de jocs ansible-playbook/print_variable4.yaml

Com podeu veure, les variables del grup es configuren correctament per a cada grup amfitrió.

Per establir variables d'amfitrió per a l'amfitrió vm1.nodekite.com , creeu un fitxer vm1.nodekite.com (igual que el nom de l'amfitrió o l'adreça IP) al fitxer host_vars / directori de la següent manera:

$nanovm1.nodekite.com

Escriviu les variables d’amfitrió de la següent manera:

nom d'usuari: Alex
http_port: 7788

Un cop hàgiu acabat, deseu el fitxer prement + X seguit de Y i .

Executeu el fitxer print_variable4.yaml playbook de la següent manera:

$ ansible-playbook llibres de reproducció/print_variable4.yaml
[

Com podeu veure, les variables d’amfitrió s’han configurat correctament per a l’amfitrió vm1.nodekite.com .

Treballar amb bucles a Ansible

En aquesta secció, us mostraré com utilitzar bucles a Ansible.

En primer lloc, creeu un nou llibre de jocs loop1.yaml al llibres de jocs / directori de la següent manera:

$nanollibres de jocs/loop1.yaml

Escriviu les línies següents al fitxer loop1.yaml playbook:

- amfitrions: tots
usuari: ansible
tasques:
- nom: imprimeix la llista d'usuaris
depurar:
msg:'Usuari: {{item}}'
amb_elements:
- Alex
- Bob
- Lliri

Aquí tinc 1 tasca que imprimeix una llista d’usuaris que utilitzen bucle.

Per definir els valors d'iteració de la tasca, utilitzeu el fitxer amb_elements mòdul. A continuació, afegiu els valors un per un.

amb_elements:
- Alex
- Bob
- Lliri

Accediu al valor de la iteració actual mitjançant el fitxer article variable.

depurar:
msg:'Usuari: {{item}}'

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Executeu el fitxer loop1.yaml playbook de la següent manera:

$llibres de jocs ansible-playbook/loop1.yaml

Com podeu veure, es va executar la mateixa tasca per a cada element de cada amfitrió. Per tant, el bucle funciona.

Treballar amb condicions a Ansible

Si voleu executar tasques basades en determinades condicions, aquesta secció és la vostra.

Per executar tasques segons la condició, podeu utilitzar el fitxer Quan mòdul d'Ansible. Vegem un exemple d’aquest mòdul. En primer lloc, creeu un nou llibre de jocs condició1.yaml com segueix:

$nanollibres de jocs/condició1.yaml

Escriviu les línies següents al fitxer condició1.yaml playbook:

- amfitrions: tots
usuari: ansible
tasques:
- nom: executeu aquesta tasca només a Debian
depurar:
msg:'aquesta tasca s'està executant a Debian'
quan: ansible_facts['distribució']=='Debian'

Aquí,

ansible_facts ['distribution'] == 'Debian' s'utilitza per comprovar si el fitxer distribució és Debian . La tasca només s'executarà si la distribució és Debian.

El ansible_facts ['distribució'] s’utilitza per accedir a la variable Fets Ansible distribució_ansible . També podeu consultar la versió de distribució mitjançant el fitxer distribució_analitzable_versió_major_ variable.

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Executeu el fitxer condició1.yaml playbook de la següent manera:

$llibres de jocs ansible-playbook/condició1.yaml

Com podeu veure, la tasca només es va executar als hosts Debian. La tasca no s'ha executat als amfitrions CentOS.

També podeu comprovar si hi ha diverses condicions al mateix temps i executar la tasca només si totes les condicions són certes. Vegem un exemple.

Creeu un llibre de reproducció nou condició2.yaml com segueix:

$nanollibres de jocs/condició2.yaml

Escriviu les línies següents al fitxer condició2.yaml dossier:

- amfitrions: tots
usuari: ansible
tasques:
- nom: executeu aquesta tasca només a Debian10
depurar:
msg:'aquesta tasca s'està executant a Debian 10'
quan: ansible_facts['distribució']=='Debian'
i ansible_facts['distribution_major_version']=='10'

Aquí, la tasca només s'executarà si la distribució és Debian ( ansible_facts ['distribution'] == 'Debian' ) i la versió és 10 ( ansible_facts ['distribution_major_version'] == '10' ). Si ambdues condicions són certes, la tasca s'executarà. En cas contrari, la tasca no s'executarà.

He utilitzat el i paraula clau per comprovar si les dues condicions són certes aquí. Si voleu comprovar si alguna de les condicions és certa, podeu utilitzar el fitxer o bé paraula clau.

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Executeu el llibre de reproducció condició2.yaml com segueix:

$llibres de jocs ansible-playbook/condició2.yaml

Com podeu veure, la tasca només es va executar als hosts Debian 10.

Canviem el llibre de joc condició2.yaml per executar la tasca només als hosts Debian 8 de la següent manera.

Com podeu veure, s'han omès tots els amfitrions, ja que no tinc cap amfitrió Debian 8 al fitxer d'inventari.

Treballar amb el mòdul apt Ansible

El apte El mòdul d'Ansible s'utilitza per instal·lar un paquet de programari específic als hosts Ubuntu / Debian. Vegem com utilitzar aquest mòdul.

En primer lloc, creeu un nou llibre de jocs apt1.yaml al llibres de jocs / directori de la següent manera:

$nanollibres de jocs/apt1.yaml

Escriviu les línies següents al fitxer apt1.yaml playbook:

- hosts: debian10
usuari: ansible
esdevenir: cert
tasques:
- nom: instal·la apache2
apte:
nom: apache2
estat: últim

El apte El mòdul requereix només el fitxer nom del paquet que voleu instal·lar / actualitzar / eliminar i el fitxer estat del paquet.

Aquí, intento instal·lar el fitxer apache2 paquet ( nom: apache2 ) als meus amfitrions de Debian 10. Com que intento instal·lar un paquet i també actualitzar-lo si hi ha disponible una nova versió, el fitxer estat hauria de ser últim .

estat també accepta les opcions següents:

- absent - El paquet s'eliminarà si ja està instal·lat.
- últim - El paquet s'actualitzarà si hi ha disponible una actualització. Si el paquet encara no està instal·lat, s’instal·larà.
- present - El paquet s'instal·larà si encara no està instal·lat. Però el paquet no s'actualitzarà si hi ha disponible una actualització.

Fixeu-vos que he afegit esdevenir: cert al llibre de jocs. Això donarà el ansible privilegis sudo d’usuari per modificar l’estructura del sistema de fitxers (és a dir, instal·lar / actualitzar / eliminar paquets). Sense esdevenir: cert , el apte no podrà instal·lar el mòdul apache2 paquet.

Un cop hàgiu acabat, deseu el llibre de reproducció prement + X Seguit per I i .

Executeu el fitxer apt1.yaml playbook de la següent manera:

$llibres de jocs ansible-playbook/apt1.yaml

Com podeu veure, el llibre de reproducció va funcionar amb èxit als amfitrions de Debian 10.

Com podeu veure, el apache2 El paquet està instal·lat als meus hosts Debian 10.

Treballar amb el mòdul Ansible dnf / yum

El dnf i yum El mòdul d'Ansible s'utilitza per instal·lar un paquet de programari específic als amfitrions CentOS / RHEL. Podeu utilitzar aquest mòdul de la mateixa manera que ho vau fer apte a la secció anterior d’aquest article.

Tant el dnf i yum els mòduls accepten els mateixos paràmetres. Podeu utilitzar el fitxer dnf mòdul als amfitrions CentOS / RHEL 8 i yum a CentOS / RHEL 7 o una versió anterior.

Vegem ara un exemple d’aquest mòdul.

En primer lloc, creeu un nou llibre de jocs dnf1.yaml al llibres de jocs / directori de la següent manera:

$nanollibres de jocs/dnf1.yaml

Escriviu les línies següents al fitxer dnf1.yaml playbook:

- amfitrions: centos8
usuari: ansible
esdevenir: cert
tasques:
- nom: instal·la el paquet httpd
dnf:
nom: httpd
estat: últim

El dnf i yum El mòdul requereix només el fitxer nom del paquet que voleu instal·lar / actualitzar / eliminar i el fitxer estat del paquet.

Aquí, intento instal·lar el fitxer httpd paquet ( nom: httpd ) als meus amfitrions CentOS 8. Com que intento instal·lar un paquet i també voldria actualitzar-lo si hi ha disponible una nova versió, el estat hauria de ser últim .

estat accepta les opcions següents:

- absent - El paquet s'eliminarà si ja està instal·lat.
- últim - El paquet s'actualitzarà si hi ha disponible una actualització. Si el paquet encara no està instal·lat, s’instal·larà.
- present - El paquet s'instal·larà si encara no està instal·lat. Però el paquet no s'actualitzarà si hi ha disponible una actualització.

Fixeu-vos que he afegit esdevenir: cert al llibre de jocs. Això dóna el ansible privilegis sudo d’usuari per modificar l’estructura del sistema de fitxers (és a dir, instal·lar / actualitzar / eliminar paquets). Sense esdevenir: cert , el apte no podrà instal·lar el mòdul httpd paquet.

Un cop hàgiu acabat, deseu el llibre de reproducció prement + X Seguit per I i .

Executeu el fitxer dnf1.yaml playbook de la següent manera:

$llibres de jocs ansible-playbook/dnf1.yaml

Com podeu veure, el llibre de reproducció va funcionar amb èxit a l’amfitrió CentOS 8.

Treballar amb el mòdul de servei Ansible

El servei El mòdul d'Ansible s'utilitza per iniciar, aturar, reiniciar, habilitar (afegir servei a l'inici) i desactivar (eliminar el servei de l'inici) als vostres amfitrions.

En seccions anteriors, us vaig mostrar com instal·lar el paquet del servidor HTTP Apache mitjançant Ansible apte , dnf i yum mòduls. Ara assegurem-nos que el servei del servidor HTTP Apache s'està executant i que s'ha afegit a l'inici del sistema.

Treballaré amb els meus amfitrions de Debian 10. Però, si voleu, podeu treballar amb els amfitrions de CentOS 8. Simplement ajusteu el llibre de reproducció en conseqüència.

En primer lloc, creeu un nou llibre de joc Ansible apt2.yaml com segueix:

$nanollibres de jocs/apt2.yaml

Escriviu les línies següents al fitxer apt2.yaml playbook:

- hosts: debian10
usuari: ansible
esdevenir: cert
tasques:
- nom: instal·la apache2
apte:
nom: apache2
estat: últim
- nom: Inicieu el servei apache2
servei:
nom: apache2
estat: començat
activat: cert

Aquí he afegit una nova tasca, Inicieu el servei apache2 .

nom: apache2 - el servei en què estic treballant és apache2 .

estat: començat - el servei ha d’estar en execució.

activat: cert - El servei s'ha d'afegir a l'inici del sistema.

El estat El paràmetre accepta altres valors.

- recarregat - El servei ha de tornar a carregar els fitxers de configuració.
- es va reiniciar - Cal reiniciar el servei.
- va començar - El servei ha d’estar en execució. Si el servei no s’està executant, inicieu-lo.
- aturat - Cal aturar el servei. Si el servei s'està executant, atureu-lo.

Executeu el llibre de reproducció apt2.yaml com segueix:

$llibres de jocs ansible-playbook/apt2.yaml

Com podeu veure, el llibre de reproducció s'ha executat correctament.

Com podeu veure, el apache2 El servei s'està executant als meus hosts Debian 10.

Treballar amb el mòdul de còpia Ansible

L'Ansible còpia El mòdul s'utilitza principalment per copiar fitxers de l'ordinador a hosts remots.

A la secció anterior, vaig instal·lar el servidor web Apache 2 als meus hosts Debian 10. Copiem ara un index.html fitxer al webroot dels amfitrions de Debian 10.

En primer lloc, creeu un directori nou Fitxers/ com segueix:

$mkdir -vFitxers

Creeu un fitxer nou index.html al Fitxers/ directori de la següent manera:

$nanoFitxers/index.html

Escriviu les línies següents al fitxer index.html dossier:


< html >
< cap >
< títol >Servidor web de Ansible</ títol >
</ cap >
< cos >
< h1 >Benvingut a LinuxHint</ h1 >
< pàg >Aquest servidor web es va desplegar amb Ansible.</ pàg >
</ cos >
</ html >

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Creeu un nou llibre de joc Ansible apt3.yaml com segueix:

$nanollibres de jocs/apt3.yaml

Escriviu les línies següents al fitxer apt3.yaml dossier:

- hosts: debian10
usuari: ansible
esdevenir: cert
tasques:
- nom: instal·la apache2
apte:
nom: apache2
estat: últim
- nom: Copieu index.html al servidor
còpia:
src: ../Fitxers/index.html
dest:/on/www/html/index.html
mode: 0644
propietari: www-data
grup: www-data
- nom: Inicieu el servei apache2
servei:
nom: apache2
estat: començat
activat: cert

Aquí, la tasca Copieu index.html al servidor copia el fitxer index.html des del Fitxers/ al directori / var / www / html / directori dels amfitrions de Debian 10.

src: ../files/index.html - La ruta del fitxer font.
dest: /var/www/html/index.html - El camí del fitxer de destinació.
mode: 0644 - Els permisos per a l'usuari del fitxer (6 - lectura i escriptura), grup (4 - lectura) i altres (4 - lectura).
propietari: www-data - Establiu el propietari del fitxer a www-dades .
grup: www-data - Establiu el grup del fitxer a www-dades .

Un cop hàgiu acabat, deseu el fitxer prement + X Seguit per I i .

Executeu el fitxer apt3.yaml playbook de la següent manera:

$llibres de jocs ansible-playbook/apt3.yaml

Com podeu veure, la tasca Copieu index.html al servidor té èxit.

Com podeu veure, el index.html es va copiar el fitxer als hosts Debian 10.

Com podeu veure, el servidor web Debian 10 serveix a index.html pàgina que acabo de copiar als amfitrions de Debian 10.

Per tant, aquests són els conceptes bàsics d’Ansible. Podeu obtenir més informació sobre Ansible llegint la documentació oficial d’Ansible. Gràcies per llegir aquest article.