അൻസിബിൾ പ്ലേകളും പ്ലേബുക്കുകളും എങ്ങനെ സൃഷ്ടിക്കാം - ഭാഗം 5


അൻസിബിൾ മൊഡ്യൂളുകൾ ഉപയോഗിച്ച് അൻസിബിൾ പ്ലേകളും പ്ലേബുക്കുകളും എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് അൻസിബിൾ സീരീസിന്റെ ഈ ഭാഗം 5 ൽ ഞങ്ങൾ വിശദീകരിക്കും.

റിമോട്ട് നോഡുകളിൽ പ്രത്യേക ജോലികൾ നിർവ്വഹിക്കുന്നതിനായി പ്ലേബുക്കുകളിൽ ഉപയോഗിക്കുന്ന മൊഡ്യൂളുകൾ എന്ന് വിളിക്കപ്പെടുന്ന ഒറ്റപ്പെട്ട സ്ക്രിപ്റ്റുകളുള്ള അൻസിബിൾ ഷിപ്പുകൾ.

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

ഈ ഉപവിഷയത്തിന്റെ ലക്ഷ്യം, അൻസിബിൾ മൊഡ്യൂളുകൾ വഴി നിർവഹിക്കാൻ കഴിയുന്ന വിവിധ ജോലികളുടെ ഒരു അവലോകനം നൽകുക എന്നതാണ്:

ലിനക്സിൽ പാക്കേജ് മാനേജ്മെന്റ്

സിസ്റ്റം അഡ്uമിനിസ്uട്രേറ്റർമാർ നടത്തുന്ന ഏറ്റവും അത്യാവശ്യവും പതിവുള്ളതുമായ ജോലികളിൽ ഒന്നാണ് പാക്കേജ് മാനേജ്uമെന്റ്. RedHat, Debian അധിഷ്ഠിത സിസ്റ്റങ്ങളിൽ പാക്കേജ് മാനേജ്മെന്റ് ടാസ്ക്കുകൾ നിർവ്വഹിക്കാൻ നിങ്ങളെ സഹായിക്കുന്ന മൊഡ്യൂളുകളുള്ള അൻസിബിൾ ഷിപ്പുകൾ.

അവ താരതമ്യേന ഊഹിക്കാൻ എളുപ്പമാണ്. പുതിയ RHEL വിതരണങ്ങളുമായി ബന്ധപ്പെട്ട YUM പാക്കേജ് മാനേജ്മെന്റിനും dnf മൊഡ്യൂളിനും അനുയോജ്യമായ മൊഡ്യൂൾ ഉണ്ട്.

ഒരു പ്ലേബുക്കിൽ മൊഡ്യൂളുകൾ എങ്ങനെ ഉപയോഗിക്കാമെന്നതിന്റെ ചില ഉദാഹരണങ്ങൾ ചുവടെയുണ്ട്:

---
- name: install Apache webserver
  hosts: webservers

  tasks:
       - name: install httpd
         dnf:  
          name: httpd  
          State: latest
---
- name: install Apache webserver
  hosts: databases

  tasks:
       - name: install Apache webserver
         apt:  
          name: apache2  
          State: latest

സേവന മൊഡ്യൂൾ

സിസ്റ്റത്തിൽ സേവനങ്ങൾ ആരംഭിക്കുന്നതിനും നിർത്തുന്നതിനും അപ്uഡേറ്റ് ചെയ്യുന്നതിനും അപ്uഗ്രേഡ് ചെയ്യുന്നതിനും റീലോഡ് ചെയ്യുന്നതിനും സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർമാരെ സേവന മൊഡ്യൂൾ അനുവദിക്കുന്നു.

---
- name: Start service httpd, if not started
  service:
    name: httpd
    state: started
---
- name: Stop service httpd
  service:
    name: httpd
    state: stopped
---
- name: Restart network service for interface eth0
  service:
    name: network
    state: restarted
    args: enp2s0

മൊഡ്യൂൾ പകർത്തുക

പേര് സൂചിപ്പിക്കുന്നത് പോലെ, കോപ്പി മൊഡ്യൂൾ റിമോട്ട് മെഷീനിലെ ഒരു സ്ഥലത്ത് നിന്ന് അതേ മെഷീനിൽ മറ്റൊരു സ്ഥലത്തേക്ക് ഫയലുകൾ പകർത്തുന്നു.

