நாம் அனைவரும் Ansible ஐ விரும்புகிறோம், ஆனால் Ansible என்பது YAML. உள்ளமைவு கோப்புகளுக்கு பல வடிவங்கள் உள்ளன: மதிப்புகளின் பட்டியல்கள், அளவுரு-மதிப்பு ஜோடிகள், INI கோப்புகள், YAML, JSON, XML மற்றும் பல. இருப்பினும், அவை அனைத்திலும் பல காரணங்களுக்காக, YAML பெரும்பாலும் கடினமாக கருதப்படுகிறது. குறிப்பாக, அதன் புத்துணர்ச்சியூட்டும் மினிமலிசம் மற்றும் படிநிலை மதிப்புகளுடன் வேலை செய்வதற்கான ஈர்க்கக்கூடிய திறன்கள் இருந்தபோதிலும், YAML தொடரியல் உள்தள்ளலுக்கான பைதான் போன்ற அணுகுமுறையால் எரிச்சலூட்டும்.
YAML உங்களை கோபப்படுத்தினால், உங்களால் முடியும் - மற்றும் நீங்கள் செய்ய வேண்டும்! - உங்கள் விரக்தியை ஏற்றுக்கொள்ளக்கூடிய அளவிற்குக் குறைக்கவும், YAMLஐ காதலிக்கவும் பின்வரும் 10 படிகளை எடுக்கவும். இந்தப் பட்டியலுக்குத் தகுந்தாற்போல், எங்கள் பத்து குறிப்புகள் புதிதாக எண்ணப்படும், விருப்பப்படி தியானம் மற்றும் ஆன்மீகப் பயிற்சிகளைச் சேர்ப்போம் 😉
0. உங்கள் எடிட்டரை வேலை செய்யுங்கள்
உங்களிடம் எந்த உரை எடிட்டர் உள்ளது என்பது முக்கியமல்ல, YAML உடன் பணிபுரிய குறைந்தபட்சம் ஒரு செருகுநிரலாவது இருக்கலாம். உங்களிடம் ஒன்று இல்லையென்றால், உடனடியாக அதைக் கண்டுபிடித்து நிறுவவும். ஒவ்வொரு முறையும் நீங்கள் YAML ஐத் திருத்த வேண்டியதைத் தேடுவதற்கும் அமைப்பதற்கும் செலவழித்த நேரம் பல மடங்கு பலனைத் தரும்.
உதாரணமாக, ஆசிரியர்
YAML பயன்முறையில் Emacs மற்றும் இடைவெளிகளைக் காட்டுகிறது.
உங்களுக்கு பிடித்த எடிட்டருக்கு YAML பயன்முறை இல்லை என்றால், அமைப்புகளுடன் பணிபுரிவதன் மூலம் சில சிக்கல்களை தீர்க்க முடியும். எடுத்துக்காட்டாக, நிலையான GNOME உரை திருத்தியான Gedit இல் YAML பயன்முறை இல்லை, ஆனால் முன்னிருப்பாக இது YAML தொடரியலை முன்னிலைப்படுத்துகிறது மற்றும் உள்தள்ளல்களுடன் வேலையை உள்ளமைக்க உங்களை அனுமதிக்கிறது:
கெடிட்டில் உள்தள்ளல்களை அமைத்தல்.
ஒரு செருகுநிரல்
வேறு வார்த்தைகளில் கூறுவதானால், உங்களுக்கு பிடித்த எடிட்டரைப் பற்றி அறிய நேரத்தை செலவிடுங்கள். YAML உடன் பணிபுரிய அவர் அல்லது அவரது மேம்பாட்டு சமூகம் என்ன வழங்குகிறது என்பதைக் கண்டறிந்து, அந்த அம்சங்களைப் பயன்படுத்தவும். நீங்கள் நிச்சயமாக வருத்தப்பட மாட்டீர்கள்.
1. ஒரு லிண்டரைப் பயன்படுத்தவும்
வெறுமனே, நிரலாக்க மொழிகள் மற்றும் மார்க்அப் மொழிகள் யூகிக்கக்கூடிய தொடரியல் பயன்படுத்துகின்றன. கணிப்பொறிகள் முன்கணிப்பதில் சிறந்தவை, அதனால்தான் இதன் கருத்து
நிறுவ
$ sudo dnf install yamllint
பின்னர் நீங்கள் yamllint ஐ இயக்கவும், அதை சரிபார்க்க YAML கோப்பை அனுப்பவும். பிழையுடன் ஒரு கோப்பை லிண்டருக்கு அனுப்பினால் இது போல் தெரிகிறது:
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
இடதுபுறத்தில் உள்ள எண்கள் நேரம் அல்ல, ஆனால் பிழையின் ஆயத்தொலைவுகள்: வரிசை மற்றும் நெடுவரிசை எண். பிழையின் விளக்கம் உங்களுக்கு எதுவும் சொல்லாமல் இருக்கலாம், ஆனால் அது எங்கே என்று உங்களுக்குத் தெரியும். குறியீட்டில் இந்த இடத்தைப் பாருங்கள், பெரும்பாலும் எல்லாம் தெளிவாகிவிடும்.
yamllint ஒரு கோப்பில் பிழைகள் இல்லை எனில், திரையில் எதுவும் அச்சிடப்படாது. அத்தகைய மௌனம் உங்களை பயமுறுத்துகிறது மற்றும் இன்னும் கொஞ்சம் கருத்துக்களை நீங்கள் விரும்பினால், நீங்கள் இரட்டை ஆம்பர்சண்ட் (&&) வழியாக நிபந்தனை எதிரொலி கட்டளையுடன் லிண்டரை இயக்கலாம்:
$ yamllint perfect.yaml && echo "OK"
OK
POSIX இல், முந்தைய கட்டளை 0 ஐத் தந்தால் மட்டுமே இரட்டை ஆம்பர்சண்ட் எரிகிறது. மேலும் yamllint பிழைகளின் எண்ணிக்கையை மட்டுமே வழங்குகிறது, அதனால்தான் இந்த முழு நிபந்தனை கட்டமைப்பும் செயல்படுகிறது.
2. பைத்தானில் எழுதுங்கள், YAML அல்ல
YAML உண்மையில் உங்களை கோபப்படுத்தினால், அதில் எழுத வேண்டாம். பயன்பாடு புரிந்துகொள்ளும் ஒரே வடிவம் YAML ஆகும். ஆனால் இந்த விஷயத்தில் கூட, YAML கோப்பை உருவாக்க வேண்டிய அவசியமில்லை. நீங்கள் விரும்பியதை எழுதி பின்னர் மாற்றவும். உதாரணமாக, பைத்தானுக்கு ஒரு பெரிய நூலகம் உள்ளது
சுய மாற்றம்
இந்த வழக்கில், தரவுக் கோப்பு YAML ஐ உருவாக்கும் பைதான் ஸ்கிரிப்ட் ஆகும். இந்த முறை சிறிய தரவு தொகுப்புகளுக்கு மிகவும் பொருத்தமானது. நீங்கள் JSON தரவை ஒரு பைதான் மாறியில் எழுதி, அதை இறக்குமதி கட்டளையுடன் முன்னுரை செய்து, கோப்பின் முடிவில் வெளியீட்டைச் செயல்படுத்த மூன்று வரிகளைச் சேர்க்கவும்.
#!/usr/bin/python3
import yaml
d={
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
f=open('output.yaml','w')
f.write(yaml.dump(d))
f.close
இப்போது நாம் இந்த கோப்பை பைத்தானில் இயக்கி output.yaml கோப்பைப் பெறுகிறோம்:
$ python3 ./example.json
$ cat output.yaml
glossary:
GlossDiv:
GlossList:
GlossEntry:
Abbrev: ISO 8879:1986
Acronym: SGML
GlossDef:
GlossSeeAlso: [GML, XML]
para: A meta-markup language, used to create markup languages such as DocBook.
GlossSee: markup
GlossTerm: Standard Generalized Markup Language
ID: SGML
SortAs: SGML
title: S
title: example glossary
இது முற்றிலும் செல்லுபடியாகும் YAML ஆகும், ஆனால் yamllint உங்களை எச்சரிக்கும் வகையில் இது தொடங்கவில்லை -. சரி, இதை எளிதாக கைமுறையாக சரி செய்யலாம் அல்லது பைதான் ஸ்கிரிப்ட்டில் சிறிது மாற்றியமைக்கலாம்.
ஸ்கிரிப்டுகள் மூலம் மாற்றம்
இந்த வழக்கில், நாம் முதலில் JSON இல் எழுதுகிறோம், பின்னர் மாற்றியை ஒரு தனி பைதான் ஸ்கிரிப்டாக இயக்குகிறோம், இது YAML ஐ வெளியீட்டாக உருவாக்குகிறது. முந்தைய முறையுடன் ஒப்பிடுகையில், இந்த முறை சிறப்பாக அளவிடப்படுகிறது, ஏனெனில் மாற்றம் தரவுகளிலிருந்து தனித்தனியாக உள்ளது.
முதலில், JSON கோப்பை example.json உருவாக்குவோம், எடுத்துக்காட்டாக, நீங்கள் அதை எடுக்கலாம்
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
பின்னர் நாம் ஒரு எளிய மாற்றி ஸ்கிரிப்டை உருவாக்கி அதை json2yaml.py என்ற பெயரில் சேமிப்போம். இந்த ஸ்கிரிப்ட் YAML மற்றும் JSON பைதான் தொகுதிகள் இரண்டையும் இறக்குமதி செய்கிறது, மேலும் பயனர் குறிப்பிட்ட JSON கோப்பை ஏற்றுகிறது, மாற்றத்தை செய்கிறது மற்றும் output.yaml கோப்பில் தரவை எழுதுகிறது.
#!/usr/bin/python3
import yaml
import sys
import json
OUT=open('output.yaml','w')
IN=open(sys.argv[1], 'r')
JSON = json.load(IN)
IN.close()
yaml.dump(JSON, OUT)
OUT.close()
இந்த ஸ்கிரிப்டை கணினி பாதையில் சேமித்து தேவைக்கேற்ப இயக்கவும்:
$ ~/bin/json2yaml.py example.json
3. நிறைய மற்றும் அடிக்கடி அலசவும்
சில நேரங்களில் ஒரு பிரச்சனையை வேறு கோணத்தில் பார்ப்பது பயனுள்ளதாக இருக்கும். YAML இல் உள்ள உங்கள் தரவுகளுக்கு இடையிலான உறவுகளைப் பிரதிநிதித்துவப்படுத்துவதில் சிக்கல் இருந்தால், அதை தற்காலிகமாக மிகவும் பழக்கமானதாக மாற்றலாம்.
எடுத்துக்காட்டாக, நீங்கள் அகராதி பட்டியல்கள் அல்லது JSON உடன் பணிபுரிய வசதியாக இருந்தால், ஊடாடும் பைதான் ஷெல்லில் உள்ள இரண்டு கட்டளைகளுடன் YAML ஐ JSON ஆக மாற்றலாம். உங்களிடம் YAML கோப்பு mydata.yaml உள்ளது என்று வைத்துக் கொள்வோம், பிறகு அது எப்படி இருக்கும்:
$ python3
>>> f=open('mydata.yaml','r')
>>> yaml.load(f)
{'document': 34843, 'date': datetime.date(2019, 5, 23), 'bill-to': {'given': 'Seth', 'family': 'Kenlon', 'address': {'street': '51b Mornington Roadn', 'city': 'Brooklyn', 'state': 'Wellington', 'postal': 6021, 'country': 'NZ'}}, 'words': 938, 'comments': 'Good article. Could be better.'}
இந்த தலைப்பில் இன்னும் பல உதாரணங்களை நீங்கள் காணலாம். கூடுதலாக, பல ஆன்லைன் மாற்றிகள் மற்றும் உள்ளூர் பாகுபடுத்திகள் உள்ளன. எனவே, அதில் புரியாத குழப்பத்தை மட்டுமே நீங்கள் காணும்போது தரவை மறுவடிவமைக்க தயங்க வேண்டாம்.
4. விவரக்குறிப்புகளைப் படிக்கவும்
நீண்ட இடைவெளிக்குப் பிறகு YAMLக்குத் திரும்புவது, பார்வையிடுவது பயனுள்ளதாக இருக்கும்
5. போலி கட்டமைப்புகள்
ஒரு புத்தகம் அல்லது கட்டுரையை எழுதும் போது, குறைந்தபட்சம் உள்ளடக்க அட்டவணையின் வடிவிலாவது ஒரு பூர்வாங்க அவுட்லைனை முதலில் வரைவது பயனுள்ளதாக இருக்கும். YAML க்கும் அப்படித்தான். பெரும்பாலும், YAML கோப்பில் என்ன தரவு எழுதப்பட வேண்டும் என்பது பற்றிய யோசனை உங்களுக்கு உள்ளது, ஆனால் அதை எவ்வாறு ஒன்றோடொன்று இணைப்பது என்பது உங்களுக்கு உண்மையில் புரியவில்லை. எனவே, YAML ஐ செதுக்குவதற்கு முன், ஒரு போலி கட்டமைப்பை வரையவும்.
Pseudo-config என்பது போலி-குறியீட்டைப் போன்றது, அங்கு நீங்கள் கட்டமைப்பு அல்லது உள்தள்ளல், பெற்றோர்-குழந்தை உறவுகள், பரம்பரை மற்றும் கூடு கட்டுதல் பற்றி கவலைப்பட வேண்டியதில்லை. இங்கேயும் அதுவே உள்ளது: உங்கள் தலையில் எழும் தரவுகளின் மறு செய்கைகளை நீங்கள் வரைகிறீர்கள்.
போலி-கட்டமைப்பு பட்டியல் புரோகிராமர்கள் (மார்ட்டின் மற்றும் தபிதா) மற்றும் அவர்களின் திறன்கள் (நிரலாக்க மொழிகள்: பைதான், பெர்ல், பாஸ்கல் மற்றும் லிஸ்ப், ஃபோர்ட்ரான், எர்லாங், முறையே).
ஒரு காகிதத்தில் போலி கட்டமைப்பை வரைந்த பிறகு, அதை கவனமாக பகுப்பாய்வு செய்து, எல்லாம் ஒழுங்காக இருந்தால், அதை சரியான YAML கோப்பின் வடிவத்தில் வடிவமைக்கவும்.
6. தி டேப்ஸ் வெர்சஸ் ஸ்பேஸ்ஸ் தடுமாற்றம்
நீங்கள் சங்கடத்தை தீர்க்க வேண்டும்
எந்தவொரு சாதாரண உரை எடிட்டரிலும், குறிப்பிட்ட எண்ணிக்கையிலான இடைவெளிகளில் தாவல்களைத் தானாகச் சரிசெய்யலாம், எனவே முக்கிய ஆதரவாளர்களின் கிளர்ச்சி தாவல் நீங்கள் பயப்பட வேண்டியதில்லை.
ஒவ்வொரு YAML வெறுப்பவருக்கும் நன்றாகத் தெரியும், திரையில் தாவல்களுக்கும் இடைவெளிகளுக்கும் உள்ள வித்தியாசத்தை உங்களால் பார்க்க முடியாது. மேலும் ஏதாவது ஒன்று தெரியவில்லை என்றால், அதுவே பொதுவாக மக்கள் நினைவில் இருக்கும் கடைசி விஷயம், அவர்கள் வரிசைப்படுத்திய பிறகு, சரிபார்த்து, மற்ற சாத்தியமான அனைத்து சிக்கல்களையும் நீக்கிய பிறகு. அட்டவணை வளைவு அல்லது இடைவெளிகளைத் தேடுவதற்கு செலவழித்த ஒரு மணிநேர நேரத்தை நீங்கள் அவசரமாக ஒன்று அல்லது மற்றொன்றைப் பயன்படுத்துவதற்கான கொள்கையை உருவாக்க வேண்டும் என்று கத்துகிறது, பின்னர் அதனுடன் இணங்குவதற்கான வலுவூட்டப்பட்ட கான்கிரீட் சோதனையை செயல்படுத்தவும் (எடுத்துக்காட்டாக, மூலம் ஒரு கிட் கொக்கி அதை ஒரு லிண்டர் மூலம் கட்டாயப்படுத்த).
7. குறைவானது அதிகம் (அல்லது அதிகமானது குறைவு)
சிலர் YAML இல் எழுத விரும்புகிறார்கள், ஏனெனில் அது கட்டமைப்பை வலியுறுத்துகிறது. அதே நேரத்தில், அவை தரவுத் தொகுதிகளை முன்னிலைப்படுத்த உள்தள்ளலை தீவிரமாகப் பயன்படுத்துகின்றன. இது வெளிப்படையான டிலிமிட்டர்களைப் பயன்படுத்தும் மார்க்அப் மொழிகளைப் பின்பற்றுவதற்கான ஒரு வகையான மோசடியாகும்.
அத்தகைய கட்டமைப்பின் எடுத்துக்காட்டு இங்கே
# Employee records
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
சிலருக்கு, இந்த விருப்பம் அவர்களின் தலையில் உள்ள YAML கட்டமைப்பை வரிசைப்படுத்த உதவுகிறது; மற்றவர்களுக்கு, மாறாக, இது தேவையற்ற, அவர்களின் கருத்துப்படி, உள்தள்ளல்களால் அவர்களை எரிச்சலூட்டுகிறது.
ஆனால் நீங்கள் YAML ஆவணத்தின் உரிமையாளராக இருந்தால், அதை பராமரிக்கும் பொறுப்பில் இருந்தால், பிறகு நீங்கள் மற்றும் நீங்கள் மட்டும் உள்தள்ளலை எவ்வாறு பயன்படுத்துவது என்பதை வரையறுக்க வேண்டும். பெரிய திணிப்பால் நீங்கள் எரிச்சலடைந்தால், YAML விவரக்குறிப்பின்படி அதை குறைந்தபட்சமாக வைத்திருக்கவும். எடுத்துக்காட்டாக, அன்சிபிள் ஆவணத்திலிருந்து மேலே உள்ள கோப்பை எந்த இழப்பும் இல்லாமல் மீண்டும் எழுதலாம்:
---
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
8. வெற்றிடங்களைப் பயன்படுத்தவும்
YAML கோப்பை நிரப்பும்போது நீங்கள் தொடர்ந்து அதே தவறுகளை மீண்டும் செய்தால், அதில் ஒரு டெம்ப்ளேட்டை ஒரு கருத்தாகச் செருகுவது அர்த்தமுள்ளதாக இருக்கும். அடுத்த முறை நீங்கள் இந்த டெம்ப்ளேட்டை நகலெடுத்து உண்மையான தரவை உள்ளிடலாம், எடுத்துக்காட்டாக:
---
# - <common name>:
# name: Given Surname
# job: JOB
# skills:
# - LANG
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
9. வேறு ஏதாவது பயன்படுத்தவும்
பயன்பாட்டிற்கு உங்கள் மீது பிடிப்பு இல்லை என்றால், YAML ஐ வேறு வடிவத்திற்கு மாற்றுவது மதிப்புக்குரியதாக இருக்கலாம். காலப்போக்கில், உள்ளமைவு கோப்புகள் தங்களைத் தாங்களே விஞ்சிவிடும், பின்னர் அவற்றை லுவா அல்லது பைத்தானில் எளிய ஸ்கிரிப்ட்களாக மாற்றுவது நல்லது.
YAML என்பது அதன் மினிமலிசம் மற்றும் எளிமைக்காக பலர் விரும்பும் ஒரு சிறந்த விஷயம், ஆனால் இது உங்கள் ஆயுதக் களஞ்சியத்தில் உள்ள ஒரே கருவியிலிருந்து வெகு தொலைவில் உள்ளது. எனவே சில நேரங்களில் நீங்கள் அதை மறுக்கலாம். பாகுபடுத்தும் லைப்ரரிகளை YAML க்கு எளிதாகக் காணலாம், எனவே நீங்கள் எளிதாக இடம்பெயர்வு விருப்பங்களை வழங்கினால், உங்கள் பயனர்கள் இந்த தோல்வியை ஒப்பீட்டளவில் வலியின்றி தப்பிப்பார்கள்.
YAML இல்லாமல் உங்களால் செய்ய முடியாவிட்டால், இந்த 10 உதவிக்குறிப்புகளைப் பின்பற்றி, YAML மீதான உங்கள் வெறுப்பை ஒருமுறை சமாளித்து விடுங்கள்!
ஆதாரம்: www.habr.com