7 napi rendszergazdai feladat automatizálható az Ansible segítségével

Az Ansible, a Red Hat ingyenes és nyílt forráskódú Python-alapú projektje, egy népszerű konfigurációkezelési és IT-automatizálási platform.

Többplatformos, és a legtöbb modern operációs rendszerrel működik, beleértve a Linuxot, a Windows-t és a Mac-et is. Támogatja a YAML-ben írt deklaratív nyelvet vagy a YAML Ain’t Markup Language-et a rendszerkonfiguráció leírására.

Az Ansible más modern konfigurációkezelési platformokkal együtt forradalmasította az IT-automatizálást és az iparági szabványokat. A konfigurációkezelő eszközök a DevOps eszközkészlet részévé váltak, és minden modern IT-folyamat életciklusának elválaszthatatlan részét képezik. Ez minden modern infrastrukturális környezetre alkalmazható, legyen az helyszíni, hibrid vagy felhőkörnyezetre épül. Nem csak a DevOps, hanem az Ansible is segíthet automatizálni a rendszeradminisztrátorok által végzett napi feladatokat.

Az Ansible használatának egyik előnye, hogy nem igényel ügynököt, és nem kell sok az induláshoz a célgéphez való SSH-hozzáférésen és a Python támogatott verzióján kívül, amely már alapértelmezés szerint telepítve van a legtöbb modern operációs rendszeren. Ezenkívül, mivel ez egy könnyű eszköz, telepíthető és használható az innovatív rendszerek örökségével együtt.

Az Ansible felhasználási területei

Hangszerelés

Az Ansible egy választott eszköz a különféle rendszeradminisztrációs és telepítési feladatok végrehajtásához. A Playbookok lehetővé teszik ugyanazon hangszerelési munkafolyamatok használatát a különböző projektekben, a YAML-alapú konfigurációs adatok pedig lehetővé teszik az infrastruktúra tárolását és verziószámát a Git tárhelyen vagy bármely támogatott verzióvezérlő platformon.

Alkalmazások telepítése

Legyen szó egyszerű néhány soros kódalkalmazásról vagy többrétegű, nagy súlyú telepítésről, az Ansible lehetővé teszi az alkalmazások végpontok közötti üzembe helyezési életciklusának automatizálását.

Biztonság és megfelelőség

Az Ansible abban is segíthet, hogy rendszerei a szervezet irányelveinek megfelelően biztonságosak legyenek, és megfeleljenek az iparági szabványoknak. Több ezer kiszolgálón futhat, auditot generálhat, és kijavíthatja a biztonsági réseket, így a rendszergazda teljes körűen felügyeli a környezetet.

  A hangerő elnémítása az iPhone hátoldalának megérintésével

Nézzünk meg néhány gyakori Sysadmin Tasks-t, amelyet az Ansible segítségével automatizálhat.

Fájlok másolása helyi vagy távoli rendszerről

Rendszeradminisztrátorként gyakran másol fájlokat egyik könyvtárból a másikba. A konfigurációs fájlokat gyakran távoli szerverekre kell másolni, vagy néha át kell helyeznünk a fájlokat egyik távoli helyről a másikra.

Az Ansible copy modul segítségével ezeket a feladatokat egy játékfüzetben végezheti el.

A rendszergazdák rutinfeladata, hogy ismerje a felügyelt kiszolgálók állapotát, és előre meghatározott műveleteket hajtson végre a szervezet házirendjei szerint. Az egyik ilyen feladat a szerver üzemidejének ismerete. Az Ansible segítségével egyszerűen lekérhetjük az üzemidő értékeket, és együtt nyomtathatjuk azokat. Az alábbiakban egy példa látható az ntp konfiguráció helyiről távoli szerverre másolására másoló modul segítségével:

---
- 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

További cron-feladatok konfigurálása

Az ütemezett feladatok beállítása a rutinfeladatok végrehajtásához bármely kiszolgáló kezelésének része. Automatikusan ütemezheti az automatikus biztonsági mentéseket, javításokat, auditálásokat stb. a nap vagy a hónap bizonyos időszakaiban, és hagyja a produktív időt a használatra.

A cron az egyik ilyen eszköz a Linuxban, amely támogatja az ütemezést, és az Ansible segíthet ezeknek a feladatoknak a hozzáadásában vagy módosításában. Példaként az alábbi útmutató bemutatja, hogyan állíthat be egy rsync-feladatot rootként néhány vagy az összes kiszolgálón az Ansible segítségével.

---
- 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"

Lemezek és fájlrendszerek kezelése