---
- name: Copy file with owner and permissions
  copy:
    src: /etc/files/tecmint.conf
    dest: /srv/tecmint.conf
    owner: tecmint
    group: tecmint
    mode: '0644'

പ്ലേബുക്ക് tecmint.conf എന്ന കോൺഫിഗറേഷൻ ഫയൽ /etc/files/ ഡയറക്ടറിയിൽ നിന്ന് /srv/ ഡയറക്ടറിയിലേക്ക് 0644 അനുമതികളോടെ tecmint ഉപയോക്താവായി പകർത്തുന്നു.

അവസാന വരിയിൽ കാണിച്ചിരിക്കുന്നതുപോലെ പ്രതീകാത്മക പ്രാതിനിധ്യം ഉപയോഗിച്ചും അനുമതികൾ പ്രതിനിധീകരിക്കാം.

---
- name: Copy file with owner and permissions
  copy:
    src: /etc/files/tecmint.conf
    dest: /srv/tecmint.conf
    owner: tecmint
    group: tecmint
    mode: u=rw, g=r, o=r

മുൻ ഉദാഹരണത്തിലെ അനുമതികൾ അവസാന വരിയിൽ കാണിച്ചിരിക്കുന്നതുപോലെ പ്രതിനിധീകരിക്കാം, ഉപയോക്താവിന് റീഡ് ആൻഡ് റൈറ്റ് പെർമിഷനുകൾ നൽകിയിരിക്കുന്നു, ഗ്രൂപ്പിന് റൈറ്റ് പെർമിഷനുകൾ നൽകിയിരിക്കുന്നു, കൂടാതെ ലോകത്തിന്റെ ബാക്കി ഭാഗങ്ങൾക്ക് റീഡ് പെർമിഷനുകൾ നൽകിയിട്ടുണ്ട്.

ഫയൽ മൊഡ്യൂൾ

ഫയലുകളും ഡയറക്uടറികളും സൃഷ്uടിക്കുക, ഫയൽ അനുമതികൾ നൽകൽ, സിംലിങ്കുകൾ സജ്ജീകരിക്കൽ എന്നിവയുൾപ്പെടെ നിരവധി ഫയൽ പ്രവർത്തനങ്ങൾ വഹിക്കാൻ ഫയൽ മൊഡ്യൂൾ ഉപയോഗിക്കുന്നു.

---
- name: Change file ownership, group, and permissions
  file:
    path: /etc/tecmint.conf
    owner: tecmint
    group: tecmint
    mode: '0644'

മുകളിലുള്ള പ്ലേ, /etc ഡയറക്uടറിയിൽ 0644-ലേക്ക് അനുമതികൾ ക്രമീകരിക്കുന്നതിൽ tecmint.conf എന്നൊരു ഫയൽ സൃഷ്ടിക്കുന്നു.

---
- name: Remove file (delete file)
  file:
    path: /etc/tecmint.conf
    state: absent

ഇത് tecmint.conf എന്ന ഫയൽ നീക്കം ചെയ്യുകയോ ഇല്ലാതാക്കുകയോ ചെയ്യുന്നു.

---
- name: create a directory if it doesn’t exist
  file:
    path: /etc/mydirectory
    State: directory
    mode: '0777'

ഇത് /etc ഡയറക്ടറി 0777 എന്നതിലേക്കുള്ള അനുമതികൾ ക്രമീകരിക്കുന്നതിൽ ഒരു ഡയറക്ടറി സൃഷ്ടിക്കും.

---
- name: Recursively deleting a  directory
  file:
    path: /etc/tecmint.conf
    state: absent

മുകളിലെ പ്ലേ ആവർത്തിച്ച് ഒരു ഡയറക്uടറി ഇല്ലാതാക്കുന്നു.

Lineinfile മൊഡ്യൂൾ

നിങ്ങൾ ഒരു ഫയലിൽ ഒരൊറ്റ വരി മാറ്റാൻ ആഗ്രഹിക്കുമ്പോൾ lineinfile മൊഡ്യൂൾ സഹായകമാണ്. ഇതിന് നിലവിലുള്ള ഒരു ലൈൻ മാറ്റിസ്ഥാപിക്കാൻ കഴിയും.

