Kuidas kasutada mitmetes kaugserverites keerukate ülesannete automatiseerimiseks anonüümseid raamatuid - 2. osa


Selle Ansible seeria eelmises artiklis selgitasime, et Ansible on agentideta tööriist, mis võimaldab teil kiiresti ja tõhusalt hallata mitut masinat (tuntud ka kui sõlmed - ja teostada neile ka juurutusi) ühest süsteemist.

Pärast tarkvara installimist kontrollerimasinasse, paroolita sisselogimiseks võtmete loomist ja nende sõlmedesse kopeerimist on aeg õppida, kuidas optimeerida selliste kaugsüsteemide haldamise protsessi Ansible abil.

Selles artiklis ja ka järgmises artiklis kasutame järgmist testikeskkonda. Kõik hostid on CentOS 7 kastid:

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

Lisaks pange tähele, et mõlemad sõlmed on lisatud kohaliku/etc/ansible/hosts faili jaotisse Webservers:

Sellest hoolimata alustame käsitletava teemaga.

Tutvustame Ansible Playbooks

Nagu eelmises juhendis kirjeldatud, saate kaugsõlmedes käskude käivitamiseks lubatavat utiliiti järgmiselt:

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

Ülaltoodud näites käitasime sõlmedel1 ja sõlmedel hostnamectl --static . Ei pea kaua aega mõistma, et see kaugarvutites toimuv ülesannete käitamise meetod sobib lühikeste käskude korral hästi, kuid võib keerulisemate ülesannete jaoks, mis nõuavad täiendavaid hästi struktureeritud konfiguratsiooniparameetreid või suhtlemist teiste teenustega, kiiresti koormavaks või segaseks.

Näiteks WordPressi seadistamine ja konfigureerimine mitmel hostil - mida käsitleme selle seeria järgmises artiklis). Siin ilmuvad Playbooks.

Lihtsamalt öeldes on Playbooks lihtsa tekstiga failid, mis on kirjutatud YAML-vormingus ja sisaldavad loendit, millel on üks või mitu võtme- ja väärtuspaari (tuntud ka kui "räsi" või "sõnastik").

Iga Playbooki seest leiate ühe või mitu hostide rühma (kõiki neid rühmi nimetatakse ka näidendiks), kus soovitud ülesanded tuleb täita.

Ametlike dokumentide näide aitab meil illustreerida:

1. hostid: see on loend masinatest (vastavalt/etc/ansible/hosts), kus täidetakse järgmisi ülesandeid.

2. remote_user: kaugkonto, mida kasutatakse ülesannete täitmiseks.

3. muutujad: muutujad, mida kasutatakse kaugsüsteemi (de) käitumise muutmiseks.

4. ülesanded täidetakse järjekorras ükshaaval kõigi masinatega, mis vastavad hostidele. Näidendi raames saavad kõik saatejuhid samad ülesandedirektiivid.

Kui peate konkreetse hosti jaoks täitma erineva seonduvate ülesannete komplekti, looge praeguses Playbookis veel üks näidend (teisisõnu, etenduse eesmärk on kaardistada konkreetne hostide valik täpselt määratletud ülesannetega).

Sel juhul alustage uut näidendit, lisades allservas hostide direktiivi ja alustades otsast peale:

---
- 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. käitlejad on toimingud, mis käivitatakse igas mängus ülesannete jaotise lõpus ja mida kasutatakse enamasti teenuste taaskäivitamiseks või kaugsüsteemides taaskäivitamiseks.

# mkdir /etc/ansible/playbooks

Ja fail nimega apache.yml seal sees järgmise sisuga:

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

Teiseks looge kataloog/static_files:

# mkdir /static_files

kuhu salvestate kohandatud faili index.html:

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

See tähendab, et nüüd on aeg seda mänguraamatut kasutada varem mainitud ülesannete täitmiseks. Pange tähele, et Ansible läbib iga ülesande hosti kaupa ükshaaval ja annab aru selliste ülesannete oleku kohta:

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

Vaatame nüüd, mis juhtub, kui avame brauseri ja suuname selle punktidele 192.168.0.29 ja 192.168.0.30:

Läheme veel ühe sammu edasi ning peatame ja keelame Apache'i käsitsi sõlmedes 1 ja 2:

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

Siis jookse uuesti,

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

Seekord teatab ülesanne, et Apache veebiserver käivitati ja lubati igas hostis:

Palun vaadake ülaltoodud näidet kui pilguheit Ansible'i võimule. Ehkki need on väikesel arvul serveritel tehtavad suhteliselt lihtsad ülesanded, võib see muutuda väga tüütuks ja aeganõudvaks, kui peate sama tegema mitmes (võib-olla sadas) masinas.

Kokkuvõte

Selles artiklis oleme kirjeldanud, kuidas käivitada käske ja täita keerulisi ülesandeid samaaegselt mitmel kaughostil, kasutades Ansible'i. GitHubi hoidlas on palju näiteid ja juhendeid selle kohta, kuidas kasutada Anniidi peaaegu kõigi ettekujutatavate ülesannete saavutamiseks.

Kui hakkate Ansible abil õppima, kuidas Linuxi kaughostides ülesandeid automatiseerida, tahaksime kuulda teie mõtteid. Küsimused, kommentaarid ja ettepanekud on samuti alati teretulnud, nii et võtke meiega igal ajal allolevat vormi kasutades ühendust.