Ansible – un must have in tolba DevOps

Ansible este o unealta scrisa de Michael DeHaan in 2015 pentru automatizarea elementelor din ecosistemul IT al unei organizatii. De exemplu, Ansible permite unui inginer sa scrie cod pentru a crea, gestiona si configura instante virtuale on-premises sau in cloud, utilizand astfel conceptul de Infrastructure as Code. Ansible este si o unealta de management a configuratiilor, ceea ce face incredibil de scalabile operatiunile de mentenanta ale sistemelor administrate (aplicatii, servere, storage, retele).

Ansible poate automatiza infrastructura, aplicatiile, retelele, containerele, politicile de securitate si mediile cloud ale organizatiei. Pentru automatizari Ansible foloseste:

  • YAML (YAML Ain’t Markup Language) – un mod de descriere a datelor foarte folosit de limbajele de programare si suficient de “human-friendly” pentru a fi citit si inteles usor si de catre oameni
  • Un mod direct de comunicare cu elementul automatizat, fara a fi nevoie de vreo componenta aditionala / intermediara. (Spre deosebire de alte platforme similare ca Chef sau Puppet, Ansible este o platforma “agentless”.)
  • Playbook-uri care descriu pasii si ordinea in care acestia trebuie sa fie executati pentru a ajunge la obiectivul dorit.

Mai jos este un exemplu de astfel de playbook scris in YAML care descrie o interfata de retea pe o masina virtuala si ii asigneaza parametrii necesari pentru a comunica:

– name: playbook for the network interface
hosts: VM-SRV1.example.com
vars
target_mac: “52:ca:21:fe:2f:43”
network_connection:
– name: static-network
type: ethernet
mac: “{{ target_mac }}”
state: up
ip:
dhcp:no
address:
– 192.168.0.115/24
gateway4: 192.168.0.1

Ansible este instrumentul potrivit la locul potrivit daca trebuie:

  • Sa instalezi Ansible poate crea masinile virtuale care sa gazduiasca aplicatiile si serviciile folosite de organizatie folosind un fisier playbook care descrie numarul de instante dorit sistemul de operare necesar, numarul de procesoare, cantitatea de memorie RAM, volumul de storage si interfetele de retea. Apoi, ca exemplu, tot prin Ansible poti configura masina virtuala ca un server de tip LAMP (Linux, Apache, MySQL, PHP – elementele componente ale unui site) care sa gazduiasca un website.
  • Sa faci roll-out unei aplicatii in mediul de productie. In general, o aplicatie trece prin trei etape pana sa poate fi data in folosinta: dezvoltare (aici sunt verificate erorile de cod, de executie), testare (aici sunt verificate erorile de logica si de securitate) si apoi efectiv deployment-ul in productie. Toate aceste etape pot fi executate automat si verificate de Ansibile.
  • Sa automatizezi reteaua. Echipamentele de retea pot fi configurate si controlate prin playbook-uri Ansible. De exemplu, ori de cate ori cineva modifica o setare, fisierul de configuratie poate fi incarcat pe un server pentru a avea backup. Mai mult, acel fisier poate fi parsat pe o lista de modificari acceptate, si daca respectiva modificare nu este aprobata, Ansible poate face rollback automat la starea anterioara. Inventarierea echipamentelor de retea, templetizarea anumitor setari (configuratii de OSPF, BGP, access list-uri, AAA, NTP, VLAN-uri, syslog, SNMP) sunt alte aspecte importante care pot fi automatizate cu Ansible, reducand masiv riscul de eroare din partea operatorului uman si eficientizand procesele operationale din retea.

Platforma de automatizare Ansible reprezinta un mediu ideal pentru a crea si lucra cu automatizari la scala mare, din interiorul retelei on-premises pana in cloud-ul hybrid. Ansible permite crearea, partajarea si gestionarea automatizarii pentru echipele de DevOps, ITOps si NetOps ale organizatiei, transformand ecosistemul IT traditional – monolitic, manual, lent, inchis – intr-unul demn de secolul 21 – standardizat, consistent, programabil, centralizat, agil, adaptabil.

Mihai Dumitrascu, Sr Systems Engineer