---
 - name: Ensure SELinux is set to enforcing mode
  lineinfile:
    path: /etc/selinux/config
    regexp: '^SELINUX='
    line: SELINUX=disabled

മുകളിലുള്ള പ്ലേ സെലിനക്സ് മൂല്യം പ്രവർത്തനരഹിതമാക്കി സജ്ജമാക്കുന്നു.

SELINUX=disabled
---
- name: Add a line to a file if the file does not exist, without         passing regexp
  lineinfile:
    path: /etc/hosts
    line: 10.200.50.51 linux-console.net
    create: yes

ഇത് /etc/hosts ഫയലിലേക്ക് 10.200.50.51 linux-console.net എന്ന എൻട്രി ചേർക്കുന്നു.

ആർക്കൈവ് മൊഡ്യൂൾ

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

- name: Compress directory /path/to/tecmint_dir/ into /path/to/tecmint.tgz
  archive:
    path: /path/to/tecmint_dir
    dest: /path/to/tecmint.tgz

This compresses the /path/to/tecmint_dir  directory to /path/to/tecmint.tgz
- name: Compress regular file /path/to/tecmint into /path/to/foo.gz and remove it
  archive:
    path: /path/to/tecmint
    dest: /path/to/tecmint.tgz
    remove: yes

മുകളിലെ പ്ലേയിൽ, ആർക്കൈവൽ പൂർത്തിയായതിന് ശേഷം സോഴ്സ് ഫയൽ /path/to/tecmint ഇല്ലാതാക്കപ്പെടും.

- name: Create a bz2 archive of /path/to/tecmint
  archive:
    path: /path/to/tecmint
    format: bz2

ഇത് /path/to/tecmint ഫയലിൽ നിന്ന് bz2 ഫോർമാറ്റിൽ ഒരു കംപ്രസ് ചെയ്ത ഫയൽ സൃഷ്ടിക്കുന്നു.

Git മൊഡ്യൂൾ

സോഫ്റ്റ്uവെയർ റിപ്പോസിറ്ററികളുടെ ജിറ്റ് ചെക്ക്ഔട്ടുകൾ മൊഡ്യൂൾ കൈകാര്യം ചെയ്യുന്നു.

- git:
    repo: 'https://foosball.example.org/path/to/repo.git'
    dest: /srv/checkout
    version: release-0.22

കമാൻഡ് മൊഡ്യൂൾ

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

- name: Executing a command using the command module
  command: cat helloworld.txt
---
 - name: Check the remote host uptime
    hosts: servers
    tasks:
      - name: Execute the Uptime command over Command module
        register: uptimeoutput
        command: "uptime"

- debug:
          var: uptimeoutput.stdout_lines

കമാൻഡ് മൊഡ്യൂൾ റിമോട്ട് സെർവറുകളുടെ പ്രവർത്തന സമയം വീണ്ടെടുക്കുന്നു.

റണ്ണിംഗ് കമാൻഡുകളുടെ ഫലങ്ങൾ വീണ്ടെടുക്കുന്നതിനുള്ള വേരിയബിളുകൾ

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

ഒരു ടാസ്uക്കിന്റെ ഔട്ട്uപുട്ട് ക്യാപ്uചർ ചെയ്യുന്നതിനും വേരിയബിൾ സേവ് ചെയ്യുന്നതിനും ഒരു അൻസിബിൾ രജിസ്റ്റർ ഉപയോഗിക്കുന്നു. വേരിയബിളിൽ ടാസ്uക്കിന്റെ stdout അടങ്ങിയിരിക്കും.

ഉദാഹരണത്തിന്, നിങ്ങൾ df -Th / കമാൻഡ് ഉപയോഗിച്ച് ബന്ധപ്പെട്ട റൂട്ട് ഡയറക്uടറികളിലെ നിയന്ത്രിത നോഡുകളുടെ ഡിസ്ക് ഉപയോഗം പരിശോധിക്കാൻ ആഗ്രഹിക്കുന്നുവെന്ന് നമുക്ക് അനുമാനിക്കാം. കമാൻഡ് നിർവചിക്കുന്നതിന് നിങ്ങൾ ‘കമാൻഡ്’ മൊഡ്യൂളും ഒരു വേരിയബിളിൽ std ഔട്ട്പുട്ട് സംരക്ഷിക്കാൻ ‘register’ ഉപയോഗിക്കും.

