Jinsi ya Kutumia Vitabu vya kucheza vinavyofaa kugeuza Majukumu Complex kwenye Seva Nyingi za Mbali - Sehemu ya 2


Katika makala yaliyotangulia ya mfululizo huu wa Ansible, tulieleza kuwa Ansible ni zana isiyo na wakala ambayo hukuruhusu kudhibiti kwa haraka na kwa ufanisi mashine nyingi (pia hujulikana kama nodi - na kuzituma pia) kutoka kwa mfumo mmoja.

Baada ya kufunga programu kwenye mashine ya mtawala, kuunda funguo za kuingia bila nenosiri na kuziiga kwenye nodes, ni wakati wa kujifunza jinsi ya kuboresha mchakato wa kusimamia mifumo hiyo ya mbali kwa kutumia Ansible.

Katika makala hii yote, pamoja na inayofuata, tutatumia mazingira ya mtihani wafuatayo. Wapangishi wote ni CentOS 7 masanduku:

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

Kwa kuongezea, tafadhali kumbuka kuwa nodi zote mbili zimeongezwa katika sehemu ya seva za wavuti ya /etc/ansible/hosts faili ya ndani:

Hiyo ilisema, wacha tuanze na mada iliyopo.

Tunakuletea Vitabu vya Michezo Vinavyofaa

Kama ilivyoelezewa kwenye mwongozo uliopita, unaweza kutumia matumizi yanayofaa kutekeleza amri katika nodi za mbali kama ifuatavyo:

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

Katika mfano hapo juu, tuliendesha hostnamectl --static kwenye node1 na node2. Haichukui muda mrefu kwa mtu kutambua kwamba mbinu hii ya kufanya kazi kwenye kompyuta ya mbali inafanya kazi vizuri kwa amri fupi lakini inaweza haraka kuwa mzigo au fujo kwa kazi ngumu zaidi zinazohitaji vigezo zaidi vya usanidi au mwingiliano na huduma zingine.

Kwa mfano, kuanzisha na kusanidi WordPress kwenye majeshi mengi - ambayo tutashughulikia katika makala inayofuata ya mfululizo huu). Hapa ndipo Vitabu vya Google Play huonekana.

Kwa ufupi, Vitabu vya Google Play ni faili za maandishi wazi zilizoandikwa katika umbizo la YAML, na zina orodha iliyo na vipengee vyenye jozi moja au zaidi za ufunguo/thamani (pia hujulikana kama \heshi au \kamusi).

Ndani ya kila Kitabu cha kucheza utapata kikundi kimoja au zaidi cha wapangishaji (kila moja ya vikundi hivi pia huitwa igizo) ambapo kazi zinazohitajika zinapaswa kufanywa.

Mfano kutoka kwa hati rasmi utatusaidia kuelezea:

1. wapangishi: hii ni orodha ya mashine (kulingana na /etc/ansible/hosts) ambapo kazi zifuatazo zitafanywa.

2. remote_user: akaunti ya mbali ambayo itatumika kutekeleza majukumu.

3. vars: viambajengo vinavyotumika kurekebisha tabia ya mfumo wa mbali.

4. kazi zinatekelezwa kwa mpangilio, moja kwa wakati, dhidi ya mashine zote zinazolingana na wapangishi. Ndani ya mchezo, waandaji wote watapata maagizo ya kazi sawa.

Iwapo unahitaji kutekeleza seti tofauti ya kazi zinazohusiana kwa mwenyeji mahususi, tengeneza mchezo mwingine katika Playbook ya sasa (kwa maneno mengine, madhumuni ya mchezo ni kupanga uteuzi mahususi wa wapangishaji kwa kazi zilizobainishwa vyema).

Katika hali hiyo, anza igizo jipya kwa kuongeza maagizo ya wapangishi chini na kuanza upya:

---
- 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. vidhibiti ni vitendo vinavyoanzishwa mwishoni mwa sehemu ya majukumu katika kila uchezaji, na hutumiwa mara nyingi kuanzisha upya huduma au kuwasha kuwashwa tena katika mifumo ya mbali.

# mkdir /etc/ansible/playbooks

Na faili inayoitwa apache.yml ndani yake na yaliyomo yafuatayo:

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

Pili, tengeneza saraka /static_files:

# mkdir /static_files

ambapo utahifadhi faili maalum ya 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>

Hiyo ilisema, sasa ni wakati wa kutumia kitabu hiki cha kucheza kutekeleza majukumu yaliyotajwa hapo awali. Utagundua kuwa Ansible itapitia kila kazi na mwenyeji, moja kwa wakati, na itatoa ripoti juu ya hali ya kazi kama hizo:

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

Sasa hebu tuone kinachotokea tunapofungua kivinjari na kukielekeza kwa 192.168.0.29 na 192.168.0.30:

Wacha tuende hatua moja zaidi na tusimamishe na kuzima Apache kwenye nodi1 na node2:

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

Kisha kukimbia tena,

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

Wakati huu, kazi inaripoti kwamba seva ya wavuti ya Apache ilianzishwa na kuwezeshwa kwa kila seva pangishi:

Tafadhali zingatia mfano ulio hapo juu kama kidokezo cha uwezo wa Ansible. Ingawa hizi ni kazi rahisi kiasi zinapofanywa kwa idadi ndogo ya seva, inaweza kuwa ya kuchosha na kuchukua muda ikiwa unahitaji kufanya vivyo hivyo katika mashine kadhaa (labda mamia).

Muhtasari

Katika makala hii tumeelezea jinsi ya kuendesha amri na kutekeleza kazi ngumu kwenye majeshi kadhaa ya mbali wakati huo huo kwa kutumia Ansible. Jalada la GitHub hutoa mifano na miongozo mingi juu ya jinsi ya kutumia Ansible kufikia karibu kazi yoyote inayowezekana.

Unapoanza kujifunza jinsi ya kufanya kazi kiotomatiki kwenye wapangishi wa mbali wa Linux kwa kutumia Ansible, tungependa kusikia mawazo yako. Maswali, maoni na mapendekezo pia yanakaribishwa kila wakati, kwa hivyo jisikie huru kuwasiliana nasi kwa kutumia fomu iliyo hapa chini wakati wowote.