Wéi benotzen Ansible Playbooks fir komplex Aufgaben op Multiple Remote Serveren ze automatiséieren - Deel 2


Am viregten Artikel vun dëser Ansible Serie hu mir erkläert datt Ansible en Agent-manner Tool ass dat Iech erlaabt séier an effizient verschidde Maschinnen ze managen (och bekannt als Noden - an och Deployementer un hinnen auszeféieren) vun engem eenzege System.

Nodeems Dir d'Software an der Controllermaschinn installéiert hutt, d'Schlësselen fir Passwuertlos Login erstallt an se op d'Knäppchen kopéiert, ass et Zäit ze léieren wéi een de Prozess vun der Gestioun vun esou Fernsystemer mat Ansible optiméiert.

Während dësem Artikel, wéi och den nächsten, wäerte mir déi folgend Testëmfeld benotzen. All Hosten sinn CentOS 7 Këschte:

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

Zousätzlech, notéiert w.e.g. datt béid Noden an der Webserver Sektioun vun der lokaler /etc/ansible/hosts Datei dobäigesat goufen:

Dat gesot, loosst eis mam Thema unzefänken.

Aféierung Ansible Playbooks

Wéi am virege Guide beschriwwen, kënnt Dir den zoustännegen Utility benotze fir Kommandoen an Fernknäppchen ze lafen wéi follegt:

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

Am Beispill hei uewen hu mir hostnamectl --static op Node1 an Node2 lafen. Et dauert net laang fir een ze realiséieren datt dës Method fir Aufgaben op Ferncomputer ze lafen funktionnéiert gutt fir kuerz Kommandoen awer ka séier belaaschtend oder messy ginn fir méi komplex Aufgaben déi weider gutt strukturéiert Konfiguratiounsparameter oder Interaktioune mat anere Servicer erfuerderen

Zum Beispill d'Konfiguratioun an d'Konfiguratioun vu WordPress op verschidde Hosten - déi mir am nächsten Artikel vun dëser Serie ofdecken). Dëst ass wou Playbooks an d'Szen kommen.

Einfach gesot, Playbooks sinn einfach Textdateien, déi am YAML Format geschriwwe sinn, an enthalen eng Lëscht mat Elementer mat engem oder méi Schlëssel-/Wäertpairen (och bekannt als Hash oder e Wörterbuch).

Bannen an all Playbook fannt Dir een oder méi Gruppe vu Hosten (all eenzel vun dëse Gruppen gëtt och e Spill genannt) wou déi gewënscht Aufgaben ausgefouert ginn.

E Beispill aus den offiziellen Dokumenter hëlleft eis ze illustréieren:

1. Hosten: Dëst ass eng Lëscht vu Maschinnen (wéi pro /etc/ansible/hosts) wou déi folgend Aufgaben ausgefouert ginn.

2. remote_user: Remote Kont deen benotzt gëtt fir d'Aufgaben auszeféieren.

3. vars: Variablen benotzt fir d'Behuele vum Fernsystem (en) z'änneren.

4. Aufgaben sinn an Uerdnung ausgeführt, eent op enger Zäit, géint all Maschinnen datt Gäscht Match. Bannent engem Spill kréien all Hosten déiselwecht Taskdirektiven.

Wann Dir eng aner Rei vun assoziéierten Aufgaben fir e spezifesche Host muss ausféieren, erstellt en anert Spill am aktuellen Playbook (an anere Wierder, den Zweck vun engem Spill ass eng spezifesch Auswiel vun Hosten op gutt definéiert Aufgaben ze mapen).

An deem Fall, fänkt en neit Spill un andeems Dir d'Host Direktiv um ënnen bäidréit a fänkt un:

---
- 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. Handler sinn Aktiounen déi um Enn vun der Aufgaben Sektioun an all Spill ausgeléist ginn, a meeschtens benotzt gi fir Servicer nei ze starten oder Neistarten an de Fernsystemer auszeléisen.

# mkdir /etc/ansible/playbooks

An e Fichier mam Numm apache.yml dobannen mat de folgenden Inhalter:

---
- 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

Zweetens, erstellt e Verzeichnis/static_files:

# mkdir /static_files

wou Dir déi personaliséiert index.html Datei späichert:

<!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>

Dat gesot, elo ass et Zäit dëst Spillbuch ze benotzen fir déi virdru genannt Aufgaben auszeféieren. Dir wäert bemierken datt Ansible all Aufgab vum Host duerchgoe wäert, ee gläichzäiteg, a wäert iwwer de Status vun esou Aufgaben berichten:

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

Loosst eis elo kucken wat geschitt wa mir e Browser opmaachen an et op 192.168.0.29 an 192.168.0.30 weisen:

Loosst eis e Schrëtt méi wäit goen a manuell Apache op Node1 an Node2 stoppen an deaktivéieren:

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

Da laaft nach eng Kéier,

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

Dës Kéier mellt d'Aufgab datt den Apache Webserver op all Host gestart an aktivéiert gouf:

Betruecht w.e.g. dat uewe genannte Beispill als Abléck vun der Kraaft vun Ansible. Och wann dës relativ einfach Aufgaben sinn wann se op enger klenger Zuel vu Serveren ausgeführt ginn, kann et ganz langweileg an Zäitopwänneg ginn wann Dir datselwecht a verschiddene (vläicht Honnerte) Maschinnen maache musst.

Resumé

An dësem Artikel hu mir beschriwwe wéi Dir Kommandoen ausféiert a komplex Aufgaben op verschiddene Fernhoster gläichzäiteg mat Ansible ausféiert. De GitHub Repository bitt vill Beispiller a Guiden iwwer wéi Dir Ansible benotzt fir bal all virstellbar Aufgab z'erreechen.

Wéi Dir ufänkt ze léieren wéi Aufgaben op Remote Linux Hosten mat Ansible automatiséiert ginn, wëlle mir Är Gedanken héieren. Froen, Kommentaren, a Virschléi sinn och ëmmer wëllkomm, also fillt Iech gratis eis ze kontaktéieren andeems Dir de Formulaire hei drënner benotzt.