കമാൻഡ് പ്രദർശിപ്പിക്കുന്നതിന്, നിങ്ങൾ stdout റിട്ടേൺ മൂല്യത്തിനൊപ്പം 'debug' മൊഡ്യൂൾ ഉപയോഗിക്കും.

---

 - hosts: all
   become: yes

   tasks:
     - name: Execute /boot usage on Hosts
       command: 'df -Th /'
       register: df

     - debug: var=df.stdout

ഇപ്പോൾ, നമുക്ക് പ്ലേബുക്ക് പ്രവർത്തിപ്പിക്കാം. ഈ സാഹചര്യത്തിൽ, ഞങ്ങൾ ഞങ്ങളുടെ പ്ലേബുക്കിന് check_disk_space.yml എന്ന് പേരിട്ടു.

# ansible-playbook check_disk_space.yml

നിങ്ങൾ കണ്ടതുപോലെ, ഔട്ട്uപുട്ട് എല്ലാം കൂടിച്ചേർന്ന് പിന്തുടരുന്നത് ബുദ്ധിമുട്ടാക്കുന്നു.

ഔട്ട്പുട്ട് വിന്യസിക്കാനും വായന എളുപ്പമാക്കാനും, stdout റിട്ടേൺ മൂല്യം stdout_lines ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുക.

---

 - hosts: all
   become: yes

   tasks:
     - name: Execute /boot usage on Hosts
       command: 'df -Th /'
       register: df

     - debug: var=df.stdout_lines

പ്ലേ എക്സിക്യൂഷൻ നിയന്ത്രിക്കാൻ സോപാധികങ്ങൾ ഉപയോഗിക്കുക

പ്രോഗ്രാമിംഗ് ഭാഷകളിലെന്നപോലെ, ഒന്നിലധികം ഫലങ്ങൾ സാധ്യമാകുമ്പോൾ സോപാധിക പ്രസ്താവനകൾ ഉപയോഗിക്കുന്നു. അൻസിബിൾ പ്ലേബുക്കുകളിൽ സാധാരണയായി ഉപയോഗിക്കുന്ന ചില സോപാധിക പ്രസ്താവനകൾ നോക്കാം.

ചിലപ്പോൾ, നിങ്ങൾ പ്രത്യേക നോഡുകളിൽ ടാസ്uക്കുകൾ ചെയ്യാൻ ആഗ്രഹിച്ചേക്കാം, മറ്റുള്ളവയല്ല. when സോപാധിക പ്രസ്താവന ഒരു പ്ലേബുക്കിൽ ഉപയോഗിക്കാനും നടപ്പിലാക്കാനും വളരെ എളുപ്പമാണ്. when ക്ലോസ് ഉപയോഗിക്കുമ്പോൾ, കാണിച്ചിരിക്കുന്നതുപോലെ ക്ലോസിനോട് ചേർന്നുള്ള അവസ്ഥ പ്രഖ്യാപിക്കുക:

when: condition

വ്യവസ്ഥ തൃപ്തികരമാകുമ്പോൾ, റിമോട്ട് സിസ്റ്റത്തിൽ ചുമതല നിർവഹിക്കുന്നു.

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

---
- hosts: all

  tasks:
  - name: Install Nginx on Debian
     apt: name=nginx state=present
     when: ansible_os_family == “Debian”

ഡെബിയൻ ഫാമിലി ഓഫ് ഡിസ്ട്രോകൾ പ്രവർത്തിപ്പിക്കുന്ന ഹോസ്റ്റുകളിൽ മുകളിലുള്ള പ്ലേ Nginx വെബ്uസെർവർ ഇൻസ്റ്റാൾ ചെയ്യുന്നു.

എപ്പോൾ സോപാധിക പ്രസ്താവനയ്uക്കൊപ്പം നിങ്ങൾക്ക് OR, AND ഓപ്പറേറ്ററും ഉപയോഗിക്കാം.

---
- hosts: all

  tasks:
  - name: Install Nginx on Debian
     apt: name=nginx state=present
     when: ansible_os_family == “Debian” and
           ansible_distribution_version == “18.04”

