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.
Tartalomjegyzék
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.
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 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.
Ö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ó.