സിസ്റ്റം അഡ്മിനിസ്ട്രേഷൻ ജോലികൾക്കായി അൻസിബിൾ മൊഡ്യൂളുകൾ എങ്ങനെ ഉപയോഗിക്കാം - ഭാഗം 6


കഴിഞ്ഞ വിഷയങ്ങളിലെ ചില അൻസിബിൾ മൊഡ്യൂളുകളുടെ ഈ ഭാഗം 6 ൽ, ഞങ്ങൾ ഇപ്പോൾ കൂടുതൽ ആഴത്തിൽ പോയി നിരവധി സിസ്റ്റം അഡ്മിനിസ്ട്രേഷൻ ജോലികൾ നിർവഹിക്കുന്നതിന് സഹായകമായ അധിക മൊഡ്യൂളുകൾ കണ്ടെത്തും.

ഓരോ മൊഡ്യൂളിന്റെയും അടിസ്ഥാന ആശയം നിങ്ങൾക്ക് ലഭിക്കും കൂടാതെ ചില ടാസ്uക്കുകൾ പൂർത്തിയാക്കുന്നതിന് ലഭ്യമായ ഓപ്ഷനുകൾ നോക്കുകയും ചെയ്യും.

  1. അൻസിബിളിൽ സോഫ്uറ്റ്uവെയർ പാക്കേജുകളും റിപ്പോസിറ്ററികളും കൈകാര്യം ചെയ്യുന്നു
  2. Ansible ഉപയോഗിച്ച് സേവനങ്ങൾ നിയന്ത്രിക്കുക
  3. അൻസിബിൾ ഉപയോഗിച്ച് ഫയർവാൾ കൈകാര്യം ചെയ്യുന്നു
  4. അൻസിബിൾ ഉപയോഗിച്ച് ഫയലുകളോ ഫോൾഡറുകളോ ആർക്കൈവ് ചെയ്യുന്നു
  5. Ansible ഉപയോഗിച്ച് ടാസ്uക്കുകൾ ഷെഡ്യൂൾ ചെയ്യുക
  6. Ansible ഉപയോഗിച്ച് ഉപയോക്താക്കളെയും ഗ്രൂപ്പുകളെയും നിയന്ത്രിക്കുക
  7. അൻസിബിൾ ഉപയോഗിച്ച് ഫയലുകളും ഡയറക്uടറികളും സൃഷ്uടിക്കുക
  8. Ansible ഉപയോഗിച്ച് സംഭരണം നിയന്ത്രിക്കുക
  9. അൻസിബിൾ ഉപയോഗിച്ച് ഫയൽ സിസ്റ്റങ്ങൾ കൈകാര്യം ചെയ്യുക

Linux സിസ്റ്റങ്ങളിൽ പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ, വ്യത്യസ്ത പാക്കേജ് മാനേജർമാരുമായി വ്യത്യസ്ത വിതരണങ്ങൾ വരുന്നു. RedHat ഡിസ്ട്രിബ്യൂഷനുകൾക്കായി, ഞങ്ങൾക്കുണ്ട്.

വ്യത്യസ്uത സിസ്റ്റങ്ങൾക്കായി വ്യത്യസ്uത പാക്കേജ് മാനേജർമാർ ഉപയോഗിക്കേണ്ടതിന്റെ ആവശ്യകത ഇല്ലാതാക്കുന്ന പാക്കേജ് എന്ന ഒരു മൊഡ്യൂളുമായി അൻസിബിൾ വരുന്നു. ഇത് ഹോസ്റ്റ് സിസ്റ്റത്തിന്റെ അനുബന്ധ പാക്കേജ് മാനേജർ സ്വയമേവ ഉപയോഗിക്കുന്നു, അതുവഴി ജോലി എളുപ്പമാക്കുന്നു.

ഉദാഹരണത്തിന്, ഡെബിയൻ, റെഡ്ഹാറ്റ് ഡിസ്ട്രോകൾ എന്നിവ ഉൾപ്പെടുന്ന ഒരു കൂട്ടം ഹോസ്റ്റുകളിൽ htop ഇൻസ്റ്റാൾ ചെയ്യാൻ താഴെയുള്ള install_htop.yml പ്ലേബുക്കിൽ കാണിച്ചിരിക്കുന്ന പാക്കേജ് മൊഡ്യൂൾ ഉപയോഗിക്കുക.

