ഒന്നിലധികം റിമോട്ട് സെർവറുകളിൽ കോംപ്ലക്സ് ടാസ്ക്കുകൾ ഓട്ടോമേറ്റ് ചെയ്യാൻ അൻസിബിൾ പ്ലേബുക്കുകൾ എങ്ങനെ ഉപയോഗിക്കാം - ഭാഗം 2


ഈ അൻസിബിൾ സീരീസിന്റെ മുൻ ലേഖനത്തിൽ, ഒരൊറ്റ സിസ്റ്റത്തിൽ നിന്ന് ഒന്നിലധികം മെഷീനുകൾ (നോഡുകൾ എന്നും അറിയപ്പെടുന്നു - അവയ്ക്ക് വിന്യാസം നടത്താനും) വേഗത്തിലും കാര്യക്ഷമമായും നിയന്ത്രിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ഒരു ഏജന്റ്-ലെസ്സ് ഉപകരണമാണ് Ansible എന്ന് ഞങ്ങൾ വിശദീകരിച്ചു.

കൺട്രോളർ മെഷീനിൽ സോഫ്uറ്റ്uവെയർ ഇൻസ്റ്റാൾ ചെയ്uത്, പാസ്uവേഡ് ഇല്ലാത്ത ലോഗിൻ ചെയ്യുന്നതിനുള്ള കീകൾ സൃഷ്uടിച്ച് അവ നോഡുകളിലേക്ക് പകർത്തിയ ശേഷം, അൻസിബിൾ ഉപയോഗിച്ച് അത്തരം റിമോട്ട് സിസ്റ്റങ്ങൾ കൈകാര്യം ചെയ്യുന്ന പ്രക്രിയ എങ്ങനെ ഒപ്റ്റിമൈസ് ചെയ്യാമെന്ന് മനസിലാക്കേണ്ട സമയമാണിത്.

ഈ ലേഖനത്തിലുടനീളം, അടുത്ത ലേഖനത്തിലുടനീളം, ഞങ്ങൾ ഇനിപ്പറയുന്ന പരീക്ഷണ പരിതസ്ഥിതി ഉപയോഗിക്കും. എല്ലാ ഹോസ്റ്റുകളും CentOS 7 ബോക്സുകളാണ്:

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

കൂടാതെ, ലോക്കൽ /etc/ansible/hosts ഫയലിന്റെ വെബ്സെർവർ വിഭാഗത്തിൽ രണ്ട് നോഡുകളും ചേർത്തിട്ടുണ്ടെന്ന കാര്യം ശ്രദ്ധിക്കുക:

അത് പറഞ്ഞു, നമുക്ക് വിഷയത്തിൽ നിന്ന് ആരംഭിക്കാം.

അൻസിബിൾ പ്ലേബുക്കുകൾ അവതരിപ്പിക്കുന്നു

മുമ്പത്തെ ഗൈഡിൽ വിവരിച്ചതുപോലെ, റിമോട്ട് നോഡുകളിൽ ഇനിപ്പറയുന്ന രീതിയിൽ കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുന്നതിന് നിങ്ങൾക്ക് അൻസിബിൾ യൂട്ടിലിറ്റി ഉപയോഗിക്കാം:

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

മുകളിലെ ഉദാഹരണത്തിൽ, node1, node2 എന്നിവയിൽ ഞങ്ങൾ hostnamectl --static പ്രവർത്തിപ്പിച്ചു. റിമോട്ട് കമ്പ്യൂട്ടറുകളിൽ ടാസ്uക്കുകൾ പ്രവർത്തിപ്പിക്കുന്ന ഈ രീതി ഷോർട്ട് കമാൻഡുകൾക്ക് നന്നായി പ്രവർത്തിക്കുന്നുവെന്നും എന്നാൽ കൂടുതൽ നന്നായി ചിട്ടപ്പെടുത്തിയ കോൺഫിഗറേഷൻ പാരാമീറ്ററുകളോ മറ്റ് സേവനങ്ങളുമായുള്ള ഇടപെടലുകളോ ആവശ്യമുള്ള കൂടുതൽ സങ്കീർണ്ണമായ ടാസ്uക്കുകൾക്ക് പെട്ടെന്ന് ഭാരമോ കുഴപ്പമോ ആയിത്തീരുമെന്ന് ഒരാൾക്ക് തിരിച്ചറിയാൻ അധികം സമയമെടുക്കില്ല.

ഉദാഹരണത്തിന്, ഒന്നിലധികം ഹോസ്റ്റുകളിൽ വേർഡ്പ്രസ്സ് സജ്ജീകരിക്കുകയും കോൺഫിഗർ ചെയ്യുകയും ചെയ്യുന്നു - ഈ പരമ്പരയുടെ അടുത്ത ലേഖനത്തിൽ ഞങ്ങൾ അത് ഉൾക്കൊള്ളുന്നു). ഇവിടെയാണ് പ്ലേബുക്കുകൾ രംഗപ്രവേശം ചെയ്യുന്നത്.

