Az Ansible telepítése és tesztelése Linuxon

Az Ansible egy Python nyelven írt, széles körben használt konfigurációkezelő eszköz, amely segít egy vagy több gép egyidejű konfigurálásában. Az Ansible az alábbi feladatok elvégzésére használható

  • Egy vagy több csomópont nulláról történő konfigurálása
  • Elhelyezések
  • Konfiguráció módosítások
  • Patchelés
  • Szolgáltatáskezelés
  • és még sok más

Az Ansible-t az egyszerűsége miatt széles körben használják. Az Ansible kódja is YAML nyelven íródik, nincs szükség egy távoli gépre telepítendő ügynökre. Az Ansible a 22-es portot (SSH) használja a távoli géphez való csatlakozáshoz és a szükséges változtatások elvégzéséhez.

Minden olyan gép, amely képes csatlakozni a távoli géphez a 22-es porton, vezérlő csomóponttá válhat. A vezérlő csomópont az, ahová az Ansible-t telepíthetjük, a menedzselt csomópont pedig a vezérlő csomópontoktól kapja a menedzselést.

Nézzük meg az Ansible telepítését a vezérlő csomópontra.

Az Ansible telepítése CentOS 7 rendszeren:

Mivel a Python az egyetlen előfeltétele az Ansible telepítésének, telepítsük a Pythont az alábbi parancs végrehajtásával.

$sudo yum install python3 -y

Az Ansible telepítéséhez a CentOS 7 rendszeren először győződjünk meg arról, hogy a CentOS 7 EPEL tároló telepítve van. Futtassa az alábbi parancsot az epel tároló telepítéséhez.

$sudo yum install epel-release

Frissítse a rendszercsomag-indexet az alábbi update parancs végrehajtásával.

$sudo yum update -y

Mihelyt az adattár telepítve van, telepítse az Ansible-t a yum csomagkezelővel. Az Ansible telepítéséhez hajtsa végre az alábbi parancsot.

$sudo yum install ansible -y

Ellenőrizze, hogy az Ansible megfelelően telepítve van-e és annak verziója.

$ansible -v

Az Ansible telepítése CentOS 8-ra:

Nézzük meg a telepítés lépéseit CentOS 8 esetén. Telepítsük a pythont CentOS 8-ra.

$sudo dnf install python3

Amikor a python telepítve van, telepítsük az EPEL repót az alábbi parancs végrehajtásával.

$sudo dnf install epel-release -y

Frissítsük a rendszercsomag-indexet az alábbi update parancs végrehajtásával.

$sudo dnf update -y

Most készen állunk az Ansible telepítésére. Futtassuk az alábbi parancsot az Ansible telepítéséhez.

$sudo dnf install ansible -y

Ellenőrizzük, hogy az Ansible megfelelően települt-e és annak verziója.

$ansible -v

Az Ansible telepítése Ubuntun:

A legtöbb Linux disztribúcióban manapság a Python alapértelmezett csomag. Ha nincs telepítve a python, futtassa az alábbi parancsot a python csomag telepítéséhez.

$sudo apt-get install python3

Az Ansible telepítéséhez Ubuntuban először telepítsük a tárolót az alábbi parancs végrehajtásával.

$sudo apt-add-repository ppa:ansible/ansible

Frissítsük a rendszercsomag-indexet az alábbi update parancs végrehajtásával.

$sudo apt-get update -y

Most telepítsük az Ansible-t.

$sudo apt-get install -y ansible

Ellenőrizzük, hogy az Ansible megfelelően települt-e és annak verziója.

$ansible -v

Az Ansible telepítése Python PIP segítségével CentOS, Debian és Ubuntu rendszereken:

Függetlenül attól, hogy milyen operációs rendszert használ, az Ansible-t a python csomagtelepítővel telepítheti. Végezzük el az alábbi parancsot a python3-pip telepítéséhez.

CentOS 7 és az alattiak esetében:

$sudo yum install python3 python3-pip -y

CentOS 8 esetében:

$sudo dnf install python3 python3-pip -y

Ubuntu és Debian esetében:

$sudo apt-get install python3 python3-pip

Mivel a python és a pip telepítve van, bármelyik operációs rendszeren végezzük el az alábbi parancsot az Ansible telepítéséhez.

$sudo pip3 install ansible

Ellenőrizzük, hogy az Ansible megfelelően telepítve van-e és annak verziója.

$ansible -v

Az Ansible vezérlő hosztjainak beállítása:

Először a “hosts” fájlt kell beállítanunk, mielőtt elkezdhetnénk kommunikálni a többi csomópontunkkal. Ez a fájl tartalmazza a kezelt csomópontok összes IP-jét vagy hostnevét.

Megjegyzés: Nem mindig szükséges hosts fájlt használni a kezelt csomópontokhoz való csatlakozáshoz. De akkor minden alkalommal, minden parancs végrehajtásakor a kezelt csomópontok kiszolgálójának IP-jét vagy hostnevét kell használnunk.

Hozzuk létre a fájlt (ha még nincs meg) root jogosultságokkal az alábbi parancs végrehajtásával:

$sudo touch /etc/ansible/hosts

A fájlba való írás előtt nézzük meg és értsük meg a hosts fájl mintáját:


alias ansible_ssh_host=your_node_server_ip

A hosts fájlnak a fenti szintaxist kell követnie. Nézzük meg az egyes paramétereket.

: Ez a paraméter egy csoportot hoz létre. A group_name paraméter alatti összes kezelt csomópont IP-címe vagy hosztneve ugyanabba a csoportba fog tartozni. Ha például több webkiszolgáló van az infrastruktúránkban, akkor a kezelt csomópont összes IP-címét vagy hostnevét ide adhatjuk.

alias: Ezzel a paraméterrel a kezelt csomópont szerverének egy alias nevet adhatunk a kezelt csomópont szerverének azonosítására. Ha például több webkiszolgáló van az infrastruktúránkban, megadhatjuk a host1, host2, host3 neveket aliasnak. Az alias megadásának fő előnye, hogy amikor az Ansible parancsot fogjuk végrehajtani egyetlen szerver konfigurációjának módosítására, akkor egy alias segítségével azonosíthatjuk és elvégezhetjük a kívánt feladatot a szerveren.

ansible_ssh_host=your_node_server_ip: Ez a paraméter egy kezelt csomópont IP-címére vagy hostnevére irányítja az aliast.

A CentOS 8-at fogjuk használni irányított csomópontként az Ansible segítségével. Mint fentebb említettük, az Ansible a távoli állomás 22-es portját használja a csatlakozáshoz.

Feltételezzük, hogy a CentOS irányított csomópontunk szerverének IP-címei a 192.168.0.2, 192.168.0.3 és 192.168.0.4.

Hogy az Ansible vezérlő csomópont kommunikálhasson az irányított csomópontokkal, meg kell erősítenünk, hogy az irányított csomópontok elérhetőek a 22-es porton, amely egy SSH port. Végezze el az alábbi parancsot, hogy egyenként megerősítse a kapcsolatot mindhárom menedzselt csomóponton a vezérlőből.

$ssh [email protected]
$ssh [email protected]
$ssh [email protected]

A parancs az összes csomópont root felhasználójának jelszavát kéri. Az Ansible nagyon zökkenőmentesen működik, ha az Ansible vezérlő és a kezelt csomópontok között jelszó nélküli hitelesítés van beállítva. Az Ansible parancs különböző paramétereivel a jelszavas hitelesítés is működhet.