Az Ansible használható lemezek, partícióelrendezések, fájlrendszerek és csatolások kezelésére, beleértve az /etc/fstab fájlt Linux szervereken. Különböző Ansible modulok teszik ezt lehetővé. Íme egy példa, hogy létrehoz egy partíciót egy 100 GB-os lemezen, ext4 fájlrendszerrel formázza, létrehoz egy új könyvtárat a partíció csatlakoztatásához, és végül felcsatolja egy adott könyvtárba. Egy bejegyzés az /etc/fstab fájlban is létrejön ideiglenes vagy állandó csatolással, a modul beállításaitól függően.

---
- 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

Szervernaplók gyűjtése

A naplók kényelmes helyen való vezetése néha elengedhetetlen a biztonság, az ellenőrzés és az elemzés szempontjából. Az Ansible lehetővé teszi a naplók gyűjtését a vállalati környezet különböző kiszolgálóiról, és könnyen a megadott helyen tartja azokat. Íme a játékkönyv ennek eléréséhez:

---
- 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 }}"

Telepítse vagy távolítsa el a csomagokat és szoftvereket

A csomagokat gyakran felhasználói kérésre vagy a kezdeti kiszolgálófelépítés részeként kell telepíteni. Előfordulhat, hogy bizonyos csomagokat is el kell távolítanunk, amelyekre már nincs szükség, vagy amelyekre kritikus hibák vannak stb.. Az Ansible lehetővé teszi a csomagok egyszerű telepítését vagy eltávolítását anélkül, hogy minden kiszolgálóra kell mennie, és kézi parancsokat kellene futtatnia. Íme egy példa, amely bemutatja egy-egy csomag telepítését és eltávolítását Ubuntu és RHEL/CentOS alapú Linux-kiszolgálókhoz.

---
- 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

Felhasználók kezelése

A felhasználók és csoportok alkotják azt az alapstruktúrát, amely körül a Unix/Linux alapú rendszerek kezelik a hozzáférést és az engedélyeket. Egy nagy szervezetben a felhasználók és csoportok kezelése nagy kihívást jelenthet a környezetet támogató automatizálás ellenére.

  Az SSH telepítése Linuxra és hasznos parancsok

Az Ansible segítségével a rendszergazdának kiváló eszköze van a felhasználók és csoportok létrehozására, módosítására és törlésére, az operációs rendszer által támogatott összes lehetőséggel.

Íme egy egyszerű példa, amely bemutatja a felhasználók és csoportok létrehozását és törlését az Ansible segítségével. A játékkönyv lefutása után a célszervereken A és B csoport jön létre adott GID-ekkel, míg a user1 eltávolításra kerül, ha van. Egy shell nélküli új felhasználó user2-ként jön létre, adott UID-vel, hozzárendelt csoportokkal és zárolt jelszóval.

---
- 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

Szolgáltatások kezelése

A szolgáltatások olyan folyamatdémonok, amelyek a háttérben futnak, és olyan szolgáltatásokat szolgálnak ki, mint például az SSH-kapcsolatot biztosító sshd stb. Az Ansible segítségével kezelheti a rendszer- és felhasználói szolgáltatásokat, például elindíthatja, leállíthatja és újraindíthatja. Íme egy játékkönyv minta ennek bemutatására:

---
- 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

A fenti példában az SSH szolgáltatás újraindul, miközben leállítja az SSSD szolgáltatást. A httpd démon a vége felé indul. Mivel az Ansible idempotens, a már elindított vagy leállított szolgáltatások nem módosulnak, míg az újraindítás mindig megváltoztatja a szolgáltatás állapotát. Ne felejtse el ellenőrizni a szolgáltatás nevét, mivel a különböző Linux-disztribúciók más neveket használnak még ugyanahhoz a szolgáltatáshoz is, mint például az ssh és az sshd.

  Fitneszadatok szinkronizálása a Samsung Health szolgáltatásból a Google Fittel

Összefoglaló 👨‍💻

Az Ansible megkönnyíti a rendszergazdák életét azáltal, hogy lehetővé teszi az ismétlődő és időigényes feladatok automatizált végrehajtását, és csökkenti az emberi hibákat és erőfeszítéseket. Ezenkívül lehetővé teszi a konfigurációs adatok tárolását egy központi kódtárban, például a Gitben, lehetővé téve több felhasználó számára az együttműködést és az egyes tevékenységek áttekintését.

Ha többet szeretne megtudni az Ansible-ről és annak kiterjedt modulkészletéről, tekintse meg annak dokumentáció.