ലളിതമായി പറഞ്ഞാൽ, പ്ലേബുക്കുകൾ YAML ഫോർമാറ്റിൽ എഴുതപ്പെട്ട പ്ലെയിൻ ടെക്സ്റ്റ് ഫയലുകളാണ്, കൂടാതെ ഒന്നോ അതിലധികമോ കീ/മൂല്യ ജോഡികളുള്ള ഇനങ്ങളുള്ള ഒരു ലിസ്റ്റ് അടങ്ങിയിരിക്കുന്നു (\ഹാഷ് അല്ലെങ്കിൽ \നിഘണ്ടു എന്നും അറിയപ്പെടുന്നു).

ഓരോ പ്ലേബുക്കിലും നിങ്ങൾ ഒന്നോ അതിലധികമോ ഗ്രൂപ്പ് ഹോസ്റ്റുകളെ കണ്ടെത്തും (ഈ ഗ്രൂപ്പുകളിൽ ഓരോന്നിനെയും ഒരു പ്ലേ എന്നും വിളിക്കുന്നു) അവിടെ ആവശ്യമുള്ള ജോലികൾ നിർവഹിക്കും.

ഔദ്യോഗിക പ്രമാണങ്ങളിൽ നിന്നുള്ള ഒരു ഉദാഹരണം ചിത്രീകരിക്കാൻ ഞങ്ങളെ സഹായിക്കും:

1. ഹോസ്റ്റുകൾ: ഇത് താഴെപ്പറയുന്ന ജോലികൾ നിർവഹിക്കുന്ന മെഷീനുകളുടെ (/etc/ansible/hosts പ്രകാരം) ഒരു ലിസ്റ്റ് ആണ്.

2. remote_user: ടാസ്uക്കുകൾ നിർവഹിക്കാൻ ഉപയോഗിക്കുന്ന റിമോട്ട് അക്കൗണ്ട്.

3. vars: റിമോട്ട് സിസ്റ്റത്തിന്റെ(കളുടെ) സ്വഭാവം പരിഷ്കരിക്കാൻ ഉപയോഗിക്കുന്ന വേരിയബിളുകൾ.

4. ആതിഥേയരുമായി പൊരുത്തപ്പെടുന്ന എല്ലാ മെഷീനുകൾക്കെതിരെയും ഒരു സമയം ക്രമത്തിലാണ് ടാസ്uക്കുകൾ നടപ്പിലാക്കുന്നത്. ഒരു പ്ലേയ്uക്കുള്ളിൽ, എല്ലാ ഹോസ്റ്റുകൾക്കും ഒരേ ടാസ്uക് നിർദ്ദേശങ്ങൾ ലഭിക്കാൻ പോകുന്നു.

ഒരു നിർദ്ദിഷ്uട ഹോസ്റ്റിനായി നിങ്ങൾക്ക് മറ്റൊരു കൂട്ടം അനുബന്ധ ടാസ്uക്കുകൾ എക്uസിക്യൂട്ട് ചെയ്യണമെങ്കിൽ, നിലവിലെ പ്ലേബുക്കിൽ മറ്റൊരു പ്ലേ സൃഷ്uടിക്കുക (മറ്റൊരു രീതിയിൽ പറഞ്ഞാൽ, നന്നായി നിർവചിക്കപ്പെട്ട ടാസ്uക്കുകളിലേക്ക് ഒരു പ്രത്യേക സെലക്ഷൻ ഹോസ്റ്റുകളെ മാപ്പ് ചെയ്യുക എന്നതാണ് ഒരു പ്ലേയുടെ ഉദ്ദേശ്യം).

അങ്ങനെയെങ്കിൽ, താഴെയുള്ള ഹോസ്റ്റുകളുടെ നിർദ്ദേശം ചേർത്ത് ഒരു പുതിയ പ്ലേ ആരംഭിക്കുക:

---
- 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. ഓരോ പ്ലേയിലെയും ടാസ്uക് വിഭാഗത്തിന്റെ അവസാനത്തിൽ പ്രവർത്തനക്ഷമമാക്കുന്ന പ്രവർത്തനങ്ങളാണ് ഹാൻഡ്uലറുകൾ, അവ കൂടുതലും സേവനങ്ങൾ പുനരാരംഭിക്കുന്നതിനോ റിമോട്ട് സിസ്റ്റങ്ങളിൽ റീബൂട്ടുകൾ പ്രവർത്തനക്ഷമമാക്കുന്നതിനോ ഉപയോഗിക്കുന്നു.

