அன்சிபிள் மாறிகள் மற்றும் உண்மைகளுடன் எவ்வாறு செயல்படுவது - பகுதி 8


இந்த அன்சிபில் தொடரில் மாறிகளைக் குறிப்பிட்டுள்ளோம், மேலும் உங்கள் மனதைக் கொஞ்சம் கொஞ்சமாகத் தூண்டலாம். பல நிரலாக்க மொழிகளைப் போலவே ஒரு மாறி, அடிப்படையில் ஒரு மதிப்பைக் குறிக்கும் ஒரு விசையாகும்.

செல்லுபடியாகும் மாறி பெயரைக் குறிப்பது எது?

ஒரு மாறி பெயரில் எழுத்துக்கள், எண்கள், அடிக்கோடிட்டுக் காட்டுதல் அல்லது 2 அல்லது அவை அனைத்தும் கலந்திருக்கும். இருப்பினும், ஒரு மாறி பெயர் எப்போதும் ஒரு எழுத்துடன் தொடங்க வேண்டும் மற்றும் இடைவெளிகளைக் கொண்டிருக்கக்கூடாது என்பதை நினைவில் கொள்ளுங்கள்.

செல்லுபடியாகும் மற்றும் ஏற்றுக்கொள்ள முடியாத மாறி பெயர்களின் சில எடுத்துக்காட்டுகளைப் பார்ப்போம்:

football 
foot_ball
football20 
foot_ball20
foot ball
20 
foot-ball

மாறி வகைகளைப் பற்றி விவாதிக்கலாம்:

1. பிளேபுக் மாறிகள்

பிளேபுக் மாறிகள் மிகவும் எளிதானவை மற்றும் நேரடியானவை. ஒரு பிளேபுக்கில் ஒரு மாறியை வரையறுக்க, உங்கள் மாறிகளை உள்தள்ளலுடன் எழுதுவதற்கு முன்பு vars என்ற முக்கிய சொல்லைப் பயன்படுத்தவும்.

மாறியின் மதிப்பை அணுக, மேற்கோள் மதிப்பெண்களுடன் இணைக்கப்பட்ட இரட்டை சுருள் பிரேஸ்களுக்கு இடையில் வைக்கவும்.

ஒரு எளிய பிளேபுக் உதாரணம் இங்கே:

- hosts: all
  vars:
    greeting: Hello world! 

  tasks:
  - name: Ansible Basic Variable Example
    debug:
      msg: "{{ greeting }}"

மேலே உள்ள பிளேபுக்கில், வாழ்த்து மாறி வணக்கம் உலக மதிப்பால் மாற்றப்பட்டுள்ளது! பிளேபுக் இயங்கும் போது. விளையாட்டு புத்தகம் வெறுமனே வணக்கம் உலகம் என்ற செய்தியை அச்சிடுகிறது! செயல்படுத்தப்படும் போது.

கூடுதலாக, காட்டப்பட்டுள்ளபடி நீங்கள் ஒரு பட்டியல் அல்லது மாறிகளின் வரிசையை வைத்திருக்கலாம்:

கீழேயுள்ள பிளேபுக் கண்டங்கள் எனப்படும் மாறியைக் காட்டுகிறது. மாறி 5 வெவ்வேறு மதிப்புகளைக் கொண்டுள்ளது - கண்ட பெயர்கள். இந்த மதிப்புகள் ஒவ்வொன்றும் முதல் மாறியாக குறியீட்டு 0 ஐப் பயன்படுத்தி எளிதாக அணுகலாம்.

கீழேயுள்ள பிளேபுக்கின் எடுத்துக்காட்டு ஆசியாவை மீட்டெடுக்கிறது மற்றும் காட்டுகிறது (அட்டவணை 1).

- hosts: all
  vars:
    continents:
      - Africa
      - Asia
      - South America
      - North America
      - Europe
      
  tasks:
  - name: Ansible List variable Example
    debug:
      msg: "{{ continents [1] }}"

மாறி பட்டியல் காட்டப்பட்டுள்ளபடி இதேபோல் கட்டமைக்கப்படலாம்:

vars:
    Continents: [Africa, Asia, South America, North America, Europe]

பட்டியலில் உள்ள அனைத்து உருப்படிகளையும் பட்டியலிட, with_items தொகுதியைப் பயன்படுத்தவும். இது வரிசையில் உள்ள அனைத்து மதிப்புகள் வழியாகவும் சுழலும்.

- hosts: all
  vars:
    continents: [Africa, Asia, South America, North America, Europe]

  tasks:
  - name: Ansible array variables example
    debug: 
      msg: "{{ item }}"
    with_items:
      - "{{ continents }}"

அன்சிபிள் மாறியின் மற்றொரு வகை அகராதி மாறி.

அகராதி மாறிகள் கூடுதலாக பிளேபுக்கில் ஆதரிக்கப்படுகின்றன. அகராதி மாறியை வரையறுக்க, அகராதி மாறி பெயருக்குக் கீழே விசை மதிப்பு ஜோடியை அடையாளம் காணவும்.

hosts: switch_f01

