Ansible

Tóth Sándor <>
NIIF Intézet

Problémafelvetés
Az informatikai infrastruktúra általa nyújtott lehetőségeket egyre többen szeretnék kihasználni egy-egy intézményen belül. Ami egyfelől örvendetes, ugyanakkor az egyre sokrétűbb és egyre több szolgáltatáshoz egyre nagyobb és komplexebb infrastruktúrákat kell felépítenie és fenntartania az informatikát üzemeltető szakembereknek. Ennek a kihívásnak a kezelésére az egyik lehetséges megoldás a szolgáltatások indításának, illetve beállításainak automatizálása és egységesítése.
Ebben tud segíteni az Ansible. http://www.ansible.com

Mi az Ansible?
Az Ansible egy nyílt forrású (GPLv3), telepítő és konfiguráció menedzsment eszköz, amelyet Michael DeHaan írt 2012-ben. Azóta nagyon sokan csatlakoztak a fejlesztéséhez és jelenleg a github.com-on -, ahol publikálva van a program forráskódja - az első 5-ben van a python projektek között.
A fejlesztés sebességére jellemző, hogy kb. 2 havonta adnak ki új verziót és a kritikus hibákat leszámítva a régebbi verziókat nem is javítják, hanem csak az újabb verziókba teszik bele a hibajavításokat. Ezért is érdemes mindig a legújabb verziót használni.
Az Ansible python nyelven íródott program. Van egy konzervatívabb hozzáállással fejlesztett magja, amelyhez API-n keresztül kapcsolódik nagyon sok modul. Tulajdonképpen ezek a modulok valósítják meg azt az egyszerű kezelhetőséget, működést, ami miatt annyira népszerű az Ansible. A jelenlegi verzióban több mint 160 modul van.

Alapkövetelmények: Mire lesz szükségünk?
Az Ansible-nek nem csak a működése és használa egyszerű, hanem a program maga is egyszerű és kicsi. Az Ansible telepítéséhez valamilyen Linux/Unix operációs rendszerre van szükségünk, amire legalább a python 2.6-os verziója telepítve van. A menedzselni szándékozott gépeken is lenni kell egy Linux/Unix operációs rendszernek, amelyen szintén megvan a python 2.6-os verziója, illetve mindkét gépen lenni kell OpenSSH-nak.
Az Ansible nem klasszikus szerver-kliens architektúra, mivel a menedzselt eszközökre nem kell telepíteni semmilyen ügynök programot, illetve Ansible démonok sem fognak sehol futni. Az Ansible SSH-n keresztül kommunikál és csak addig "él", amíg a feladatot végrehajtja.

Playbook: Milyen egy jó forgatókönyv?
A menedzselt gépeken végrehajtandó feladatokat egy úgynevezett "Playbook"-ba lehet megírni. Ez a forgatókönyv YAML nyelven íródik, aminek pozitívuma, hogy emberi szemmel is jól olvasható (kis gyakorlás után).
A forgatókönyv hierarchikus felépítésű és a szereplők és a történet folyamata jól definiáltak, azaz egy jó Ansible forgatókönyv legfontosabb jellemzője, hogy akárhányszor is lejátszódik a végeredménye mindig ugyanaz lesz: idempotens.

Role: Kinek a szerepébe bújjak?
Az Ansible playbookban az egyes részfeladatokat "Role"-oknak nevezzük. Egy playbook állhat egyetlen role-ból is, de ha ezeket a role-okat jól megírjuk, akkor könnyen összehozható belőlük egy komplett előadás.
Az Ansible playbook használatához két induló szerep: "Bootstrap" és "Common role".