# mkdir /etc/ansible/playbooks

apache.yml എന്ന് പേരുള്ള ഒരു ഫയലും അതിനുള്ളിൽ ഇനിപ്പറയുന്ന ഉള്ളടക്കങ്ങളുമുണ്ട്:

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

രണ്ടാമതായി, ഒരു ഡയറക്uടറി സൃഷ്uടിക്കുക /static_files:

# mkdir /static_files

നിങ്ങൾ ഇഷ്uടാനുസൃത 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>

നേരത്തെ സൂചിപ്പിച്ച ജോലികൾ ചെയ്യാൻ ഈ പ്ലേബുക്ക് ഉപയോഗിക്കേണ്ട സമയമാണിത്. അൻസിബിൾ ഓരോ ജോലിയും ഹോസ്റ്റ് മുഖേന ഓരോന്നായി കടന്നുപോകുമെന്നും അത്തരം ടാസ്uക്കുകളുടെ നിലയെക്കുറിച്ച് റിപ്പോർട്ടുചെയ്യുമെന്നും നിങ്ങൾ ശ്രദ്ധിക്കും:

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

ഇനി നമ്മൾ ഒരു ബ്രൗസർ തുറന്ന് 192.168.0.29, 192.168.0.30 എന്നിവയിലേക്ക് പോയിന്റ് ചെയ്യുമ്പോൾ എന്താണ് സംഭവിക്കുന്നതെന്ന് നോക്കാം:

നമുക്ക് ഒരു പടി കൂടി മുന്നോട്ട് പോയി node1, node2 എന്നിവയിൽ അപ്പാച്ചെ സ്വമേധയാ നിർത്തി പ്രവർത്തനരഹിതമാക്കാം:

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

എന്നിട്ട് വീണ്ടും ഓടുക,

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

ഇത്തവണ, ഓരോ ഹോസ്റ്റിലും അപ്പാച്ചെ വെബ് സെർവർ ആരംഭിക്കുകയും പ്രവർത്തനക്ഷമമാക്കുകയും ചെയ്തുവെന്ന് ടാസ്uക് റിപ്പോർട്ട് ചെയ്യുന്നു:

മുകളിലുള്ള ഉദാഹരണം അൻസിബിളിന്റെ ശക്തിയുടെ ഒരു നേർക്കാഴ്ചയായി പരിഗണിക്കുക. ചെറിയ എണ്ണം സെർവറുകളിൽ നിർവഹിക്കുമ്പോൾ ഇവ താരതമ്യേന എളുപ്പമുള്ള ജോലികളാണെങ്കിലും, നിരവധി (ഒരുപക്ഷേ നൂറുകണക്കിന്) മെഷീനുകളിൽ നിങ്ങൾ ഇത് ചെയ്യണമെങ്കിൽ അത് വളരെ മടുപ്പിക്കുന്നതും സമയമെടുക്കുന്നതുമാണ്.

സംഗ്രഹം

അൻസിബിൾ ഉപയോഗിച്ച് ഒരേസമയം നിരവധി റിമോട്ട് ഹോസ്റ്റുകളിൽ കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുന്നതും സങ്കീർണ്ണമായ ടാസ്ക്കുകൾ എക്സിക്യൂട്ട് ചെയ്യുന്നതും എങ്ങനെയെന്ന് ഈ ലേഖനത്തിൽ ഞങ്ങൾ വിവരിച്ചിട്ടുണ്ട്. സങ്കൽപ്പിക്കാവുന്ന ഏതൊരു ജോലിയും നേടാൻ അൻസിബിൾ എങ്ങനെ ഉപയോഗിക്കാമെന്നതിനെക്കുറിച്ചുള്ള നിരവധി ഉദാഹരണങ്ങളും ഗൈഡുകളും GitHub ശേഖരം നൽകുന്നു.

Ansible ഉപയോഗിച്ച് റിമോട്ട് Linux ഹോസ്റ്റുകളിൽ ടാസ്uക്കുകൾ എങ്ങനെ ഓട്ടോമേറ്റ് ചെയ്യാമെന്ന് നിങ്ങൾ പഠിക്കാൻ തുടങ്ങുമ്പോൾ, നിങ്ങളുടെ ചിന്തകൾ കേൾക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു. ചോദ്യങ്ങളും അഭിപ്രായങ്ങളും നിർദ്ദേശങ്ങളും എപ്പോഴും സ്വാഗതം ചെയ്യുന്നു, അതിനാൽ എപ്പോൾ വേണമെങ്കിലും ചുവടെയുള്ള ഫോം ഉപയോഗിച്ച് ഞങ്ങളെ ബന്ധപ്പെടാൻ മടിക്കേണ്ടതില്ല.