vars:
   http_port: 8080
   default_gateway: 10.200.50.1
   vlans:
       id: 10
       port: 2

மேலே உள்ள எடுத்துக்காட்டில், vlans என்பது அகராதி மாறி, ஐடி மற்றும் போர்ட் முக்கிய மதிப்பு ஜோடிகளாகும்.

hosts: switch_f01

vars:
   http_port: 8080
   default_gateway: 
   vlans:
      id: 10
      port: 20

 tasks:
   name: Configure default gateway
   system_configs:
   default_gateway_ip: “{{ default_gateway  }}“


   name: Label port on vlan 10
   vlan_config:
	vlan_id: “{{ vlans[‘id’]  }}“
     port_id: 1/1/ {{ vlans[‘port’]  }}

போர்ட்_ஐடியைப் பொறுத்தவரை, நாம் மதிப்பை உரையுடன் தொடங்குகிறோம், மாறி அல்ல, சுருள் பிரேஸ்களைச் சுற்றி மேற்கோள் குறிகள் தேவையில்லை.

2. சிறப்பு மாறிகள்

ஜின்ஜா 2 வார்ப்புருக்கள் மற்றும் பிளேபுக்குகளில் குறிப்பிடப்படக்கூடிய முன் வரையறுக்கப்பட்ட மாறிகள் பட்டியலை அன்சிபிள் வழங்குகிறது, ஆனால் பயனரால் மாற்றவோ வரையறுக்கவோ முடியாது.

கூட்டாக, அன்சிபிள் முன் வரையறுக்கப்பட்ட மாறிகள் பட்டியல் அன்சிபிள் உண்மைகள் என குறிப்பிடப்படுகிறது மற்றும் ஒரு பிளேபுக் செயல்படுத்தப்படும் போது இவை சேகரிக்கப்படுகின்றன.

அனைத்து அன்சிபிள் மாறிகள் பட்டியலைப் பெற, கீழே காட்டப்பட்டுள்ளபடி அன்சிபில் தற்காலிக கட்டளையில் அமைவு தொகுதியைப் பயன்படுத்தவும்:

# ansible -m setup hostname

இது காட்டப்பட்டுள்ளபடி வெளியீட்டை JSON வடிவத்தில் காட்டுகிறது:

# ansible -m setup localhost

வெளியீட்டில் இருந்து, அன்சிபிள் சிறப்பு மாறிகள் சில எடுத்துக்காட்டுகள் பின்வருமாறு:

ansible_architecture
ansible_bios_date
ansible_bios_version
ansible_date_time
ansible_machine
ansible_memefree_mb
ansible_os_family
ansible_selinux

இன்னும் பல அன்சிபிள் சிறப்பு மாறிகள் உள்ளன, இவை ஒரு சில எடுத்துக்காட்டுகள்.

இந்த மாறிகள் ஒரு ஜின்ஜா 2 வார்ப்புருவில் காட்டப்பட்டுள்ளபடி பயன்படுத்தப்படலாம்:

<html>
<center>
   <h1> The hostname of this webserver is {{ ansible_hostname }}</h1>
   <h3> It is running on {{ ansible_os_family}}system </h3>
</center>
</html>

3. சரக்கு மாறிகள்

கடைசியாக, பட்டியலில், எங்களிடம் அன்சிபிள் சரக்கு மாறிகள் உள்ளன. ஒரு சரக்கு என்பது ஐ.என்.ஐ வடிவமைப்பில் உள்ள ஒரு கோப்பு, இது அன்சிபால் நிர்வகிக்க வேண்டிய அனைத்து ஹோஸ்ட்களையும் கொண்டுள்ளது.

சரக்குகளில், நீங்கள் ஒரு ஹோஸ்ட் அமைப்புக்கு ஒரு மாறியை ஒதுக்கலாம், பின்னர் அதை ஒரு பிளேபுக்கில் பயன்படுத்தலாம்.

[web_servers]

web_server_1 ansible_user=centos http_port=80
web_server_2 ansible_user=ubuntu http_port=8080

மேலே காட்டப்பட்டுள்ளபடி பிளேபுக் YAML கோப்பில் குறிப்பிடலாம்:

---
   web_servers:
     web_server_1:
        ansible_user=centos
	   http_port=80

web_server_2:
        ansible_user=ubuntu
	   http_port=8080

ஹோஸ்ட் அமைப்புகள் ஒரே மாதிரியான மாறிகளைப் பகிர்ந்து கொண்டால், சரக்குக் கோப்பில் மற்றொரு குழுவை வரையறுக்கலாம், இது குறைவான சிக்கலானதாக இருக்கும் மற்றும் தேவையற்ற மறுபடியும் தவிர்க்கலாம்.

உதாரணத்திற்கு:

[web_servers]

web_server_1 ansible_user=centos http_port=80
web_server_2 ansible_user=centos http_port=80

மேலே உள்ளவற்றை இவ்வாறு கட்டமைக்க முடியும்:

[web_servers]
web_server_1
web_server_2


[web_servers:vars]
ansible_user=centos
http_port=80

பிளேபுக் YAML கோப்பில், இது காட்டப்பட்டுள்ளபடி வரையறுக்கப்படும்:

