Weboldal keresés

Az Ansible Playbooks használata összetett feladatok automatizálására több távoli szerveren – 2. rész


Az Ansible sorozat előző cikkében kifejtettük, hogy az Ansible egy ügynök nélküli eszköz, amely lehetővé teszi több gép (más néven csomópontok) gyors és hatékony kezelését egyetlen rendszerből.

Miután telepítette a szoftvert a vezérlőgépre, létrehozta a jelszó nélküli bejelentkezés kulcsait, és átmásolta azokat a csomópontokba, ideje megtanulnia, hogyan optimalizálhatja az ilyen távoli rendszerek kezelésének folyamatát az Ansible segítségével.

Ebben a cikkben és a következőben is a következő tesztkörnyezetet fogjuk használni. Minden gazdagép CentOS 7 doboz:


Controller machine (where Ansible is installed): 192.168.0.19
Node1: 192.168.0.29
Node2: 192.168.0.30

Ezenkívül vegye figyelembe, hogy mindkét csomópont hozzá lett adva a helyi /etc/ansible/hosts fájl webszerver részéhez:

Ennek ellenére kezdjük a témával.

Az Ansible Playbooks bemutatása

Az előző útmutatóban leírtak szerint az ansible segédprogrammal a következőképpen futtathat parancsokat távoli csomópontokban:


ansible -a "/bin/hostnamectl --static" webservers

A fenti példában a hostnamectl --static parancsot futtattuk a node1 és node2 pontokon. Nem tart sokáig, amíg az ember rájön, hogy a feladatok távoli számítógépeken történő futtatásának ez a módszere jól működik rövid parancsok esetén, de gyorsan megterhelővé vagy zavaróvá válhat bonyolultabb feladatoknál, amelyek további jól strukturált konfigurációs paramétereket vagy más szolgáltatásokkal való interakciót igényelnek.

Például a WordPress beállítása és konfigurálása több gazdagépen – erről a sorozat következő cikkében fogunk beszélni). Itt lépnek színre a Playbookok.

Egyszerűen fogalmazva, a Playbooks egyszerű szöveges fájlok YAML formátumban írva, és egy listát tartalmaznak egy vagy több kulcs/érték párral (más néven " >hash ” vagy egy „szótár ”).

Minden játékfüzetben talál egy vagy több házigazdát (a csoportok mindegyikét játéknak is nevezik), ahol a kívánt feladatokat el kell végezni.

Egy példa a hivatalos dokumentumokból segít a szemléltetésben:

1. gazdagépek: ez azon gépek listája (az /etc/ansible/hosts szerint), amelyeken a következő feladatokat hajtják végre.

2. távoli_felhasználó: távoli fiók, amelyet a feladatok végrehajtására használunk.

3. vars: a távoli rendszer(ek) viselkedésének módosítására használt változók.

4. a feladatokat sorrendben, egyenként hajtják végre minden olyan gépen, amely megfelel a gazdagépeknek. Egy darabon belül minden házigazda ugyanazt a feladat utasítást kapja.

Ha egy másik társított feladatsort kell végrehajtania egy adott gazdagéphez, hozzon létre egy másik játékot az aktuális Playbook-ban (más szóval, a játék célja, hogy egy adott gazdagépet jól leképezzen. -meghatározott feladatok).

Ebben az esetben kezdjen el egy új játékot úgy, hogy az aljára adja hozzá a hosts direktívát, és kezdje elölről:


---
- hosts: webservers
  remote_user: root
  vars:
    variable1: value1
    variable2: value2
  remote_user: root
  tasks:
  - name: description for task1
    task1: parameter1=value_for_parameter1 parameter2=value_for_parameter2
  - name: description for task1
    task2: parameter1=value_for_parameter1 parameter2=value_for_parameter2
  handlers:
    - name: description for handler 1
      service: name=name_of_service state=service_status
- hosts: dbservers
  remote_user: root
  vars:
    variable1: value1
    variable2: value2
…

5. A kezelők olyan műveletek, amelyek minden játékban a feladatok szakasz végén indulnak el, és többnyire szolgáltatások újraindítására vagy újraindítások indítására szolgálnak a távoli rendszerekben.


mkdir /etc/ansible/playbooks

És benne egy apache.yml nevű fájl a következő tartalommal:


---
- hosts: webservers
  vars:
    http_port: 80
    max_clients: 200
  remote_user: root
  tasks:
  - name: ensure apache is at the latest version
    yum: pkg=httpd state=latest
  - name: replace default index.html file
    copy: src=/static_files/index.html dest=/var/www/html/ mode=0644
    notify:
    - restart apache
  - name: ensure apache is running (and enable it at boot)
    service: name=httpd state=started enabled=yes
  handlers:
    - name: restart apache
      service: name=httpd state=restarted

Másodszor, hozzon létre egy /static_files könyvtárat:


mkdir /static_files

ahol tárolni fogja az egyéni index.html fájlt:


<!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="utf-8"/>
 </script>
 </head>
 <body>
 <h1>Apache was started in this host via Ansible</h1><br>
<h2>Brought to you by linux-console.net</h2>
 </body>
 </html>

Ennek ellenére itt az ideje, hogy ezt a játékkönyvet használja a korábban említett feladatok elvégzésére. Megjegyzendő, hogy az Ansible minden feladaton gazdagépenként, egyenként megy keresztül, és jelentést készít az ilyen feladatok állapotáról:


ansible-playbook /etc/ansible/playbooks/apache.yml

Most pedig nézzük meg, mi történik, ha megnyitunk egy böngészőt, és a 192.168.0.29 és 192.168.0.30 címre irányítjuk:

Lépjünk egy lépéssel tovább, és manuálisan állítsuk le és tiltsuk le az Apache-t a node1 és node2 oldalon:


systemctl stop httpd
systemctl disable httpd
systemctl is-active httpd
systemctl is-enabled httpd

Aztán fuss újra,


ansible-playbook /etc/ansible/playbooks/apache.yml

Ezúttal a feladat azt jelenti, hogy az Apache webszerver elindult és engedélyezve lett minden gazdagépen:

Kérjük, tekintse a fenti példát az Ansible erejének egy pillantásának. Bár ezek viszonylag egyszerű feladatok, ha kevés szerveren hajtják végre, nagyon fárasztó és időigényes lehet, ha több (talán több száz) gépen kell ugyanezt megtennie.

Összegzés

Ebben a cikkben leírtuk, hogyan futtassunk parancsokat és hajtsunk végre összetett feladatokat több távoli gazdagépen egyidejűleg az Ansible használatával. A hivatalos dokumentáció és a GitHub adattár sok példát és útmutatót tartalmaz arra vonatkozóan, hogyan használhatjuk az Ansible-t szinte bármilyen elképzelhető feladat elvégzésére.

Amint elkezdi megtanulni, hogyan automatizálhatja a feladatokat távoli Linux-gazdagépeken az Ansible segítségével, szeretnénk hallani az Ön gondolatait. Kérdéseit, észrevételeit és javaslatait is szívesen fogadjuk, ezért bármikor forduljon hozzánk bizalommal az alábbi űrlap segítségével.