---
- name: Install htop on Ubuntu and CentOS
  hosts: all
  tasks:

- package:
         name: htop
         state: installed

ശ്രദ്ധിക്കുക: പാക്കേജിന്റെ പേരുകൾ ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ നിന്ന് മറ്റൊന്നിലേക്ക് വ്യത്യാസപ്പെടാം. ഉദാഹരണത്തിന്, നമുക്ക് Redhat വിതരണങ്ങളിൽ httpd, ഡെബിയൻ/ഉബുണ്ടു സിസ്റ്റങ്ങൾക്കായി Apache2 എന്നിവയെല്ലാം അപ്പാച്ചെ വെബ്സെർവറിനെ സൂചിപ്പിക്കുന്നു. അതിനാൽ, ഈ പാക്കേജുകൾ കൈമാറുമ്പോൾ കൂടുതൽ ജാഗ്രത പാലിക്കണം. സാധാരണയായി, വേരിയബിളുകൾ അല്ലെങ്കിൽ സോപാധിക പ്രസ്താവനകൾ ഉപയോഗിക്കുന്നതാണ് നല്ലത്.

അടുത്തതായി, ഞങ്ങൾക്ക് ഒരു സേവന മൊഡ്യൂൾ ഉണ്ട്, അത് Linux സിസ്റ്റങ്ങളിൽ സേവനങ്ങൾ കൈകാര്യം ചെയ്യാൻ ഉപയോഗിക്കുന്നു. ഒരു സേവനം ആരംഭിക്കുന്നതിനോ നിർത്തുന്നതിനോ പുനരാരംഭിക്കുന്നതിനോ ഇത് ഉപയോഗിക്കുന്നു. ഒരു സേവനം പ്രവർത്തനക്ഷമമാക്കുന്നതിനും നിങ്ങൾക്ക് ഇത് ഉപയോഗിക്കാം, അങ്ങനെ ഒരു സിസ്റ്റം ബൂട്ട് ചെയ്യുമ്പോൾ, അത് യാന്ത്രികമായി സേവനം ആരംഭിക്കുന്നു.

ഉദാഹരണത്തിന്, RHEL 8-ൽ അപ്പാച്ചെ വെബ്സെർവർ ആരംഭിക്കുന്നതിനും പ്രവർത്തനക്ഷമമാക്കുന്നതിനും, കാണിച്ചിരിക്കുന്നതുപോലെ സേവനം ഉപയോഗിക്കുക.

---
- name: Start and enable httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: started
	    enabled: yes

httpd സേവനം നിർത്താൻ, നിർത്തിയ ആട്രിബ്യൂട്ട് നൽകുക.

---
- name: Stop httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: stopped

httpd സേവനം പുനരാരംഭിക്കുന്നതിന്, പുനരാരംഭിച്ച ആട്രിബ്യൂട്ട് നൽകുക.

---
- name: Restart httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: restarted

മറ്റൊരു പ്രധാന ടാസ്uക് സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർമാർ ഏറ്റെടുക്കുന്നത് ഫയർവാളിന്റെ മാനേജ്uമെന്റാണ്. അൻസിബിൾ പ്ലേബുക്കുകളിൽ, ഫയർവാൾഡും ufw മൊഡ്യൂളുകളും ഉപയോഗിച്ച് ഇത് വളരെ എളുപ്പമാക്കിയിരിക്കുന്നു. ഒരു പോർട്ടോ സേവനമോ അല്ലെങ്കിൽ ഒരു ഉറവിട വിലാസമോ അനുവദിക്കുന്നതിനോ തടയുന്നതിനോ നിങ്ങൾക്ക് ഫയർവാൾ കോൺഫിഗർ ചെയ്യാം.

നമുക്ക് മുന്നോട്ട് പോയി കുറച്ച് ഉദാഹരണങ്ങൾ നോക്കാം:

---
- name: Allow port 80 
  hosts: webservers
  tasks: 
   
   -firewalld:
	port: 80/tcp
     permanent: yes
     state: enabled

മുകളിലെ പ്ലേബുക്കിൽ, ഫയർവാളിലുടനീളം പോർട്ട് 80 അനുവദനീയമാണ്.

permanent: yes എന്ന ഓപ്uഷൻ ഫയർവാൾ റൂൾ നടപ്പിലാക്കുകയും റീബൂട്ടുകളിലുടനീളം അത് സ്ഥിരതയുള്ളതാക്കുകയും ചെയ്യുന്നു. എന്നിരുന്നാലും, ഈ നിയമം ഉടനടി ബാധകമല്ല. ഒരു റീബൂട്ടിന് ശേഷം മാത്രമേ ഇത് പ്രാബല്യത്തിൽ വരൂ. നിയമം ഉടനടി നടപ്പിലാക്കാൻ, ഉടൻ: അതെ എന്ന ഓപ്uഷൻ ഉപയോഗിക്കുക.

അനുവദനീയമായ വിലാസങ്ങൾ വ്യക്തമാക്കുന്നതിന്, ഉറവിടം:0.0.0.0/0 പ്രസ്താവന ഉപയോഗിക്കുക.

- firewalld:
    source: 192.168.0.0/24
    zone: public
    state: enabled

ഇനിപ്പറയുന്ന രീതിയിൽ പോർട്ട് ഓപ്ഷൻ ഉപയോഗിക്കാൻ അനുവദിക്കേണ്ട പോർട്ടുകളുടെ ഒരു ശ്രേണി വ്യക്തമാക്കാൻ:

- firewalld:
    port: 213-567/udp
    permanent: yes
    state: enabled

പോർട്ട് തടയുന്നതിന്, കാണിച്ചിരിക്കുന്നതുപോലെ സ്റ്റേറ്റ് ഓപ്uഷൻ പ്രവർത്തനരഹിതമാക്കി മാറ്റുക:

-firewalld:
	port: 80/tcp
     permanent: yes
     state: disabled

ഒരു പോർട്ട് ചേർക്കുന്നത്/തടയുന്നത് കൂടാതെ, നിങ്ങൾക്ക് ഒരു സേവനത്തിനും ഇതേ നിയമങ്ങൾ ബാധകമാക്കാവുന്നതാണ്. കൂടാതെ ഇത് വളരെ ലളിതവുമാണ്. സേവന മൊഡ്യൂൾ ഉപയോഗിക്കുക, ഒപ്പം ചേർക്കേണ്ട സേവനം കൂട്ടിച്ചേർക്കുകയും സ്റ്റേറ്റ് ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുകയും ചെയ്യുക.

- firewalld:
    service: https
    permanent: true
    state: enabled

സേവനം തടയുന്നതിന് സ്റ്റേറ്റ് ഓപ്uഷൻ പ്രവർത്തനരഹിതമാക്കി സജ്ജമാക്കുക.

- firewalld:
    service: https
    permanent: true
    state: disabled

ആർക്കൈവിംഗ് എന്നത് ഒരു ഫയലിന്റെയോ ഫോൾഡറിന്റെയോ കംപ്രഷൻ എളുപ്പത്തിൽ പോർട്ടബിൾ ആയതും വലിപ്പം കുറഞ്ഞതുമായ ഒരു ഫോർമാറ്റിലേക്ക് സൂചിപ്പിക്കുന്നു. ആർക്കൈവ് എന്ന് വിളിക്കുന്ന മൊഡ്യൂളുള്ള അൻസിബിൾ കപ്പലുകൾ. ഒരു ഫയൽ കംപ്രസ് ചെയ്യുന്നത് അത് ലഭിക്കുന്നത് പോലെ വളരെ എളുപ്പമാണ്. ഫയലിന്റെ ഉറവിട പാതയും കംപ്രസ് ചെയ്ത ഫയലിന്റെ ലക്ഷ്യസ്ഥാനവും വ്യക്തമാക്കുക മാത്രമാണ് വേണ്ടത്.