Mivel konfiguráltuk az ssh kapcsolatot az Ansible vezérlő és a menedzselt csomópontok között, konfiguráljuk a hosts fájlt az összes menedzselt csomóponthoz való csatlakozáshoz. Mint már említettük, több csomópont szerver aliasát is hozzáadhatjuk egy csoporthoz. Ebben az esetben adjuk hozzá mindhárom csomópontot, és rendeljünk hozzá egy-egy aliast host1, host2 és host3 néven. A hosts fájlunknak az összes kezelt csomópont adatainak hozzáadása után az alábbiak szerint kell kinéznie. Végezze el az alábbi parancsot a korábban létrehozott hosts fájl szerkesztéséhez.

Nyissuk meg a fájlt root jogosultságokkal az alábbi parancs végrehajtásával:

$sudo vi /etc/ansible/hosts

Adjuk hozzá az alább említett konfigurációt a hosts fájlhoz.


host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4

Itt az összes kezelt csomópont IP-jét és aliasát hozzáadtuk a node_servers nevű csoporthoz.

Próbáljunk most csatlakozni a menedzselt csomópontokhoz az Ansible vezérlőből.

$ansible -m ping node_servers

A fenti parancs a ping modult használja a “node_servers” csoporthoz való csatlakozáshoz, amelyet fentebb a hosts fájlban definiáltunk.

Elképzelhető, hogy különböző okokból hibaüzenetekkel találkozunk.

  1. Az Ansible alapértelmezés szerint az aktuális felhasználónévvel próbál csatlakozni a kezelt csomóponthoz, ha nem adtunk meg egyet sem. Ha ez a felhasználó nem létezik a csomópont kiszolgálóján, akkor az alábbi hibaüzenetet kapja.
  2. Ha a 22-es ssh port nem nyitott a kapcsolathoz a kezelt csomópontokon. (Mint már említettük, az Ansible az ssh porton csatlakozik)
  3. Ha a hosts fájlban szereplő IP nem helyes.

Ha a fenti feltételek bármelyike nem teljesül, az alábbi hibaüzenetet kapja.

host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host2 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host3 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}

Kifejezetten azt mondjuk az Ansible-nak, hogy a “node_servers” csoportban lévő kezelt csomópontokhoz a james felhasználóval kell csatlakoznia. Hozzuk létre a group_vars könyvtárat az alább említett módon.

$sudo mkdir /etc/ansible/group_vars

Az ebben a könyvtárban található fájlok kifejezetten olyan változók konfigurálására szolgálnak, amelyeket az Ansible playbookjainkban használhatunk.

Hozzunk létre egy változófájlt a beállításainkhoz az alábbi parancs végrehajtásával:

$sudo vim /etc/ansible/group_vars/node_servers.yml

Adjuk hozzá az alábbi kódot a fájlhoz:

---
ansible_ssh_user: james

AYML fájl mindig “—” betűvel kezdődik az első sorban. Mentsük el és zárjuk be ezt a fájlt, ha végeztünk. Mostantól az Ansible mindig a james felhasználót fogja használni a node_servers csoporthoz, függetlenül attól, hogy éppen milyen felhasználóval futtatunk egy parancsot.

A menedzselt csomópontok kapcsolatának ellenőrzése:

Most, hogy beállítottuk a hosztjainkat és elegendő konfigurációs részletet kaptunk ahhoz, hogy sikeresen csatlakozhassunk a menedzselt csomópontjainkhoz, kipróbálhatjuk ugyanazt a parancsot, amit korábban futtattunk.

$ansible -m ping servers 

Az Ansible ilyen kimenetet fog visszaadni:

host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}

host3 | SIKER => { “changed”: false, “ping”: “Ez egy alapvető teszt, amellyel megbizonyosodhatunk arról, hogy az Ansible rendelkezik-e kapcsolattal a kezelt csomópontokhoz.

Következtetés:

Nem szükséges CentOS operációs rendszert használni a menedzselt csomópontokhoz. Használhatja ugyanazt a tesztkonfigurációt, amit fentebb használtunk CentOS, RedHat, Ubuntu és bármely más Linux disztribúció esetén.

Hogyan telepítsük és teszteljük az Ansible-t Linuxon

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.