AND ഓപ്പറേറ്റർ ഉപയോഗിക്കുമ്പോൾ, ടാസ്uക് നിർവ്വഹിക്കുന്നതിന് രണ്ട് പ്രസ്താവനകളും തൃപ്തിപ്പെട്ടിരിക്കണം.

മുകളിലുള്ള പ്ലേ, പതിപ്പ് 18.04 ആയ ഒരു ഡെബിയൻ ഫാമിലി OS പ്രവർത്തിക്കുന്ന നോഡുകളിൽ Nginx ഇൻസ്റ്റാൾ ചെയ്യുന്നു. വ്യക്തമായും, ഇത് ഉബുണ്ടു 18.04 ആയിരിക്കും.

OR ഓപ്പറേറ്റർ ഉപയോഗിച്ച്, ഏതെങ്കിലും വ്യവസ്ഥകൾ നിറവേറ്റുകയാണെങ്കിൽ ടാസ്uക് നടപ്പിലാക്കും.

---
- hosts: all

  tasks:
  - name: Install Nginx on Debian
     apt: name=nginx state=present
     when: ansible_os_family == “Debian” or
	      Ansible_os_family == “SUSE”

മുകളിലുള്ള പ്ലേ ഡെബിയൻ അല്ലെങ്കിൽ SUSE കുടുംബത്തിലെ OS അല്ലെങ്കിൽ അവ രണ്ടിലും Nginx വെബ്സെർവറുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നു.

ശ്രദ്ധിക്കുക: ഒരു വ്യവസ്ഥ പരിശോധിക്കുമ്പോൾ എല്ലായ്പ്പോഴും ഇരട്ട തുല്യത ചിഹ്നം == ഉപയോഗിക്കുന്നത് ഉറപ്പാക്കുക.

ലൂപ്പുകളിലെ വ്യവസ്ഥകൾ

ഒരു ലൂപ്പിലും കണ്ടീഷണലുകൾ ഉപയോഗിക്കാം. ഉദാഹരണത്തിന്, റിമോട്ട് നോഡുകളിൽ ഇൻസ്റ്റാൾ ചെയ്യേണ്ട ഒന്നിലധികം പാക്കേജുകളുടെ ഒരു ലിസ്റ്റ് നിങ്ങളുടെ പക്കലുണ്ടെന്ന് പറയുക.

താഴെയുള്ള പ്ലേബുക്കിൽ, ഇൻസ്റ്റാൾ ചെയ്യേണ്ട പാക്കേജുകളുടെ ഒരു ലിസ്റ്റ് ഉൾക്കൊള്ളുന്ന പാക്കേജുകൾ എന്ന് വിളിക്കുന്ന ഒരു അറേ നമുക്കുണ്ട്. ആവശ്യമായ ക്ലോസ് ട്രൂ എന്ന് സജ്ജീകരിച്ചാൽ ഈ ടാസ്uക്കുകൾ ഒന്നിനുപുറകെ ഒന്നായി നടപ്പിലാക്കും.

---
 - name: Install Software packages
    hosts: all
    vars:
	packages:
    • name: nginx
required: True
    • name: mysql
required: True
    • name: apache
required: False



   tasks:
    • name: Install “{{ item.name }}”on Debian
apt: 
 name: “{{ item.name }}”
 state: present 
When: item.required == True
loop: “{{ packages }}”  

പിശക് കൈകാര്യം ചെയ്യൽ കോൺഫിഗർ ചെയ്യുക

ചിലപ്പോൾ, പ്ലേബുക്കുകൾ പ്രവർത്തിപ്പിക്കുമ്പോൾ ടാസ്uക്കുകൾ പരാജയപ്പെടും. ചുവടെയുള്ള പ്ലേബുക്കിൽ കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങൾ 3 സെർവറുകളിൽ 5 ടാസ്uക്കുകൾ പ്രവർത്തിപ്പിക്കുന്നുവെന്ന് കരുതുക. സെർവർ 2-ലെ ടാസ്uക് 3-ൽ (MySQL ആരംഭിക്കുന്നു) ഒരു പിശക് സംഭവിക്കുകയാണെങ്കിൽ, അൻസിബിൾ സെർവർ 2-ൽ ശേഷിക്കുന്ന ടാസ്uക്കുകൾ നിർവ്വഹിക്കുന്നത് നിർത്തുകയും ബാക്കിയുള്ള സെർവറുകളിൽ ശേഷിക്കുന്ന ജോലികൾ പൂർത്തിയാക്കാൻ ശ്രമിക്കുകയും ചെയ്യും.