---
   web_servers:
    
     hosts: 
       web_server_1:
	  web_server_2:

     vars: 
        ansible_user=centos
   http_port=80

பொருந்தக்கூடிய உண்மைகள்

பிளேபுக்குகளை இயக்கும் போது, அன்சிபிள் செய்யும் முதல் பணி அமைவு பணியை நிறைவேற்றுவதாகும். நீங்கள் வெளியீட்டைக் கண்டிருக்க வேண்டும் என்று நான் உறுதியாக நம்புகிறேன்:

TASK:  [Gathering facts] *********

பொருந்தக்கூடிய உண்மைகள் கணினி பண்புகள் அல்லது நீங்கள் இணைத்துள்ள தொலைநிலை முனைகளைப் பற்றிய தகவல்களைத் தவிர வேறில்லை. இந்த தகவலில் கணினி கட்டமைப்பு, ஓஎஸ் பதிப்பு, பயாஸ் தகவல், கணினி நேரம் மற்றும் தேதி, கணினி நேரம், ஐபி முகவரி மற்றும் வன்பொருள் தகவல்கள் ஆகியவை அடங்கும்.

எந்தவொரு அமைப்பையும் பற்றிய உண்மைகளைப் பெற, கீழேயுள்ள கட்டளையில் காட்டப்பட்டுள்ளபடி அமைவு தொகுதியைப் பயன்படுத்தவும்:

# ansible -m setup hostname

உதாரணத்திற்கு:

# ansible -m setup database_server

இது காட்டப்பட்டுள்ளபடி JSON வடிவத்தில் ஒரு பெரிய தரவை அச்சிடுகிறது:

எந்தெந்த செயல்பாடுகளைச் செய்ய வேண்டும் என்று கணினி நிர்வாகிகளுக்கு உதவுவதில் பொருந்தக்கூடிய உண்மைகள் எளிது, எடுத்துக்காட்டாக, இயக்க முறைமையைப் பொறுத்து, எந்த மென்பொருள் தொகுப்புகள் நிறுவப்பட வேண்டும், அவை எவ்வாறு கட்டமைக்கப்பட வேண்டும் போன்றவற்றை அவர்கள் அறிந்து கொள்ள முடியும்.

தனிப்பயன் உண்மைகள்

அன்சிபால் சேகரிக்கக்கூடிய உங்கள் சொந்த தனிப்பயன் உண்மைகளை நீங்கள் உருவாக்க முடியும் என்பதும் உங்களுக்குத் தெரியுமா? ஆமாம் உன்னால் முடியும். எனவே நீங்கள் அதை எப்படிப் போகிறீர்கள்? கியர்களை மாற்றி, எப்படி என்று பார்ப்போம்.

நிர்வகிக்கப்பட்ட அல்லது தொலைநிலை முனையில் /etc/ansible/facts.d கோப்பகத்தை உருவாக்குவது முதல் படி.

இந்த கோப்பகத்தின் உள்ளே, .fact நீட்டிப்புடன் ஒரு கோப்பை (களை) உருவாக்கவும். பிளேபுக் அன்சிபிள் கண்ட்ரோல் நோட்டில் இயங்கும் போது இந்த கோப்பு (கள்) JSON தரவை வழங்கும், இது ஒரு பிளேபுக் இயங்கிய பின் அன்சிபில் மீட்டெடுக்கும் பிற உண்மைகளை உள்ளடக்கியது.

தேதி மற்றும் நேரத்தை மீட்டெடுக்கும் date_time.fact எனப்படும் தனிப்பயன் உண்மை கோப்பின் எடுத்துக்காட்டு இங்கே.

# mkdir -p /etc/ansible/facts.d
# vim /etc/ansible/facts.d/date_time.fact

அதில் பின்வரும் வரிகளைச் சேர்க்கவும்.

#!/bin/bash
DATE=`date`
echo "{\"date\" : \"${DATE}\"}"

கோப்பை சேமித்து வெளியேறவும்.

இப்போது இயக்க அனுமதிகளை ஒதுக்கவும்:

# chmod +x /etc/ansible/facts.d/date_time.fact

இப்போது, நான் check_date.yml எனப்படும் அன்சிபில் கட்டுப்பாட்டு முனையில் ஒரு பிளேபுக்கை உருவாக்கினேன்.

---

- hosts: webservers

  tasks:
   - name: Get custom facts
     debug:
      msg: The custom fact is {{ansible_local.date_time}}

உண்மை கோப்பை ansible_local variable க்கு சேர்க்கவும். எல்லா தனிப்பயன் உண்மைகளையும் ansible_local சேமிக்கிறது.

இப்போது பிளேபுக்கை இயக்கி, உண்மை கோப்பில் சேமிக்கப்பட்ட அன்சிபிள் மீட்டெடுக்கும் தகவலைக் கவனியுங்கள்:

# ansible_playbook check_date.yml

அன்சிபிள் மாறிகள் மற்றும் உண்மைகளுடன் பணிபுரிவது குறித்த இந்த டுடோரியலின் முடிவுக்கு இது நம்மை அழைத்துச் செல்கிறது.