താഴെയുള്ള ഒരു പ്ലേബുക്ക് compress.yml പരിഗണിക്കുക.

---
- hosts: webservers
  tasks:

    • name: Compress a folder
archive:
        path: /opt/data/web
        dest: /tmp/web.gz

മുകളിലുള്ള പ്ലേബുക്ക് /opt/data/web ഡയറക്uടറി കംപ്രസ്സുചെയ്യുകയും അത് /tmp/web.gz-ലേക്ക് സംരക്ഷിക്കുകയും ചെയ്യുന്നു.

സ്ഥിരസ്ഥിതി കംപ്രഷൻ ഫോർമാറ്റ് .gz ആണ്, എന്നിരുന്നാലും, ഫോർമാറ്റ് ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് ഇത് വ്യക്തമാക്കാം. അടുത്ത പ്ലേബുക്ക് സാമ്പിൾ ചെയ്യുക.

---
- hosts: webservers
  Tasks:

  - name: Create a zip archive 
    archive:
     path: /opt/data/web
     dest: /tmp/web
     format: zip

മുകളിലുള്ള പ്ലേബുക്ക് /opt/data/web ഡയറക്ടറി /tmp/web.zip ലേക്ക് കംപ്രസ് ചെയ്യുന്നു.

അൺആർക്കൈവ് ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരു കംപ്രസ് ചെയ്ത ഫയൽ അൺകംപ്രസ്സ് ചെയ്യാനും കഴിയും. താഴെയുള്ള പ്ലേബുക്ക് പരിഗണിക്കുക.

---
- hosts: webservers
  tasks:

 - name:Uncompress /tmp/web.gz to/opt directory  on Ansible controller
   unarchive:
     src: /tmp/web.bz2
     dest: /opt/

മുകളിലുള്ള പ്ലേബുക്ക്, Ansible കൺട്രോളറിൽ /opt/data/web.gz എന്നതിലേക്ക് /opt എന്ന ഫയലിനെ അൺകംപ്രസ്സ് ചെയ്യുന്നു.

റിമോട്ട് സോഴ്സ് സിസ്റ്റം വ്യക്തമാക്കുന്നതിന് remote_src=yes ഓപ്ഷൻ ഉപയോഗിക്കുക.

---
- hosts: webservers
  tasks:

 - name:Uncompress /tmp/web.bz2 to/opt on remote host
   unarchive:
     src: /tmp/web.bz2
     dest: /opt/
     remote_src=yes 

മുകളിലുള്ള പ്ലേബുക്ക് റിമോട്ട് നോഡിലുള്ള /tmp/web.bz2 ഫയൽ /opt/ ഡയറക്ടറിയിലേക്ക് അൺകംപ്രസ്സ് ചെയ്യുന്നു.

അൻസിബിൾ പ്ലേബുക്കുകളിൽ ജോലികൾ ഷെഡ്യൂൾ ചെയ്യാൻ ക്രോൺ മൊഡ്യൂൾ സഹായിക്കുന്നു.

താഴെയുള്ള പ്ലേബുക്ക് പരിഗണിക്കുക.

---
- hosts: webservers
  tasks:

 - name: Create a scheduled task
   cron:
     name: Run employee attendance
     job: sh /opt/scripts/attendace.sh
      
     month: 4
     day: 5
     hour: 17
     minute: 00

പ്ലേബുക്ക് ഏപ്രിൽ 5 ന് വൈകുന്നേരം 5:00 മണിക്ക് ഹാജർ സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കുന്നു.

ഏപ്രിലിലെ 5-ാം ദിവസം തിങ്കളാഴ്ചയാണെങ്കിൽ മാത്രം ഈ സ്ക്രിപ്റ്റ് റൺ ചെയ്യാൻ ഷെഡ്യൂൾ ചെയ്യണമെങ്കിൽ, പ്രവൃത്തിദിനം: 1 ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുക. ക്രോൺ നൊട്ടേഷൻ അനുസരിച്ച് 0 ഞായറാഴ്ചയെയും 6 ശനിയാഴ്ചയെയും സൂചിപ്പിക്കുന്നു.

month: 4
day: 5
hour: 17
minute: 00
weekday: 1