---
 - name: Install Software packages
   hosts: server1, server2, server3
   tasks:
- name: Install dependencies
<< some code >>

- name: Install MySQL database
<< some code >>

- name: Start MySQL
<< some code >>

- name: Install Nginx
<< some code >>

- name: Start Nginx
<< some code >>

പ്ലേബുക്കിന്റെ നിർവ്വഹണത്തിൽ നിങ്ങൾക്ക് സ്ഥിരത വേണമെങ്കിൽ, ഉദാഹരണത്തിന്, ഒരു പ്ലേബുക്കിന്റെ നിർവ്വഹണം നിർത്തുക, സെർവറുകളിൽ ഒന്ന് പരാജയപ്പെടുകയാണെങ്കിൽ, ഓപ്ഷൻ ചേർക്കുക.

---
 - name: Install Software packages
   hosts: server1, server2, server3
   any_errors_fatal:  true
   tasks:

ഈ രീതിയിൽ, ഒരു സെർവറിൽ ഒരു ടാസ്uക് പരാജയപ്പെടുകയാണെങ്കിൽ, എല്ലാ സെർവറുകളിലെയും മുഴുവൻ പ്ലേബുക്കിന്റെയും നിർവ്വഹണം അൻസിബിൾ നിർത്തി പുറത്തുകടക്കും.

പ്ലേബുക്ക് പിശകുകൾ അവഗണിച്ച് ശേഷിക്കുന്ന ടാസ്uക്കുകൾ നടപ്പിലാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, അവഗണിക്കുക_എററുകൾ: ട്രൂ ഓപ്ഷൻ ഉപയോഗിക്കുക.

---
 - name: Install Software packages
   hosts: server1, server2, server3
   tasks:
- name: Install dependencies
<< some code >>
     ignore_errors: True

ഒരു നിർദ്ദിഷ്uട സംസ്ഥാനത്തിലേക്ക് സിസ്റ്റങ്ങൾ കോൺഫിഗർ ചെയ്യുന്നതിന് പ്ലേബുക്കുകൾ സൃഷ്uടിക്കുക

ഈ വിഭാഗത്തിൽ, ഒരു പ്ലേബുക്ക് പ്രവർത്തിപ്പിക്കുമ്പോൾ ലഭ്യമായ ചില അധിക ഓപ്ഷനുകൾ ഞങ്ങൾ നോക്കുന്നു.

ചെക്ക് മോഡ് അല്ലെങ്കിൽ ഡ്രൈ റൺ ഓപ്ഷൻ ഉപയോഗിച്ച് നമുക്ക് ആരംഭിക്കാം. ഒരു പ്ലേബുക്ക് പ്രവർത്തിപ്പിക്കുമ്പോൾ, എന്തെങ്കിലും പിശകുകൾ നേരിടേണ്ടിവരുമോയെന്നും മാനേജ് ചെയ്യുന്ന ഹോസ്റ്റുകളിൽ എന്തെങ്കിലും മാറ്റങ്ങൾ വരുത്തിയിട്ടുണ്ടോ എന്നും പരിശോധിക്കാൻ ഡ്രൈ റൺ അല്ലെങ്കിൽ ചെക്ക് മോഡ് ഓപ്ഷൻ ഉപയോഗിക്കുന്നു. എന്നിരുന്നാലും, ഇത് റിമോട്ട് നോഡുകളിൽ മാറ്റങ്ങളൊന്നും വരുത്തുന്നില്ല.

ഉദാഹരണത്തിന്, അപ്പാച്ചെ വെബ്uസെർവർ റൺ ഇൻസ്റ്റാൾ ചെയ്യുകയും ആരംഭിക്കുകയും ചെയ്യുന്ന httpd.yml എന്ന പ്ലേബുക്ക് ഡ്രൈ ചെയ്യാൻ പ്രവർത്തിപ്പിക്കുക:

# ansible-playbook httpd.yml --check

