Aflați mai multe despre Jurnalul Ansibil pentru automatizarea sarcinilor

Aflați mai multe despre Ansible Playbook pentru a automatiza sarcinile.


Anterior am discutat despre introducerea, ghidul de instalare și, ulterior, să vorbim despre Playbook și blocurile sale de construcție.

Ce este Ansible Playbook?

Cartea de joacă este un limbaj automat automat. Este un fișier simplu cu un set de instrucțiuni. Este în cărți de joc unde definim ce vrem să facem Ansible. Jurnalele de joc conțin piese care rulează sarcini, iar aceste sarcini rulează module. Sarcinile lor se execută secvențial.

De exemplu, poate fi la fel de simplu ca rularea unei serii de comenzi pe diferite servere într-o secvență și repornirea acestor servere în ordine. Sau ar putea fi la fel de complex ca implementarea și aprovizionarea a sute de VM-uri într-un cloud public și privat, inclusiv echilibrarea sarcinii, monitorizarea, configurarea rețelei.

Limbă de jurnal

Jurnalele sunt fișiere simple scrise cu cod YAML.

YAML este un limbaj de serializare a datelor. Este ușor de citit de oameni și de mașini. Nu aveți nevoie de nicio abilitate specială de codare pentru a scrie coduri YAML. Vă puteți gândi la limbajul de serializare a datelor ca un traducător pentru a descompune toată structura dvs. de date și a le serializa într-o ordine care poate fi reconstruită din nou pentru utilizarea ulterioară. Puteți utiliza această structură de date reconstruită în același mediu sau chiar într-un mediu diferit.

Mai jos este un exemplu de fișier YAML pentru a instala mysql:


– nume: Instalează MySQL
gazde: geekflare-mysql-service
sarcini:
– nume: Instalează MySQL
action: $ ansible_pkg_mgr pkg = mysql-server state = instalat
– nume: Adăugați Python MySQL DB
action: $ ansible_pkg_mgr pkg = python-mysqldb state = instalat

Noțiuni de bază ale cărții de joacă

Această parte a articolului acoperă conceptele Ansible de bază pentru a înțelege mai multe despre Ansible Playbook.

Gazde și Utilizatori

Ansible are nevoie de mașini țintă din infrastructura pe care jocurile trebuie să fie implementate din Ansible playbook. Gazdele sunt adăugate la inventarul Ansible prin adresele IP. Gazdele sunt o listă a unuia sau mai multor grupuri sau modele de gazdă separate printr-un punct. Remote_user conține numele contului de utilizator.


– gazde: ProdServers
remote_user: geekflare

variabile

Variabilele vă permit să modificați modul în care rulează un jurnal. Acestea pot fi folosite aproape peste tot în jurnal și pot fi moștenite dintr-un inventar, setat în mod explicit la runtime, descoperite la începutul unei rulări de cărți de joc. Puteți defini un nume variabil folosind litere, numere și subgrafe, dar trebuie să înceapă doar cu o literă.

De exemplu, port_01 este o variabilă validă, în timp ce 01_post este o variabilă nevalidă. Iată un exemplu de variabile dintr-un Ansbook Playbook:

vars:
http_port: 80
max_clients: 200

Stocurile

Pentru a rula un jurnal, aveți nevoie de o listă de ținte pe care doriți să se întâmple automatizarea. Acest lucru face un inventar. Listele de inventar pot fi construite și stocate în mai multe moduri diferite, inclusiv fișiere statice, adică gazde Ansible. Sau poate fi generat dinamic printr-un script de inventar care va trage o listă de gazde pentru o sursă externă.

De asemenea, puteți specifica o variabilă ca parte a listei de inventar. Inventarele sunt în cele din urmă o listă de lucruri pe care doriți să le automatizați.

[Webservere]
192.168.20.1
192.168.20.2
192.168.20.4
[dbservers]
172.17.1.56
172.17.1.57

Sarcini

Joacă în activități de ansamblu jurnal de ansamblu. Sarcina este responsabilă de rularea modulelor ansibile. La un moment dat, se poate rula o singură sarcină, iar sarcinile sunt executate în ordine secvențială. Sarcinile lor sunt scrise în YAML, care este destul de mult ca limba engleză.

De exemplu: instalați nume_pache, Actualizare nume_program, etc. Mai jos este prezentat un exemplu de sarcină din Ansible playbook pentru a instala httpd:

sarcini:
– nume: Instalează pachetul httpd
yum: nume = starea httpd = cea mai recentă

Handlere

Manipulatorii sunt un fel de sarcini speciale.

