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:
- Az Ansible telepítése CentOS 8-ra:
- Az Ansible telepítése Ubuntun:
- Az Ansible telepítése Python PIP segítségével CentOS, Debian és Ubuntu rendszereken:
- Az Ansible vezérlő hosztjainak beállítása:
- A menedzselt csomópontok kapcsolatának ellenőrzése:
- 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:
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.
- 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.
- 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)
- 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.