அன்சிபில் நாடகங்கள் மற்றும் விளையாட்டு புத்தகங்களை உருவாக்குவது எப்படி - பகுதி 5
அன்சிபில் தொடரின் இந்த பகுதி 5 இல், அன்சிபிள் தொகுதிகள் பயன்படுத்தி அன்சிபிள் பிளேய்கள் மற்றும் பிளேபுக்குகளை எவ்வாறு உருவாக்குவது என்பதை விளக்குவோம்.
தொலைநிலை முனைகளில் சிறப்புப் பணிகளைச் செய்வதற்கு பிளேபுக்குகளில் பயன்படுத்தப்படும் தொகுதிகள் எனப்படும் முழுமையான ஸ்கிரிப்ட்களைக் கொண்ட அன்சிபிள் கப்பல்கள்.
தொகுப்பு மேலாண்மை, காப்பகப்படுத்தல் மற்றும் கோப்புகளை நகலெடுப்பது போன்ற பணிகளை தானியக்கமாக்குவதற்கு தொகுதிகள் சிலவற்றைக் குறிப்பிடுகின்றன. உள்ளமைவு கோப்புகளில் மாற்றங்களைச் செய்ய மற்றும் திசைவிகள், சுவிட்சுகள், சுமை இருப்பு, ஃபயர்வால்கள் மற்றும் பிற சாதனங்களின் ஹோஸ்ட் போன்ற சாதனங்களை நிர்வகிக்க அவை உங்களை அனுமதிக்கின்றன.
இந்த துணைத் தலைப்பின் நோக்கம், அன்சிபிள் தொகுதிகள் மூலம் நிறைவேற்றக்கூடிய பல்வேறு பணிகளைப் பற்றிய ஒரு கண்ணோட்டத்தை உங்களுக்கு வழங்குவதாகும்:
லினக்ஸில் தொகுப்பு மேலாண்மை
தொகுப்பு நிர்வாகம் என்பது கணினி நிர்வாகிகளால் மேற்கொள்ளப்படும் மிக முக்கியமான மற்றும் அடிக்கடி செய்யப்படும் பணிகளில் ஒன்றாகும். 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
சேவை தொகுதி
சேவை தொகுதி கணினி நிர்வாகிகளை கணினியில் சேவைகளைத் தொடங்க, நிறுத்த, புதுப்பிக்க, மேம்படுத்த மற்றும் மீண்டும் ஏற்ற அனுமதிக்கிறது.
--- - 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'
பிளேபுக் டெக்மிண்ட்.கான்ஃப்/etc/files/அடைவிலிருந்து/srv/அடைவுக்கு டெக்மிண்ட் பயனராக 0644 அனுமதிகளுடன் நகலெடுக்கிறது.
கடைசி வரியில் காட்டப்பட்டுள்ளபடி குறியீட்டு பிரதிநிதித்துவத்தைப் பயன்படுத்தி அனுமதிகளையும் குறிப்பிடலாம்.
--- - 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
முந்தைய எடுத்துக்காட்டில் உள்ள அனுமதிகள் கடைசி வரியில் காட்டப்பட்டுள்ளபடி குறிப்பிடப்படலாம், பயனருக்கு படிக்க மற்றும் எழுத அனுமதிகள் ஒதுக்கப்படுகின்றன, குழுவிற்கு எழுத அனுமதிகள் ஒதுக்கப்படுகின்றன, மேலும் உலகின் பிற பகுதிகளுக்கு வாசிப்பு அனுமதிகள் ஒதுக்கப்படுகின்றன.
கோப்பு தொகுதி
கோப்புகள் மற்றும் கோப்பகங்களை உருவாக்குதல், கோப்பு அனுமதிகளை ஒதுக்குதல் மற்றும் சிம்லிங்க்களை அமைத்தல் உள்ளிட்ட பல கோப்பு செயல்பாடுகளைச் செயல்படுத்த கோப்பு தொகுதி பயன்படுத்தப்படுகிறது.
--- - name: Change file ownership, group, and permissions file: path: /etc/tecmint.conf owner: tecmint group: tecmint mode: '0644'
மேலே உள்ள நாடகம்/etc அடைவு அமைப்பு அனுமதிகளில் 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
மேலே உள்ள நாடகம் ஒரு கோப்பகத்தை மீண்டும் மீண்டும் நீக்குகிறது.
Lineinfile தொகுதி
நீங்கள் ஒரு கோப்பில் ஒரு வரியை மாற்ற விரும்பும்போது lineinfile தொகுதி உதவியாக இருக்கும். இது ஏற்கனவே இருக்கும் வரியை மாற்ற முடியும்.
--- - name: Ensure SELinux is set to enforcing mode lineinfile: path: /etc/selinux/config regexp: '^SELINUX=' line: SELINUX=disabled
மேலே உள்ள நாடகம் SELINUX மதிப்பை முடக்கப்பட்டுள்ளது.
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/புரவலன் கோப்பில் 10.200.50.51 linux-console.net உள்ளீட்டை சேர்க்கிறது.
காப்பக தொகுதி
ஒற்றை அல்லது பல கோப்புகளின் சுருக்கப்பட்ட காப்பகத்தை உருவாக்க ஒரு காப்பக தொகுதி பயன்படுத்தப்படுகிறது. சுருக்க மூலமானது இலக்கு இலக்கில் இருப்பதாக அது கருதுகிறது. காப்பகத்திற்குப் பிறகு, மூலக் கோப்பை பின்னர் நீக்கலாம் அல்லது 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
மேலே உள்ள நாடகத்தில், காப்பகம் முடிந்ததும் மூல கோப்பு/பாதை/முதல்/டெக்மிண்ட் நீக்கப்படும்.
- name: Create a bz2 archive of /path/to/tecmint archive: path: /path/to/tecmint format: bz2
இது/பாதை/க்கு/டெக்மிண்ட் கோப்பிலிருந்து bz2 வடிவத்தில் சுருக்கப்பட்ட கோப்பை உருவாக்குகிறது.
கிட் தொகுதி
மென்பொருள் களஞ்சியங்களின் கிட் செக்அவுட்களை தொகுதி நிர்வகிக்கிறது.
- git: repo: 'https://foosball.example.org/path/to/repo.git' dest: /srv/checkout version: release-0.22
கட்டளை தொகுதி
மிகவும் பொதுவாக பயன்படுத்தப்படும் தொகுதிகளில் ஒன்று, கட்டளை தொகுதி கட்டளை பெயரை எடுத்து பின்னர் வாதங்களின் பட்டியலை எடுக்கும். கட்டளை என்பது நீங்கள் லினக்ஸ் ஷெல்லில் தட்டச்சு செய்யும் அதே வழியில் கடந்துவிட்டது.
- 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
கட்டளை தொகுதி தொலை சேவையகங்களின் நேரத்தை மீட்டெடுக்கிறது.
இயங்கும் கட்டளைகளின் முடிவுகளை மீட்டெடுப்பதற்கான மாறிகள்
வழக்கமாக, கட்டளை வரியில் வெளியீட்டைக் காட்டாமல் நிர்வகிக்கப்பட்ட ஹோஸ்ட்களில் பணிகளை இயக்க அன்சிபிள் பிளேபுக்குகள் பயன்படுத்தப்படுகின்றன. எவ்வாறாயினும், வெளியீடு அல்லது முடிவுகளைப் பிடிக்க நீங்கள் தேவைப்படக்கூடிய நிகழ்வுகள் உள்ளன. இந்த பிரிவில், ஒரு பிளேபுக்கின் வெளியீட்டை ஒரு மாறியில் எவ்வாறு கைப்பற்றலாம், பின்னர் அதைக் காண்பிக்கலாம்.
ஒரு பணியின் வெளியீட்டைப் பிடிக்கவும், அதை ஒரு மாறியைச் சேமிக்கவும் ஒரு பதிலளிக்கக்கூடிய பதிவு பயன்படுத்தப்படுகிறது. மாறி பின்னர் பணியின் நிலைப்பாட்டைக் கொண்டிருக்கும்.
உதாரணமாக, df -Th/
கட்டளையைப் பயன்படுத்தி அந்தந்த ரூட் கோப்பகங்களில் நிர்வகிக்கப்பட்ட முனைகளின் வட்டு பயன்பாட்டை நீங்கள் சரிபார்க்க வேண்டும் என்று வைத்துக் கொள்வோம். கட்டளையை வரையறுக்க நீங்கள் ‘கட்டளை’ குறியீடு> தொகுதியைப் பயன்படுத்தப் போகிறீர்கள் மற்றும் ஒரு மாறியில் std வெளியீட்டைச் சேமிக்க
‘பதிவு’ குறியீடு> ஐப் பயன்படுத்தப் போகிறீர்கள்.
கட்டளையைக் காண்பிக்க, நீங்கள் stdout திரும்ப மதிப்புடன் ‘பிழைத்திருத்தம்’ குறியீடு> தொகுதியைப் பயன்படுத்துவீர்கள்.
--- - 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
நீங்கள் பார்த்தபடி, வெளியீடு அனைத்தும் தடுமாறி, அதைப் பின்தொடர்வது கடினம்.
வெளியீட்டை சீரமைக்கவும், படிப்பதை எளிதாக்கவும், stdout திரும்ப மதிப்பை stdout_lines உடன் மாற்றவும்.
--- - hosts: all become: yes tasks: - name: Execute /boot usage on Hosts command: 'df -Th /' register: df - debug: var=df.stdout_lines
ப்ளே மரணதண்டனை கட்டுப்படுத்த நிபந்தனைகளைப் பயன்படுத்தவும்
நிரலாக்க மொழிகளில் உள்ளதைப் போலவே, ஒன்றுக்கு மேற்பட்ட முடிவுகள் சாத்தியமானபோது நிபந்தனை அறிக்கைகள் பயன்படுத்தப்படுகின்றன. அன்சிபில் பிளேபுக்குகளில் பொதுவாகப் பயன்படுத்தப்படும் சில நிபந்தனை அறிக்கைகளைப் பார்ப்போம்.
சில நேரங்களில், நீங்கள் குறிப்பிட்ட முனைகளில் பணிகளைச் செய்ய விரும்பலாம், மற்றவர்கள் அல்ல. போது
நிபந்தனை அறிக்கை ஒரு பிளேபுக்கில் பயன்படுத்த மற்றும் செயல்படுத்த மிகவும் எளிதானது. போது
உட்பிரிவைப் பயன்படுத்தும் போது, பிரிவுக்கு அருகில் உள்ள நிலையை காட்டப்பட்டுள்ளபடி அறிவிக்கவும்:
when: condition
நிபந்தனை பூர்த்தி செய்யப்படும்போது, தொலைநிலை கணினியில் பணி செய்யப்படுகிறது.
சில எடுத்துக்காட்டுகளைப் பார்ப்போம்:
--- - hosts: all tasks: - name: Install Nginx on Debian apt: name=nginx state=present when: ansible_os_family == “Debian”
மேலே உள்ள நாடகம் டெபியன் குடும்பமான டிஸ்ட்ரோக்களை இயக்கும் ஹோஸ்ட்களில் Nginx வெப்சர்வரை நிறுவுகிறது.
நிபந்தனை அறிக்கையின் போது நீங்கள் 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
ஆபரேட்டரைப் பயன்படுத்தும் போது, பணி செயல்படுத்தப்படுவதற்கு இரண்டு அறிக்கைகளும் திருப்தி அடைய வேண்டும்.
மேலேயுள்ள நாடகம், டெபியன் குடும்ப OS ஐ இயக்கும் நோட்ஸில் Nginx ஐ நிறுவுகிறது, இது பதிப்பு 18.04 ஆகும். வெளிப்படையாக, இது உபுண்டு 18.04 ஆக இருக்கும்.
அல்லது
ஆபரேட்டருடன், நிபந்தனைகள் ஏதேனும் பூர்த்தி செய்யப்பட்டால் பணி செயல்படுத்தப்படுகிறது.
--- - 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 வெப்சர்வர்களை நிறுவுகிறது.
குறிப்பு: ஒரு நிபந்தனையை சோதிக்கும்போது ==
என்ற இரட்டை சமத்துவ அடையாளத்தைப் பயன்படுத்துவதை எப்போதும் உறுதிப்படுத்தவும்.
சுழல்களில் நிபந்தனைகள்
நிபந்தனைகளை ஒரு வளையத்திலும் பயன்படுத்தலாம். தொலை முனைகளில் நிறுவப்பட வேண்டிய பல தொகுப்புகளின் பட்டியல் உங்களிடம் உள்ளது என்று சொல்லுங்கள்.
கீழேயுள்ள பிளேபுக்கில், நிறுவப்பட வேண்டிய தொகுப்புகளின் பட்டியலைக் கொண்ட தொகுப்புகள் எனப்படும் ஒரு வரிசை உள்ளது. தேவையான பிரிவு உண்மை என அமைக்கப்பட்டால், இந்த பணிகள் ஒன்றன் பின் ஒன்றாக மேற்கொள்ளப்படும்.
--- - 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 }}”
பிழை கையாளுதலை உள்ளமைக்கவும்
சில நேரங்களில், பிளேபுக்குகளை இயக்கும் போது பணிகள் தோல்வியடையும். கீழே உள்ள பிளேபுக்கில் காட்டப்பட்டுள்ளபடி 3 சேவையகங்களில் 5 பணிகளை இயக்குகிறீர்கள் என்று வைத்துக் கொள்வோம். சேவையகம் 2 இல் பணி 3 (MySQL ஐத் தொடங்குதல்) இல் பிழை ஏற்பட்டால், சேவையகம் 2 இல் மீதமுள்ள பணிகளைச் செய்வதை அன்சிபில் நிறுத்தி, மீதமுள்ள சேவையகங்களில் மீதமுள்ள பணிகளை முடிக்க முயற்சிக்கும்.
--- - 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:
இந்த வழியில், ஒரு சேவையகத்தில் ஒரு பணி தோல்வியுற்றால், அன்சிபில் அனைத்து சேவையகங்களிலும் முழு பிளேபுக்கையும் செயல்படுத்துவதை நிறுத்திவிட்டு வெளியேறும்.
பிளேபுக் பிழைகளை புறக்கணித்து, மீதமுள்ள பணிகளைச் செய்ய நீங்கள் விரும்பினால், புறக்கணிப்பு_ பிழைகள்: உண்மை விருப்பத்தைப் பயன்படுத்தவும்.
--- - name: Install Software packages hosts: server1, server2, server3 tasks: - name: Install dependencies << some code >> ignore_errors: True
ஒரு குறிப்பிட்ட நிலைக்கு அமைப்புகளை உள்ளமைக்க பிளேபுக்குகளை உருவாக்கவும்
இந்த பிரிவில், பிளேபுக்கை இயக்கும் போது கிடைக்கும் சில கூடுதல் விருப்பங்களைப் பார்ப்போம்.
காசோலை முறை அல்லது உலர் ரன் விருப்பத்துடன் தொடங்கலாம். ஏதேனும் பிழைகள் ஏற்படுமா மற்றும் நிர்வகிக்கப்பட்ட ஹோஸ்ட்களில் ஏதேனும் மாற்றங்கள் செய்யப்படுமா என்பதை அறிய பிளேபுக்கை இயக்கும் போது உலர் ரன் அல்லது காசோலை முறை விருப்பம் பயன்படுத்தப்படுகிறது. இருப்பினும், இது தொலை முனைகளில் எந்த மாற்றங்களையும் செய்யாது.
எடுத்துக்காட்டாக, அப்பாச்சி வெப்சர்வர் இயக்கத்தை நிறுவி தொடங்கும் httpd.yml
என்ற பிளேபுக்கை உலர வைக்க:
# ansible-playbook httpd.yml --check
நாம் கவனிக்க வேண்டிய மற்ற விருப்பம் --start-at-task
விருப்பமாகும். பிளேபுக் தொடங்க அல்லது தொடங்க வேண்டிய பணியின் பெயரைக் குறிப்பிடும்போது இது பயன்படுத்தப்படுகிறது.
ஒரு எடுத்துக்காட்டை எடுத்துக்கொள்வோம்: கீழேயுள்ள பிளேபுக் 2 பணிகளை உச்சரிக்கிறது: முதல் நாடகம் அப்பாச்சி வலை சேவையகத்தை நிறுவுகிறது, இரண்டாவது ஹாட்டாப் பயன்பாட்டை நிறுவுகிறது.
--- - name: Install httpd hosts: all tasks: yum: name: httpd state: Installed - name: Install htop yum: name: htop state: started
நீங்கள் அப்பாச்சி வெப்சர்வரை நிறுவுவதைத் தவிர்த்து, அதற்கு பதிலாக htop பயன்பாட்டு ரன் நிறுவ விரும்பினால்:
# ansible-playbook playbook.yml --start-at-task “Install htop”
கடைசியாக, காட்டப்பட்டுள்ளபடி உங்கள் பிளேபுக்கில் குறிச்சொற்களை விருப்பத்தை சேர்ப்பதன் மூலம் உங்கள் பணிகள் அல்லது நாடகங்களை குறிக்கலாம். உங்களிடம் மிகப் பெரிய பிளேபுக் இருக்கும்போது இது எளிது, மேலும் முழு பிளேபுக்கிலிருந்தும் குறிப்பிட்ட பணிகளை இயக்க விரும்புகிறீர்கள்.
--- - 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"
இந்த தலைப்பில், அன்சிபில் பொதுவாகப் பயன்படுத்தப்படும் தொகுதிகள், பகுப்பாய்விற்கான பிளேபுக்கை செயல்படுத்துவதிலிருந்து ஸ்டேடவுட்டை எவ்வாறு மீட்டெடுப்பது, பிளேபுக்கில் நிபந்தனைகளைப் பயன்படுத்துதல் மற்றும் பணிகளை இயக்கும் போது ஏற்படக்கூடிய பிழைகளை எவ்வாறு நிர்வகிப்பது என்பவற்றின் மூலம் நாங்கள் உங்களை அழைத்துச் சென்றோம். கடைசியாக, பிளேபுக்குகளின் உள்ளமைவை நாங்கள் மறுபரிசீலனை செய்தோம், மேலும் முழு பிளேபுக்கையும் இயக்க விரும்பவில்லை என்றால் எந்த பணிகளை இயக்க வேண்டும் என்பதை தீர்மானிக்க கூடுதல் விருப்பங்களை எவ்வாறு பயன்படுத்தலாம்.