Ansible, un proiect cu sursă deschisă și gratuit, dezvoltat de Red Hat, bazat pe limbajul Python, reprezintă o platformă populară pentru automatizarea IT și gestionarea configurațiilor sistemelor.
Funcționând pe diverse platforme, Ansible este compatibil cu majoritatea sistemelor de operare actuale, inclusiv Linux, Windows și macOS. Acesta folosește un limbaj declarativ, YAML (sau YAML Ain’t Markup Language), pentru a defini configurarea sistemului.
Alături de alte platforme moderne de gestionare a configurațiilor, Ansible a transformat radical modul în care este realizată automatizarea IT, stabilind noi standarde în industrie. Instrumentele de management al configurației au devenit o componentă esențială a setului de instrumente DevOps, integrându-se în mod natural în orice ciclu de viață modern al proceselor IT. Acest lucru este valabil pentru orice tip de infrastructură, fie că este on-premise, hibridă sau în cloud. Ansible nu este util doar în cadrul DevOps, ci poate automatiza și diverse sarcini zilnice ale administratorilor de sistem.
Un mare avantaj al Ansible este că nu necesită instalarea de agenți pe sistemele țintă. Pentru a începe, este suficient accesul SSH la mașina țintă și o versiune compatibilă de Python, care este deja instalată pe majoritatea sistemelor moderne. Datorită naturii sale ușoare, Ansible poate fi implementat și utilizat chiar și cu sisteme mai vechi.
Aplicații ale Ansible
Orchestrarea sistemelor
Ansible este un instrument preferat pentru orchestrară sarcinilor de administrare și implementare a sistemelor. Prin intermediul playbook-urilor, se pot folosi aceleași fluxuri de lucru pentru diferite proiecte, iar datele de configurare bazate pe YAML permit stocarea și gestionarea versiunilor infrastructurii în cadrul depozitelor Git sau al altor platforme de control al versiunilor.
Implementarea aplicațiilor
Indiferent dacă este vorba de o aplicație simplă sau de o implementare complexă pe mai multe niveluri, Ansible facilitează automatizarea completă a ciclului de viață al implementării aplicațiilor.
Securitate și conformitate
Ansible contribuie la asigurarea securității sistemelor, conformându-se cu politicile organizaționale și standardele din industrie. Capabil să funcționeze pe mii de servere, Ansible poate realiza audituri și poate remedia vulnerabilitățile de securitate, oferind administratorilor control complet asupra mediului.
Acum, să analizăm câteva dintre sarcinile frecvente ale administratorilor de sistem, care pot fi automatizate cu ajutorul Ansible.
Transferul de fișiere între sisteme locale și la distanță
Un administrator de sistem transferă frecvent fișiere între directoare. Fișierele de configurare sunt adesea copiate pe servere la distanță, sau uneori fișierele sunt mutate de la o locație la distanță la alta.
Modulul de copiere al Ansible facilitează automatizarea acestor sarcini prin playbook-uri.
Este o practică obișnuită ca un administrator să monitorizeze starea serverelor și să efectueze acțiuni în conformitate cu politicile organizației. O astfel de acțiune este verificarea duratei de funcționare a serverului (uptime). Ansible permite preluarea facilă a acestor valori, care pot fi apoi afișate. Un exemplu de copiere a configurației NTP de pe un server local pe unul la distanță, folosind modulul de copiere, este prezentat mai jos:
- hosts: all gather_facts: no become: yes tasks: - name: Copiază un nou fișier de configurare NTP și creează o copie de rezervă a originalului, dacă există diferențe copy: src: ./ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644' backup: yes
Configurarea sarcinilor programate cu cron
Programarea sarcinilor pentru a efectua operațiuni de rutină este o parte importantă a administrării oricărui server. Se pot programa backup-uri automate, patch-uri, audituri etc., în anumite momente, permițând utilizarea eficientă a timpului.
cron este un instrument Linux pentru programarea sarcinilor, iar Ansible permite adăugarea sau modificarea acestor sarcini. Următorul playbook demonstrează cum se poate seta o sarcină rsync ca root pe unul sau mai multe servere folosind Ansible.
- hosts: all gather_facts: no become: yes tasks: - name: Implementează o sarcină cron cron: name: "Setează o sarcină rsync" user: root minute: "5" hour: "4" job: "rsync -avz /cale/catre/folder1 /cale/catre/folder1 2>&1"
Administrarea discurilor și a sistemelor de fișiere
Ansible poate fi utilizat pentru gestionarea discurilor, a partițiilor, a sistemelor de fișiere și a montărilor, inclusiv a fișierului /etc/fstab pe serverele Linux. Diferite module Ansible fac acest lucru posibil. Iată un exemplu care creează o partiție de 100 GB pe un disc, o formatează cu sistemul de fișiere ext4, creează un nou director pentru montarea partiției și, în final, o montează pe un director dat. O intrare în /etc/fstab este, de asemenea, creată, montarea fiind temporară sau permanentă, în funcție de opțiunile modulului.
- hosts: all gather_facts: no become: yes tasks: - name: Creează o partiție parted: device: /dev/sdb number: 1 part_end: "100%" state: present - name: Formatează noua partiție filesystem: fstype: ext4 dev: /dev/sdb1 - name: Creează directorul de montare file: path: /data state: directory - name: Montează partiția mount: path: /data src: /dev/sdb1 fstype: ext4 state: mounted
Colectarea jurnalelor serverului
Stocarea jurnalelor într-un loc accesibil este uneori crucială pentru securitate, audit și analiză. Ansible permite colectarea jurnalelor de la diverse servere din infrastructura dvs. și stocarea lor într-o locație definită. Următorul playbook exemplifică modul de realizare a acestui lucru:
- hosts: all gather_facts: no become: yes tasks: - name: Găsește jurnalele find: paths: /var/log/ patterns: '*.log' recurse: yes register: _logs - name: Descarcă jurnalele fetch: src: "{{ item.path }}" dest: /tmp/logs with_items: "{{ _logs.files }}"
Instalarea sau dezinstalarea pachetelor și a aplicațiilor
Adesea, este necesar ca pachetele să fie instalate la cererea utilizatorilor sau ca parte a versiunilor inițiale ale serverului. De asemenea, se poate impune eliminarea anumitor pachete care nu mai sunt necesare sau care au anumite erori critice. Ansible permite instalarea sau dezinstalarea facilă a pachetelor, eliminând necesitatea de a merge la fiecare server și de a rula manual comenzi. Următorul exemplu demonstrează instalarea și dezinstalarea câte unui pachet pentru serverele Linux bazate pe Ubuntu și RHEL/CentOS.
- hosts: ubuntu gather_facts: no tasks: - name: Instalează utilitarul lsof apt: pkg: lsof state: latest sudo: yes - name: Elimină utilitarul ARP Scan apt: pkg: arp-scan state: absent sudo: yes --- - hosts: centos gather_facts: no tasks: - name: Instalează utilitarul lsof yum: pkg: lsof state: latest sudo: yes - name: Elimină utilitarul ARP Scan yum: pkg: arp-scan state: absent sudo: yes
Gestionarea utilizatorilor
Utilizatorii și grupurile formează structura de bază în jurul căreia sistemele Unix/Linux gestionează accesul și permisiunile. Într-o organizație mare, administrarea utilizatorilor și a grupurilor poate reprezenta o provocare majoră, chiar și cu automatizarea menită să susțină mediul.
Ansible oferă administratorilor de sistem un instrument eficient pentru a crea, modifica și șterge utilizatori și grupuri, cu toate opțiunile posibile suportate de sistemul de operare.
Iată un exemplu simplu care demonstrează crearea și ștergerea utilizatorilor și a grupurilor folosind Ansible. După rularea acestui playbook, serverele țintă vor avea grupul A și grupul B create cu GID-urile specificate, în timp ce user1 va fi eliminat, dacă este prezent. Un nou utilizator fără shell va fi creat ca user2, cu UID-ul indicat, grupurile alocate și parola blocată.
- hosts: all gather_facts: no become: yes tasks: - group: gid: 12310 name: groupA state: present - group: gid: 12311 name: groupB state: present - user: name: user1 state: absent - user: name: user2 uid: 12427 shell: /bin/false password_lock: yes groups: groupA, groupB
Administrarea serviciilor
Serviciile sunt procese demon care rulează în fundal și oferă anumite facilități, precum sshd, care asigură conectivitatea SSH. Cu ajutorul Ansible, puteți administra serviciile de sistem și cele ale utilizatorilor, inclusiv pornirea, oprirea și repornirea acestora. Următorul playbook ilustrează modul în care se realizează acest lucru:
- hosts: all gather_facts: no become: yes tasks: - name: Repornește serviciul SSH service: name: ssh state: restarted - name: Oprește serviciul SSSD service: name: sssd state: stopped - name: Pornește serviciul httpd service: name: httpd state: started
În exemplul de mai sus, serviciul SSH va fi repornit, după care se va opri serviciul SSSD. Demonul httpd este pornit în final. Deoarece Ansible este idempotent, orice serviciu deja pornit sau oprit nu va fi modificat, în timp ce repornirea va schimba starea serviciului. Nu uitați să verificați denumirea serviciului, deoarece diferite distribuții Linux pot folosi alte denumiri chiar și pentru același serviciu, de exemplu ssh și sshd.
Concluzie 👨💻
Ansible simplifică activitatea administratorilor de sistem, permițând automatizarea sarcinilor repetitive și consumatoare de timp, reducând erorile umane și efortul depus. În plus, permite stocarea datelor de configurare într-un depozit central de cod precum Git, facilitând colaborarea între mai mulți utilizatori și revizuirea fiecărei activități.
Pentru a afla mai multe despre Ansible și setul său extins de module, consultați documentația.