Denok maite dugu Ansible, baina Ansible YAML da. Konfigurazio fitxategietarako formatu asko daude: balio zerrendak, parametro-balio bikoteak, INI fitxategiak, YAML, JSON, XML eta beste hainbat. Hala ere, horietatik guztietatik hainbat arrazoirengatik, YAML sarritan bereziki zaila da. Bereziki, minimalismo freskagarria eta balio hierarkikoekin lan egiteko gaitasun ikusgarriak izan arren, YAML sintaxia gogaikarria izan daiteke koskaren Python-en antzeko ikuspegiarekin.
YAML-k haserretzen bazaitu, egin dezakezu, eta beharko zenuke! β Hartu 10 urrats hauek zure frustrazioa maila onargarri batera murrizteko eta YAMLrekin maitemintzeko. Zerrenda honi dagokion bezala, gure hamar aholku hutsetik zenbatuko dira, meditazioa eta praktika espiritualak nahieran gehituko ditugu π
0. Egin zure editorea funtzionatzen
Berdin dio zein testu editore duzun, ziurrenik YAMLrekin lan egiteko plugin bat dago gutxienez. Ez baduzu, aurkitu eta instalatu berehala. Bilatzen eta konfiguratzen emandako denborak hainbat aldiz ordainduko du YAML editatu behar duzun bakoitzean.
Adibidez, editorea
Emacs YAML moduan eta espazioak erakusten.
Zure editore gogokoenak YAML modurik ez badu, arazo batzuk konpon daitezke ezarpenekin lan eginez. Adibidez, Gedit GNOME testu-editore estandarrak ez du YAML modurik, baina lehenespenez YAML sintaxia nabarmentzen du eta koskarekin lana konfiguratzeko aukera ematen du:
Koskak ezartzea Gedit-en.
Plugin bat
Beste era batera esanda, eman denbora zure editore gogokoena ikasten. Ezagutu zer eskaintzen duen bere garapen-komunitateak YAMLrekin lan egiteko eta erabili funtzio horiek. Zalantzarik gabe, ez zara damutuko.
1. Erabili linter bat
Egokiena, programazio lengoaiek eta markatze lengoaiek sintaxia aurreikusgarria erabiltzea. Ordenagailuak onak dira aurreikusgarritasunean, horregatik kontzeptua
ezarri
$ sudo dnf install yamllint
Ondoren, yamllint exekutatu besterik ez duzu, YAML fitxategia pasatuz egiaztatzeko. Hau da linterra errore bat duen fitxategi bat pasatzen baduzu:
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
Ezkerreko zenbakiak ez dira ordua, errorearen koordenatuak baizik: errenkada eta zutabe zenbakia. Akatsaren deskribapenak ez dizu ezer esango, baina zehatz-mehatz badakizu non dagoen. Ikusi besterik ez dago toki hau kodean, eta ziurrenik dena argi geratuko da.
Yamllint-ek fitxategi batean akatsik aurkitzen ez duenean, ez da ezer inprimatzen pantailan. Horrelako isiltasunak beldurra ematen bazaitu eta feedback apur bat gehiago nahi baduzu, orduan linter exekutatu dezakezu baldintzazko oihartzunaren komandoarekin ampersand bikoitz baten bidez (&&), honela:
$ yamllint perfect.yaml && echo "OK"
OK
POSIX-en, ampersand bikoitza suak ematen du aurreko komandoak 0 itzultzen badu eta bakarrik. Eta yamllint-ek aurkitutako errore-kopurua besterik ez du itzultzen, horregatik baldintzazko eraikuntza oso honek funtzionatzen du.
2. Idatzi Python-en, ez YAML-n
YAML benetan haserretzen bazaitu, ez idatzi bertan, literalki. Gertatzen da YAML dela aplikazioak ulertzen duen formatu bakarra. Baina kasu honetan ere, ez da beharrezkoa YAML fitxategi bat sortzea. Idatzi zer gustatzen zaizun eta gero bihurtu. Adibidez, liburutegi bikaina dago Pythonentzat
Autobihurketa
Kasu honetan, datu-fitxategia YAML sortzen duen Python script bat ere bada. Metodo hau datu multzo txikietarako egokiena da. JSON datuak Python aldagai batean idatzi besterik ez duzu, inportazio zuzentarau batekin hitzaurrea egin eta fitxategiaren amaieran hiru lerro gehitu irteera ezartzeko.
#!/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
Orain fitxategi hau Python-en exekutatzen dugu eta output.yaml fitxategia lortuko dugu:
$ 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
Hau guztiz baliozkoa da YAML, baina yamllint-ek ohartaraziko dizu ez dela -rekin hasten. Beno, hau erraz zuzen daiteke eskuz edo apur bat aldatu Python scriptean.
Scripten bidez bihurtzea
Kasu honetan, lehenik JSON idazten dugu, eta gero bihurgailua Python script bereizi gisa exekutatzen dugu, irteera gisa YAML sortzen duena. Aurreko metodoarekin alderatuta, metodo hau hobeto eskalatzen da, bihurketa datuetatik bereizita baitago.
Lehenik eta behin, sor dezagun JSON fitxategia example.json, adibidez, bertatik har dezakezu
{
"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"
}
}
}
}
}
Ondoren, bihurgailuaren script soil bat sortuko dugu eta json2yaml.py izenarekin gordeko dugu. Script honek YAML eta JSON Python moduluak inportatzen ditu, eta erabiltzaileak zehaztutako JSON fitxategi bat kargatzen du, bihurketa egiten du eta datuak output.yaml fitxategian idazten ditu.
#!/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()
Gorde script hau sistemaren bidean eta exekutatu behar duzun moduan:
$ ~/bin/json2yaml.py example.json
3. Asko eta maiz aztertu
Batzuetan erabilgarria da arazo bat beste angelu batetik begiratzea. YAML-n zure datuen arteko erlazioak irudikatzeko arazoak badituzu, aldi baterako ezagunagoa den zerbait bihurtu dezakezu.
Adibidez, hiztegi-zerrendekin edo JSONekin lan egiten eroso bazaude, YAML JSON bihur dezakezu Python shell interaktiboan bi komandorekin. Demagun mydata.yaml YAML fitxategi bat duzula, orduan hau izango litzatekeen itxura:
$ 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.'}
Gai honi buruzko beste adibide asko aurki ditzakezu. Horrez gain, sareko bihurgailu eta tokiko analizatzaile ugari daude eskuragarri. Beraz, ez izan zalantzarik datuak birformateatzeko nahasketa ulertezina besterik ez duzunean.
4. Irakurri zehaztapenak
Atsedenaldi luze baten ondoren YAMLra itzultzean, bisitatzea erabilgarria da
5. Sasi-konfigurazioak
Liburu edo artikulu bat idazterakoan, beti da komenigarria lehenik aurretiazko eskema bat egitea, aurkibide moduan behintzat. YAMLrekin berdin gertatzen da. Seguruenik, YAML fitxategi batean zer datu idatzi behar diren jakiteko ideia duzu, baina ez duzu ulertzen nola konektatu elkarren artean. Hori dela eta, YAML zizelkatu aurretik, marraztu sasi-konfigurazio bat.
Pseudo-config sasi-kodearen antzekoa da, non ez duzun egituraz edo koskaz, guraso-seme-alaben harremanez, herentziaz eta habiaraz arduratu beharrik. Hemen ere berdina da: buruan sortzen diren heinean datuen iterazioak marrazten dituzu.
Sasi-konfigurazio zerrendako programatzaileak (Martin eta Tabitha) eta haien trebetasunak (programazio-lengoaiak: Python, Perl, Pascal eta Lisp, Fortran, Erlang, hurrenez hurren).
Sasi-konfigurazio bat paper batean marraztu ondoren, aztertu arretaz eta, dena ondo badago, formateatu baliozko YAML fitxategi baten moduan.
6. Fitxak vs. Espazioen dilema
Dilema konpondu beharko duzu
Edozein testu-editore arruntetan, zuzenketa automatikoko fitxak konfigura ditzakezu espazio-kopuru zehatz batean, beraz, funtsezko atxikimenduen matxinada. Fitxa ez duzu beldurrik izan behar.
YAML gorrotatzaile guztiek ondo dakienez, ezin duzu pantailako fitxen eta espazioen arteko aldea ikusi. Eta zerbait ikusten ez denean, jendeak gogoratzen duen azken gauza izan ohi da, beste arazo posible guztiak konpondu, egiaztatu eta ezabatu ondoren. Tabulazio-kurba edo espazio-bloke bat bilatzen igarotako ordu batek, bata edo bestea erabiltzeko politika bat sortzeko premiazkoa dela garrasi besterik ez du egiten, eta, ondoren, hormigoi armatuzko egiaztapena ezartzea (adibidez, hori betetzeko. linter baten bidez behartzeko Git amua).
7. Gutxiago gehiago da (edo gehiago gutxiago)
Batzuei gustatzen zaie YAML-n idaztea, egitura azpimarratzen duelako. Aldi berean, aktiboki erabiltzen dute koska datu-blokeak nabarmentzeko. Mugatzaile esplizituak erabiltzen dituzten marka-hizkuntzak imitatzeko iruzur moduko bat da hau.
Hona hemen egitura horren adibide bat
# Employee records
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
Batzuentzat, aukera honek beren buruan YAML egitura ordenatzen laguntzen die; beste batzuentzat, aitzitik, alferrikako koska asko haserretzen ditu, haien ustez.
Baina YAML dokumentuaren jabea bazara eta mantentzeaz arduratzen bazara, orduan zu eta zuk bakarrik koska nola erabili definitu behar du. Betegarri handiek gogaitzen bazaitu, mantendu ahalik eta gutxieneko YAML zehaztapenaren arabera. Adibidez, Ansible dokumentazioko goiko fitxategia honela berridatzi daiteke inolako galerarik gabe:
---
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
8. Erabili hutsuneak
YAML fitxategi bat betetzerakoan akats berdinak etengabe errepikatzen badituzu, zentzuzkoa da txantiloi bat iruzkin gisa txertatzea. Ondoren, hurrengoan txantiloi hau kopiatu eta han datu errealak sar ditzakezu, adibidez:
---
# - <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. Erabili zerbait desberdina
Aplikazioak ez badu zure gainean itogarririk, baliteke YAML beste formatu batera aldatzea merezi izatea. Denborarekin, konfigurazio-fitxategiak beraiek gainditzen dituzte eta orduan hobe da script soiletan bihurtzea Lua edo Python-en.
YAML jende askok bere minimalismoagatik eta sinpletasunagatik maite duen gauza bikaina da, baina urrun dago zure arsenaleko tresna bakarra. Beraz, batzuetan uko egin diezaiokezu. Analisi-liburutegiak erraz aurki daitezke YAMLrako, beraz, migrazio-aukera errazak eskaintzen badituzu, zure erabiltzaileek hutsegite honetatik nahiko okerrik gabe iraungo dute.
Ezin baduzu YAML gabe egin, har itzazu 10 aholku hauek eta gainditu behingoz YAMLarekiko ez duzun gustukoa!
Iturria: www.habr.com