நிர்வகிக்கப்பட்ட முனைகளில் உள்ளமைவுகளை உருவாக்குவதற்கு பொருந்தக்கூடிய வகையில் வார்ப்புருக்களை உருவாக்குவது எப்படி - பகுதி 7


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

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

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

அது ஒரு பொதுவான உதாரணம். டைனமிக் உள்ளடக்கம் அல்லது வெளிப்பாடுகளை உருவாக்கப் பயன்படுத்தப்படும் பைதான் கட்டமைப்பிற்கான நவீன வார்ப்புரு இயந்திரமான ஜின்ஜா 2 ஐ அன்சிபிள் பயன்படுத்துகிறது. பல சேவையகங்களுக்கான தனிப்பயன் உள்ளமைவு கோப்புகளை உருவாக்கும் போது வார்ப்புரு மிகவும் பயனுள்ளதாக இருக்கும், ஆனால் அவை ஒவ்வொன்றிற்கும் தனித்துவமானது.

வரையறுக்கப்பட்ட ஒரு மாறியை இணைக்க ஜின்ஜா 2 இரட்டை சுருள் பிரேஸ்களைப் பயன்படுத்துகிறது {{...}} . கருத்துகளுக்கு, {{# #} ஐப் பயன்படுத்தவும் மற்றும் நிபந்தனை அறிக்கைகளுக்கு {%…%} ஐப் பயன்படுத்தவும்.

உங்கள் நெட்வொர்க்கில் VLAN களின் தரவு மாதிரி ஹோஸ்ட் அமைப்புகளுடன் உள்ளது என்று வைத்துக் கொள்வோம், அவை காட்டப்பட்டுள்ளபடி அந்தந்த VLAN களுக்கு நீங்கள் தள்ள விரும்புகிறீர்கள்.

vlans:
  - id: 10
    name: LB
  - id: 20
    name: WB_01
  - id: 30
    name: WB_02
  - id: 40
    name: DB

இந்த உள்ளமைவை வழங்க, vlans.j2 எனப்படும் தொடர்புடைய ஜின்ஜா 2 வார்ப்புரு காட்டப்பட்டுள்ளபடி தோன்றும். நீங்கள் பார்க்க முடியும் என, மாறிகள் vlan.id மற்றும் vlan.name சுருள் பிரேஸ்களில் இணைக்கப்பட்டுள்ளன.

vlan {{ vlan.id }}
  name {{ vlan.name }}

வெவ்வேறு ஹோஸ்ட் இயந்திரங்களை வைக்கும் பிளேபுக்கில் அனைத்தையும் ஒன்றாக இணைத்தால், இது காட்டப்பட்டுள்ளபடி தோன்றும்:

    - hosts
  tasks:
    - name: Rendering VLAN configuration
      template:
         src: vlans.j2
         dest: "vlan_configs/{{ inventory_hostname }}.conf"

எடுத்துக்காட்டு 1: வெவ்வேறு டிஸ்ட்ரோக்களில் வலை சேவையகங்களை கட்டமைத்தல்

இந்த எடுத்துக்காட்டில், CentOS & Ubuntu இயங்கும் 2 வலை சேவையகங்களின் ஹோஸ்ட்பெயர் மற்றும் OS பற்றிய தகவல்களைக் காண்பிக்கும் index.html கோப்புகளை உருவாக்குவோம்.

Ubuntu 18 - IP address: 173.82.202.239
CentOS 7 -  IP address: 173.82.115.165

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

எனவே காட்டப்பட்டுள்ளபடி ஒரு பிளேபுக்கை test_server.yml ஐ உருவாக்குவோம்:

---

 - hosts: all
   become: yes

   tasks:

    - name: Install index.html
      template:
        src: index.html.j2
        dest: /var/www/html/index.html
        mode: 0777

எங்கள் ஜின்ஜா கோப்பு வார்ப்புரு index.html.j2 ஆகும், இது ஒவ்வொரு வெப்சர்வரிலும் உள்ள index.html கோப்பில் தள்ளப்படும். இது ஒரு ஜின்ஜா 2 கோப்பு என்பதைக் குறிக்க .j2 நீட்டிப்பை இறுதியில் வைக்க எப்போதும் நினைவில் கொள்ளுங்கள்.

இப்போது வார்ப்புரு கோப்பை index.html.j2 ஐ உருவாக்குவோம்.

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

இந்த வார்ப்புரு ஒரு அடிப்படை HTML கோப்பாகும், அங்கு ansible_hostname மற்றும் ansible_os_family ஆகியவை உள்ளமைக்கப்பட்ட மாறிகள், அவை உலாவியில் உள்ள தனிப்பட்ட வலை சேவையகங்களின் அந்தந்த ஹோஸ்ட்பெயர்கள் மற்றும் இயக்க முறைமைகளுக்கு மாற்றாக இருக்கும்.

இப்போது, பிளேபுக்கை இயக்குவோம்.

# ansible-playbook test_server.yml

இப்போது CentOS 7 மற்றும் உபுண்டு வலை சேவையகங்களுக்கான வலைப்பக்கங்களை மீண்டும் ஏற்றலாம்.

நீங்கள் பார்க்க முடியும் என, OS இன் ஹோஸ்ட் பெயர் மற்றும் குடும்பத்தைப் பற்றிய வெவ்வேறு தகவல்கள் ஒவ்வொரு சேவையகத்திலும் காட்டப்படும். ஜின்ஜா 2 வார்ப்புரு எவ்வளவு அருமையாக இருக்கிறது!

வடிப்பான்கள்:

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

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

{{ ansible_hostname | upper }} => CENTOS 7
{{ ansible_os_family | upper }} => REDHAT

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

{{ ansible_hostname | lower }}  => centos 7
{{ ansible_os_family | lower }} => redhat

கூடுதலாக, நீங்கள் ஒரு சரத்தை இன்னொருவருடன் மாற்றலாம்.

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

திரைப்படத்தின் தலைப்பு {{movie_name}} => திரைப்படத்தின் தலைப்பு ரிங்.

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

திரைப்படத்தின் தலைப்பு {{movie_name | replace ("Ring", "Heist")}} => திரைப்படத்தின் தலைப்பு ஹீஸ்ட்.

ஒரு வரிசையில் மிகச்சிறிய மதிப்பை மீட்டெடுக்க, நிமிடம் வடிப்பானைப் பயன்படுத்தவும்.

{{ [ 2, 3, 4, 5, 6, 7 ] | min }}	=>	2

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

{{ [ 2, 3, 4, 5, 6, 7 ] | max }}	=>	7

தனிப்பட்ட மதிப்புகளைக் காட்ட, தனிப்பட்ட வடிப்பானைப் பயன்படுத்தவும்.

{{ [ 2, 3, 3, 2, 6, 7 ] | unique }} =>	2, 3

0 மற்றும் மதிப்புக்கு இடையில் ஒரு சீரற்ற எண்ணைப் பெற சீரற்ற வடிப்பானைப் பயன்படுத்தவும்.

{{ 50 | random }} =>  Some random number

லூப்ஸ்:

நிரலாக்க மொழிகளில் உள்ளதைப் போலவே, அன்சிபில் ஜின்ஜா 2 இல் சுழல்கள் உள்ளன.

எடுத்துக்காட்டாக, எண்களின் பட்டியலைக் கொண்ட ஒரு கோப்பை உருவாக்க, கீழேயுள்ள எடுத்துக்காட்டில் காட்டப்பட்டுள்ளபடி for loop ஐப் பயன்படுத்தவும்:

{% for number in [0, 1, 2, 3, 4, 5, 6, 7]  %}
{{ number }}
{% end for %}

சில மதிப்புகளை வடிகட்டவும் பெறவும் if-else அறிக்கைகளுடன் for loop ஐ இணைக்கலாம்.

{% for number in [0, 1, 2, 3, 4, 5, 6, 7]  %}
{% if number == 5 %}
         {{ number }}
{% endif%}
{% endfor %}

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