Hvernig á að nota Ansible Playbooks til að gera flókin verkefni sjálfvirk á mörgum fjarþjónum - Part 2


Í fyrri grein þessarar Ansible seríu útskýrðum við að Ansible er umboðsmannalaust tól sem gerir þér kleift að stjórna mörgum vélum á fljótlegan og skilvirkan hátt (einnig þekkt sem hnútar - og framkvæma dreifingar á þær líka) úr einu kerfi.

Eftir að hugbúnaðurinn hefur verið settur upp í stýrivélinni, búið til lykla fyrir lykilorðslausa innskráningu og afritað þá á hnúta, er kominn tími til að læra hvernig á að fínstilla ferlið við að stjórna slíkum fjarkerfum með Ansible.

Í þessari grein, sem og þeirri næstu, munum við nota eftirfarandi prófunarumhverfi. Allir gestgjafar eru CentOS 7 kassar:

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

Að auki, vinsamlegast athugaðu að báðum hnútum hefur verið bætt við í vefþjónahlutanum í staðbundnu /etc/ansible/hosts skránni:

Sem sagt, við skulum byrja með efnið sem er fyrir hendi.

Við kynnum Ansible Playbooks

Eins og lýst er í fyrri handbókinni geturðu notað viðeigandi tól til að keyra skipanir í ytri hnútum sem hér segir:

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

Í dæminu hér að ofan keyrðum við hostnamectl --static á hnút1 og hnút2. Það tekur ekki langan tíma að átta sig á því að þessi aðferð við að keyra verkefni á fjartengdum tölvum virkar fínt fyrir stuttar skipanir en getur fljótt orðið íþyngjandi eða sóðalegur fyrir flóknari verkefni sem krefjast frekari vel uppbyggðra stillingabreyta eða samskipta við aðra þjónustu

Til dæmis að setja upp og stilla WordPress á mörgum gestgjöfum – sem við munum fjalla um í næstu grein í þessari röð). Þetta er þar sem Playbooks koma við sögu.

Einfaldlega sagt, Playbooks eru einfaldar textaskrár skrifaðar á YAML sniði og innihalda lista með hlutum með einu eða fleiri lykil/gildi pörum (einnig þekkt sem \hash\ eða \orðabók).

Inni í hverri leikbók er að finna einn eða fleiri hópa gestgjafa (hver og einn þessara hópa er einnig kallaður leikrit) þar sem á að framkvæma þau verkefni sem óskað er eftir.

Dæmi úr opinberu skjölunum mun hjálpa okkur að sýna:

1. vélar: þetta er listi yfir vélar (samkvæmt /etc/ansible/hosts) þar sem eftirfarandi verkefni verða framkvæmd.

2. remote_user: ytri reikningur sem verður notaður til að framkvæma verkefnin.

3. vars: breytur notaðar til að breyta hegðun ytra kerfisins/kerfa.

4. verkefni eru unnin í röð, eitt í einu, á móti öllum vélum sem passa við vélar. Innan leikrits munu allir gestgjafar fá sömu verkefnaleiðbeiningar.

Ef þú þarft að framkvæma annað sett af tengdum verkefnum fyrir tiltekinn gestgjafa skaltu búa til annað leikrit í núverandi leikbók (með öðrum orðum, tilgangur leikrits er að kortleggja ákveðið úrval gestgjafa yfir á vel skilgreind verkefni).

Í því tilviki, byrjaðu nýtt leikrit með því að bæta við gestgjafatilskipuninni neðst og byrja upp á nýtt:

---
- 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. meðhöndlarar eru aðgerðir sem eru ræstar í lok verkefnahlutans í hverju leikriti og eru aðallega notaðar til að endurræsa þjónustu eða koma af stað endurræsingu í fjarkerfum.

# mkdir /etc/ansible/playbooks

Og skrá sem heitir apache.yml þar inni með eftirfarandi innihaldi:

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

Í öðru lagi, búðu til möppu /static_files:

# mkdir /static_files

þar sem þú munt geyma sérsniðnu index.html skrána:

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

Sem sagt, nú er kominn tími til að nota þessa leikbók til að framkvæma verkefnin sem nefnd voru áðan. Þú munt taka eftir því að Ansible mun fara í gegnum hvert verkefni eftir gestgjafa, einum í einu, og mun tilkynna um stöðu slíkra verkefna:

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

Nú skulum við sjá hvað gerist þegar við opnum vafra og bendum honum á 192.168.0.29 og 192.168.0.30:

Við skulum ganga einu skrefi lengra og stöðva og slökkva á Apache handvirkt á hnút1 og hnút2:

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

Hlaupa svo aftur,

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

Að þessu sinni greinir verkefnið frá því að Apache vefþjónninn hafi verið ræstur og virkjaður á hverjum gestgjafa:

Vinsamlegast líttu á dæmið hér að ofan sem innsýn í kraft Ansible. Þó að þetta séu tiltölulega auðveld verkefni þegar þau eru framkvæmd á fáum netþjónum, getur það orðið mjög leiðinlegt og tímafrekt ef þú þarft að gera það sama í nokkrum (kannski hundruðum) véla.

Samantekt

Í þessari grein höfum við lýst því hvernig á að keyra skipanir og framkvæma flókin verkefni á nokkrum ytri vélum samtímis með því að nota Ansible. GitHub geymslan veitir mikið af dæmum og leiðbeiningum um hvernig á að nota Ansible til að ná næstum öllum hugsanlegum verkefnum.

Þegar þú byrjar að læra hvernig á að gera sjálfvirk verkefni á ytri Linux gestgjöfum með Ansible, viljum við heyra hugsanir þínar. Spurningar, athugasemdir og ábendingar eru líka alltaf vel þegnar, svo ekki hika við að hafa samband við okkur með því að nota formið hér að neðan hvenær sem er.