Ansible, un proiect gratuit și open-source bazat pe Python de la Red Hat, este o platformă populară de gestionare a configurației și automatizare IT.
Este multi-platformă și poate funcționa cu majoritatea sistemelor de operare moderne, inclusiv Linux, Windows și Mac. Acceptă un limbaj declarativ scris în YAML sau YAML Ain’t Markup Language pentru a descrie configurația sistemului.
Ansible, împreună cu alte platforme moderne de management al configurației, a revoluționat automatizarea IT și standardele din industrie. Instrumentele de management al configurației au devenit parte a setului de instrumente DevOps și sunt o parte inseparabilă a oricărui ciclu de viață modern al procesului IT. Acest lucru este aplicabil pentru orice mediu de infrastructură modern, indiferent dacă este construit pe un mediu local, hibrid sau cloud. Nu numai pentru DevOps, ci și Ansible poate ajuta la automatizarea multor sarcini de zi cu zi efectuate de un administrator de sistem.
Unul dintre avantajele utilizării Ansible este că nu necesită agenți și nu are nevoie de mult pentru a începe, în afară de accesul SSH la mașina țintă și versiunea acceptată de Python, care este deja instalată implicit pe majoritatea sistemelor de operare moderne. De asemenea, deoarece este un instrument ușor, poate fi implementat și utilizat cu o moștenire a sistemelor inovatoare.
Cuprins
Utilizări ale lui Ansible
Orchestrație
Ansible este un instrument de alegere pentru orchestrarea diferitelor sarcini de administrare și implementare a sistemului. Playbook-urile permit utilizarea acelorași fluxuri de lucru de orchestrare în diferite proiecte, iar datele de configurare bazate pe YAML permit stocarea și versiunea infrastructurii dvs. pe depozitul Git sau pe orice platformă de control al versiunilor acceptată.
Implementarea aplicației
Fie că este vorba de o simplă aplicație de cod de câteva linii sau de o implementare grea pe mai multe niveluri, Ansible face posibilă automatizarea ciclului de viață de implementare a aplicațiilor de la capăt la capăt.
Securitate și conformitate
Ansible vă poate ajuta, de asemenea, să vă asigurați că sistemele dvs. sunt securizate conform ghidurilor organizației dvs. și conform standardelor din industrie. Poate rula pe mii de servere, poate genera un audit și poate remedia acele găuri de securitate, oferind administratorului controlul complet asupra mediului.
Să ne uităm acum la unele dintre sarcinile comune de administrator de sistem pe care le puteți automatiza cu Ansible.
Copiați fișiere dintr-un sistem local sau la distanță
În calitate de administrator de sistem, este obișnuit să copiați fișiere dintr-un director în altul. Fișierele de configurare trebuie adesea copiate pe servere la distanță sau, uneori, trebuie să mutăm fișierele dintr-o locație la distanță în alta.
Modulul de copiere Ansible vă poate ajuta să faceți aceste sarcini într-un manual.
Este o sarcină de rutină pentru un administrator de sistem să cunoască starea serverelor gestionate și să efectueze acțiuni predefinite conform politicilor organizației. O astfel de sarcină este să cunoști timpul de funcționare al serverului. Cu Ansible, putem prelua cu ușurință valorile timpului de funcționare și le putem imprima împreună. Un exemplu pentru a copia configurația ntp de la un server local pe un server la distanță folosind modulul de copiere este prezentat mai jos:
--- - hosts: all gather_facts: no become: yes tasks: - name: Copy a new ntp configuration file and back up the original, if it differs copy: src: ./ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644' backup: yes
Configurați lucrări cron suplimentare
Configurarea sarcinilor programate pentru a efectua sarcini de rutină face parte din gestionarea oricărui server. Puteți programa backup-uri automate, corecție, auditare etc., în anumite ore ale zilei sau lunii în mod automat și lăsând timp productiv pentru utilizarea dvs.
cron este un astfel de instrument în Linux care acceptă programarea, iar Ansible vă poate ajuta să adăugați sau să modificați acele joburi. Ca exemplu, manualul de mai jos demonstrează cum puteți seta cu ușurință un job rsync ca root pe unele sau pe toate serverele dvs. folosind Ansible.
--- - hosts: all gather_facts: no become: yes tasks: - name: Deploy cron job cron: name: "Set rsync job" user: root minute: "5" hour: "4" job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"
Gestionați discurile și sistemele de fișiere
Ansible poate fi folosit pentru a gestiona discuri, partiții, sisteme de fișiere și monturi, inclusiv /etc/fstab pe serverele Linux. Modul diferit Ansible face acest lucru posibil. Iată un exemplu care creează o partiție pe un disc de 100 GB, o formatează cu sistemul de fișiere ext4 creează un director nou pentru montarea partiției și, în final, o montează pe un director dat. O intrare în /etc/fstab este, de asemenea, creată prin montare temporară sau permanentă, în funcție de opțiunile modulului.
--- - hosts: all gather_facts: no become: yes tasks: - name: Create a partition parted: device: /dev/sdb number: 1 part_end: "100%" state: present - name: Format new partition filesystem: fstype: ext4 dev: /dev/sdb1 - name: Create mount directory file: path: /data state: directory - name: Mount partition mount: path: /data src: /dev/sdb1 fstype: ext4 state: mounted
Colectați jurnalele de server
Păstrarea jurnalelor într-un loc convenabil este uneori esențială pentru securitate, audit și analiză. Ansible permite colectarea jurnalelor de la diferite servere din mediul dvs. de întreprindere și le păstrează cu ușurință în locația definită. Iată manualul de joc pentru a realiza acest lucru:
--- - hosts: all gather_facts: no become: yes tasks: - name: Find logs find: paths: /var/log/ patterns: '*.log' recurse: yes register: _logs - name: Fetch logs fetch: src: "{{ item.path }}" dest: /tmp/logs with_items: "{{ _logs.files }}"
Instalați sau eliminați pachete și software
Este adesea necesar ca pachetele să fie instalate la solicitările utilizatorilor sau ca parte a versiunilor inițiale ale serverului. Este posibil să fie nevoie, de asemenea, să eliminăm anumite pachete care nu mai sunt necesare sau care au unele erori critice etc. Ansible vă permite să instalați sau să eliminați cu ușurință pachete, fără a fi nevoiți să mergeți la fiecare server și să rulați comenzi manuale. Iată un exemplu care demonstrează instalarea și eliminarea câte un pachet pentru serverele Linux bazate pe Ubuntu și RHEL/CentOS.
--- - hosts: ubuntu gather_facts: no tasks: - name: Install lsof utility apt: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility apt: pkg: arp-scan state: absent sudo: yes --- - hosts: centos gather_facts: no tasks: - name: Install lsof utility yum: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility yum: pkg: arp-scan state: absent sudo: yes
Gestionarea utilizatorilor
Utilizatorii și grupurile formează structura de bază în jurul căreia sistemele bazate pe Unix/Linux gestionează accesul și permisiunile. Într-o organizație mare, gestionarea utilizatorilor și a grupurilor poate fi o mare provocare, în ciuda automatizării pentru a susține mediul.
Cu Ansible, administratorul de sistem are un instrument excelent pentru a crea, modifica și șterge utilizatori și grupuri cu toate posibilitățile diferite acceptate în sistemul de operare.
Iată un exemplu simplu care arată crearea și ștergerea utilizatorilor și a grupurilor folosind Ansible. După rularea acestui manual, serverele țintă vor avea grupul A și grupul B creat cu GID-uri date, în timp ce user1 va fi eliminat, dacă este prezent. Un nou utilizator fără shell va fi creat ca user2 cu UID-ul dat, 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
Gestionarea serviciilor
Serviciile sunt demoni de proces care rulează în fundal și servesc anumite servicii, cum ar fi sshd, care oferă conectivitate SSH etc. Folosind Ansible, puteți gestiona serviciile de sistem și de utilizator, cum ar fi pornirea, oprirea și repornirea acestora. Iată un exemplu de manual pentru a demonstra că:
--- - hosts: all gather_facts: no become: yes tasks: - name: Restart ssh daemon service: name: ssh state: restarted - name: Restart sssd daemon service: name: sssd state: stopped - name: Restart httpd daemon service: name: httpd state: started
În exemplul de mai sus, serviciul SSH va fi repornit în timp ce apoi se va opri serviciul SSSD. Daemonul httpd este pornit spre sfârșit. Deoarece Ansible este idempotent, orice serviciu care este deja pornit sau oprit nu va fi modificat, în timp ce repornirea schimbă întotdeauna starea serviciului. Nu uitați să verificați numele serviciului, deoarece diferite distribuții Linux folosesc alte nume chiar și pentru același serviciu, cum ar fi ssh și sshd.
Rezumat 👨💻
Ansible ușurează viața unui administrator de sistem, permițându-vă să executați sarcini repetate și consumatoare de timp într-un mod automat și reducând erorile umane și efortul. În plus, va permite stocarea datelor de configurare într-un depozit central de cod precum Git, permițând mai multor utilizatori să colaboreze și să revizuiască fiecare activitate.
Pentru a citi mai multe despre Ansible și setul său extins de module, consultați-l documentație.