ഈ ഫീൽഡുകളിലേതെങ്കിലും ഒരു നക്ഷത്രചിഹ്നം (*) ഏതെങ്കിലും മൂല്യത്തെ സൂചിപ്പിക്കുന്നു.

പ്രവൃത്തിദിനം എന്തായാലും ഏപ്രിൽ 5-ന് വൈകുന്നേരം 5:00 മണിക്ക് ജോലി പ്രവർത്തിപ്പിക്കാൻ, കാണിച്ചിരിക്കുന്നതുപോലെ സമയ പാരാമീറ്ററുകൾ ഉപയോഗിക്കുക.

month: 4
day: 5
hour: 17
minute: 00
weekday: *

എല്ലാ മാസവും 5-ാം തീയതി വൈകുന്നേരം 5:00 മണിക്ക് ക്രോൺ ജോലി നിർവഹിക്കാൻ താഴെയുള്ള ക്രമീകരണങ്ങൾ ഉപയോഗിക്കുക.

month: *
day: 5
hour: 17
minute: 00
weekday: *

ദിവസവും വൈകുന്നേരം 5:00 മണിക്ക് ക്രോൺ ജോലി നിർവഹിക്കുന്നതിന്, കാണിച്ചിരിക്കുന്നതുപോലെ സമയ ക്രമീകരണം സജ്ജമാക്കുക:

month: *
day: *
hour: 17
minute: 00
weekday: *

ഓരോ 5 മണിക്കൂറിലും ക്രോൺ ജോബ് എക്സിക്യൂട്ട് ചെയ്യാൻ, കാണിച്ചിരിക്കുന്നതുപോലെ സ്റ്റെപ്പ് മൂല്യം */5 ഉപയോഗിക്കുക.

month: *
day: *
hour: */5
minute: *
weekday: *

നിങ്ങൾക്ക് അൻസിബിൾ പ്ലേബുക്കുകൾക്കുള്ളിൽ ഉപയോക്താക്കളെയും ഗ്രൂപ്പുകളെയും വളരെ അനായാസമായി നിയന്ത്രിക്കാനാകും.

ഒരു പുതിയ ഉപയോക്താവിനെ സൃഷ്ടിക്കാൻ, കാണിച്ചിരിക്കുന്നതുപോലെ ഉപയോക്തൃ ഘടകം ഉപയോഗിക്കുക.

---
- hosts: webservers
  tasks:

 - name: Create a new user
   user: 
     name: Jack

നിങ്ങൾക്ക് യുഐഡി, ഗ്രൂപ്പുകൾ പോലുള്ള അധിക ഓപ്ഷനുകളും ചേർക്കാം.

- name: Create a new user
   user: 
      name: Jack
      comment: Jack Peters
          uid:   1002
      group: administrators
      shell:  /bin/bash

ഉപയോക്താവിനെ നീക്കം ചെയ്യാൻ, നീക്കം ചെയ്യുക: അതെ പ്രസ്താവന ഉപയോഗിക്കുക.

- name: Remove the user 'Jack'
  user:
    name: Jack
    state: absent
    remove: yes

ഒരു പുതിയ ഗ്രൂപ്പ് സൃഷ്ടിക്കാൻ, ഗ്രൂപ്പ് മൊഡ്യൂൾ ഉപയോഗിക്കുക.

- name: Create a group
  group:
    name: developers

ഡയറക്ടറികളുടെ ഫയലുകൾ സൃഷ്ടിക്കാൻ, ഫയൽ മൊഡ്യൂൾ ഉപയോഗിക്കുക.

ഉദാഹരണത്തിന്, ഒരു പുതിയ ഡയറക്ടറി സൃഷ്ടിക്കാൻ.

---
- hosts: webservers
  tasks:

  - name: Create a new directory
    file: 
     path: /opt/app
     state: directory

നിങ്ങൾക്ക് ഉടമ, ഗ്രൂപ്പ്, ഫയൽ അനുമതികൾ തുടങ്ങിയ മറ്റ് ആട്രിബ്യൂട്ടുകൾ ചേർക്കാൻ കഴിയും.