നമ്മൾ നോക്കേണ്ട മറ്റൊരു ഓപ്ഷൻ --start-at-task ഓപ്ഷനാണ്. പ്ലേബുക്ക് ആരംഭിക്കേണ്ട അല്ലെങ്കിൽ ആരംഭിക്കേണ്ട ടാസ്ക്കിന്റെ പേര് വ്യക്തമാക്കുമ്പോൾ ഇത് ഉപയോഗിക്കുന്നു.

നമുക്ക് ഒരു ഉദാഹരണം എടുക്കാം: താഴെയുള്ള പ്ലേബുക്ക് 2 ടാസ്ക്കുകൾ പറയുന്നു: ആദ്യ പ്ലേ അപ്പാച്ചെ വെബ് സെർവറും രണ്ടാമത്തേത് htop യൂട്ടിലിറ്റിയും ഇൻസ്റ്റാൾ ചെയ്യുന്നു.

---
 - name: Install httpd

   hosts: all
   tasks:
    yum:	 
name: httpd
     state: Installed

- name: Install htop

      yum:  
      name: htop
      state: started

നിങ്ങൾക്ക് അപ്പാച്ചെ വെബ്uസെർവർ ഇൻസ്റ്റാൾ ചെയ്യുന്നത് ഒഴിവാക്കാനും പകരം htop യൂട്ടിലിറ്റി റൺ ഇൻസ്റ്റാൾ ചെയ്യാനും ആഗ്രഹിക്കുന്നുവെങ്കിൽ:

# ansible-playbook playbook.yml --start-at-task “Install htop”

അവസാനമായി, കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങളുടെ പ്ലേബുക്കിലേക്ക് ടാഗ് ഓപ്uഷൻ ചേർത്തുകൊണ്ട് നിങ്ങളുടെ ടാസ്uക്കുകളോ പ്ലേകളോ ടാഗ് ചെയ്യാം. നിങ്ങൾക്ക് ഒരു വലിയ പ്ലേബുക്ക് ഉള്ളപ്പോൾ മുഴുവൻ പ്ലേബുക്കിൽ നിന്നും നിർദ്ദിഷ്uട ടാസ്uക്കുകൾ പ്രവർത്തിപ്പിക്കാൻ താൽപ്പര്യപ്പെടുമ്പോൾ ഇത് ഉപയോഗപ്രദമാകും.

---
 - name: Install httpd
   tags: Install and start
   hosts: all
   tasks:
    yum:	 
name: httpd
     state: Installed

   tags: Install

    • service: 
name: httpd
state: started
# ansible-playbook playbook.yml -tags "Install"

ടാഗുകൾ ഒഴിവാക്കുന്നതിന്, കാണിച്ചിരിക്കുന്നതുപോലെ --skip-tags ഓപ്ഷനുകൾ ഉപയോഗിക്കുക.

# ansible-playbook playbook.yml --skip-tags "Install"

ഈ വിഷയത്തിൽ, Ansible-ലെ പൊതുവായി ഉപയോഗിക്കുന്ന മൊഡ്യൂളുകൾ, വിശകലനത്തിനായി ഒരു പ്ലേബുക്കിന്റെ നിർവ്വഹണത്തിൽ നിന്ന് stdout എങ്ങനെ വീണ്ടെടുക്കാം, പ്ലേബുക്കിലെ സോപാധികങ്ങൾ ഉപയോഗിച്ച്, ടാസ്uക്കുകൾ പ്രവർത്തിപ്പിക്കുമ്പോൾ സംഭവിക്കാവുന്ന പിശകുകൾ എങ്ങനെ കൈകാര്യം ചെയ്യാം എന്നിവയിലൂടെ ഞങ്ങൾ നിങ്ങളെ കൊണ്ടുപോയി. അവസാനമായി, പ്ലേബുക്കുകളുടെ കോൺഫിഗറേഷനും മുഴുവൻ പ്ലേബുക്കും പ്രവർത്തിപ്പിക്കാൻ നിങ്ങൾ ഉദ്ദേശിക്കുന്നില്ലെങ്കിൽ ഏതൊക്കെ ടാസ്uക്കുകൾ പ്രവർത്തിപ്പിക്കണമെന്ന് തീരുമാനിക്കുന്നതിന് നിങ്ങൾക്ക് അധിക ഓപ്uഷനുകൾ എങ്ങനെ ഉപയോഗിക്കാമെന്നും ഞങ്ങൾ വീണ്ടും മനസ്സിലാക്കി.