7 sarcini zilnice de administrator de sistem de automatizat cu Ansible

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.

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.

  De ce ar trebui să vă încărcați telefonul în afara camerei dvs

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.

  Cum să adăugați un card cadou la Amazon și ce să faceți dacă nu îl puteți valorifica

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.

  Top 9 cele mai bune trackere GPS

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.