Ele pot fi declanșate de o sarcină și sunt rulate o dată la sfârșitul piesei. Este utilizat pentru a trimite notificări dacă există vreo modificare în fișierul de configurare, de exemplu, serviciul de notificare pentru a începe apache odată ce este instalat. Sintaxa „notifică” este utilizată pentru apelarea operatorilor. Mai jos este un exemplu de handler pentru a reporni apache:


– gazde: toate
sarcini:
– nume: asigurați-vă că apache este cea mai recentă versiune
yum: nume = starea httpd = cea mai recentă
notifică:
– reporniți apache
– nume: asigurați-vă că apache rulează (și activați-l la pornire)
service: nume = httpd state = pornit activat = da
stivuitoare:
– nume: reporniți apache
service: name = httpd state = repornit

Creați și rulați primul dvs. jurnal de răspunsuri

Permiteți-mi să vă spun cum să scrieți un jurnal. Fiecare carte de joc începe cu trei liniuțe (-) în partea de sus.

Primul lucru pe care-l menționați într-un Ansible Playbook sunt mașinile gazdă pe care doriți să rulați playbook-ul.

Apoi puteți menționa variabile culegând fapte; atunci puteți menționa diferitele sarcini pe care doriți să le efectuați. Acum, amintiți-vă că sarcina este executată în aceeași ordine în care le scrieți. De exemplu, doriți să instalați software-ul A mai întâi și apoi software-ul B, asigurați-vă că prima sarcină scrisă în jurnalul de joc ar fi instalarea software-ului A și următoarea sarcină ar putea instala software-ul B.

Apoi ai manevre în partea de jos. Manipulatoarele sunt de asemenea sarcini, dar diferența constă în a executa manevrele de care aveți nevoie de un fel de declanșatoare în lista de sarcini pentru a rula manipulatori.

Permiteți-mi să vă arăt cum puteți crea un jurnal de joc ansibil pentru a instala și începe nginx pe o gazdă și porniți-l.

Creați un fișier .yml în care veți pune codurile dvs. YAML pentru crearea unui jurnal de ansamblu.

gedit nginx.yml

Puneți codul YAML de mai jos în acest fișier și salvați fișierul.


– gazde: Client
sudo: da
vars:
– server_port: 8080

sarcini:
– nume: Instalează serverul web nginx
apt: pkg = nginx state = instalat update_cache = true
notifică:
– începe nginx

stivuitoare:
– nume: start nginx
service: nume = nginx state = pornit

Fișierul YAML de mai sus începe cu gazdele, vreau să rulez acest playbook pe mașina client (Client). Adresa IP a clientului este deja salvată în fișierul / etc / ansible / hosts.

Următoarea linie permite rularea sarcinilor cu privilegii sudo.

Apoi am definit server_port ca o variabilă în acest jurnal.

Apoi vine prima mea sarcină în acest ansibil jurnal de instalare a unui server web Nginx. Această sarcină are, de asemenea, parametrul de notificare, ceea ce înseamnă, după această sarcină, un handler cu rulare.

În cele din urmă, am scris un handler pentru a porni nginx pe mașina client.

Acum, când aveți clar codurile YAML din jurnalul nesensibil, să rulăm jurnalul. Mai jos este sintaxa pentru a rula un jurnal de joc ansibil:

ansible-playbook file_name.yml

Acum, voi rula cartea de joc ansibilă, pe care am creat-o pentru a instala și începe nginx.

[Email protected]: / home / geekflare # ansible-playbook nginx.yml

PLAY [Client] ********************************************** ********************

TASK [Adunarea faptelor] ********************************************* ************
ok: [nod1]

TASK [Instalează serverul web nginx] ******************************************* ****

schimbat: [nod1]

RUNNING HANDLER [start nginx] ******************************************** ******
ok: [nod1]

PLAY RECAP ************************************************ *********************
nod1: ok = 3 schimbat = 1 nerecomandabil = 0 eșuat = 0 omis = 0 salvat = 0 ignorat = 0 ignorat

Rulați comanda de mai jos pentru a verifica dacă serverul nginx a fost instalat și pornit corect de jurnalul ansibil.

[Email protected]: / home / geekflare # ps waux | grep nginx
rădăcină 3021 0,0 0,0 77676 1516? Ss 15:27 0:00 nginx: master process / usr / sbin / nginx -g daemon on; master_process pe;

Concluzie

A fost vorba despre Ansbook playbook. Sper că acest articol v-a ajutat să aflați cum puteți crea și rula un jurnal de redare Ansible. Verifica asta Curs, dacă doriți să aflați subiecte avansate în Ansible, inclusiv Roluri, Jinja2, Căutări, Filtru, Module personalizate.

ETICHETE:

  • ansiblu

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map