- hosts: webservers
  tasks:

  - name: Create a new directory
    file: 
     path: /opt/web
     state: directory
     owner: www-data
     group: www-data
     mode: 0644

കൂടാതെ, നിങ്ങൾക്ക് ആവർത്തനമായി ഡയറക്uടറികൾ സൃഷ്uടിക്കാൻ കഴിയും: yes പ്രസ്താവന.

---
- hosts: webservers
  tasks:

  - name: Create directories recursively
    file: 
     path: /opt/web/app
     state: directory
     owner: www-data
     group: www-data
     mode: 0644
recurse: yes

ഒരു ഫയൽ സൃഷ്ടിക്കാൻ, state: touch ഓപ്ഷൻ ഉപയോഗിക്കുക.

---
- hosts: webservers
  tasks:

  - name: Create a new file
    file: 
     path: /opt/web/index.html
     state: touch
owner: www-data
     group: www-data
     mode: 0644

എൽവിഎം വോള്യങ്ങളും ഗ്രൂപ്പുകളും ക്രമീകരിക്കുന്നതിന് lvg ഘടകം ഉപയോഗിക്കുന്നു.

താഴെയുള്ള പ്ലേബുക്ക് പരിഗണിക്കുക:

---
- hosts: webservers
  tasks: 
    • name: Create lVM volume group
lvg: 
 vg: vg1
 pvs: /dev/sda1
 pesize: 32

ഇത് /dev/sda1 പാർട്ടീഷന്റെ മുകളിൽ 32 MB യുടെ ഭൗതിക വ്യാപ്തിയുള്ള ഒരു വോളിയം ഗ്രൂപ്പ് സൃഷ്ടിക്കുന്നു.

ഒരിക്കൽ സൃഷ്ടിച്ചുകഴിഞ്ഞാൽ, കാണിച്ചിരിക്കുന്നതുപോലെ ഒരു ലോജിക്കൽ വോള്യം സൃഷ്ടിക്കാൻ lvol മൊഡ്യൂൾ ഉപയോഗിക്കുക

---
    - hosts: webservers
      tasks: 

       - name: Create lVM volume
    lvol: 
    vg: vg1
    lv: lvol1
    pvs: /dev/sda1

ഒരു ബ്ലോക്ക് ഉപകരണത്തിൽ ഒരു ഫയൽ സിസ്റ്റം സൃഷ്ടിക്കുന്നതിന്, ഫയൽസിസ്റ്റം മൊഡ്യൂൾ ഉപയോഗിക്കുക.

ചുവടെയുള്ള പ്ലേബുക്ക് ബ്ലോക്ക് വോള്യത്തിൽ xfs-ന്റെ ഫയൽസിസ്റ്റം തരം സൃഷ്ടിക്കുന്നു.

---
    - hosts: webservers
      tasks: 

       - name: Create a filesystem
         filesystem:
         
           fstype: xfs
           dev: /dev/vg1/lvol1

ചുവടെയുള്ള പ്ലേബുക്കിൽ കാണിച്ചിരിക്കുന്നതുപോലെ മൗണ്ട് മൊഡ്യൂൾ ഉപയോഗിച്ച് ബ്ലോക്ക് വോളിയം മൌണ്ട് ചെയ്യാൻ നിങ്ങൾക്ക് അടുത്തതായി തുടരാം:

---
    - hosts: webservers
      tasks: 

       - name: Mount a filesystem
         mount:
         
           fstype: xfs
           src: /dev/vg1/lvol1
           path: /opt/web
           state: mounted

ഇത് വിഷയം അവസാനിപ്പിക്കുന്നു. അൻസിബിൾ പ്ലേബുക്കുകളിലെ നിർദ്ദിഷ്ട ബിൽറ്റ്-ഇൻ മൊഡ്യൂളുകൾ ഉപയോഗിച്ച് പൂർത്തിയാക്കാൻ കഴിയുന്ന വിവിധ സിസ്റ്റം അഡ്മിനിസ്ട്രേഷൻ ടാസ്ക്കുകൾ ഞങ്ങൾ കവർ ചെയ്തിട്ടുണ്ട്.