Is breá linn go léir Ansible, ach tá YAML ag Ansible. Tá go leor formáidí ann do chomhaid chumraíochta: liostaí luachanna, péirí luach-paraiméadar, comhaid INI, YAML, JSON, XML agus go leor eile. Mar sin féin, ar chúiseanna éagsúla as gach ceann acu, is minic a mheastar YAML an-deacair. Go háirithe, in ainneoin a minimalism athnuachana agus cumais mhórthaibhseach chun oibriú le luachanna ordlathacha, is féidir leis an chomhréir YAML a bheith annoying lena chur chuige Python-cosúil le eangú.
Má bhuaileann YAML tú, is féidir leat - agus ba cheart duit! – déan na 10 gcéim seo a leanas chun do chuid frustrachais a laghdú go leibhéal inghlactha agus titim i ngrá le YAML. Mar is cuí leis an liosta seo, déanfar ár ndeich leid a uimhriú ón tús, cuirfimid cleachtais mhachnaimh agus spioradálta leis ar thoil 😉
0. Déan do eagarthóir ag obair
Is cuma cén eagarthóir téacs atá agat, is dócha go bhfuil breiseán amháin ar a laghad ann chun oibriú le YAML. Mura bhfuil ceann agat, faigh agus suiteáil láithreach é. Íocfaidh an t-am a chaitear ag cuardach agus ag socrú suas go leor uaireanta gach uair a chaithfidh tú YAML a chur in eagar.
Mar shampla, eagarthóir
Emacs i mód YAML agus spásanna taispeána.
Mura bhfuil modh YAML ag an eagarthóir is fearr leat, is féidir cuid de na fadhbanna a réiteach trí oibriú leis na socruithe. Mar shampla, níl mód YAML ag eagarthóir caighdeánach téacs GNOME Gedit, ach de réir réamhshocraithe leagann sé béim ar chomhréir YAML agus ligeann sé duit obair le eangú a chumrú:
Fleasc a shocrú in Gedit.
Breiseán
I bhfocail eile, caith am ag foghlaim faoin eagarthóir is fearr leat. Faigh amach cad atá le tairiscint aige nó ag a phobal forbartha as oibriú le YAML, agus úsáid na gnéithe sin. Is cinnte nach mbeidh aiféala ort.
1. Bain úsáid as línéar
Go hidéalach, úsáideann teangacha ríomhchlárúcháin agus teangacha marcála comhréir intuartha. Tá ríomhairí go maith ag intuarthacht, agus sin an fáth a bhfuil coincheap na
Suiteáil
$ sudo dnf install yamllint
Ansin ritheann tú yamllint, ag dul thar an gcomhad YAML lena sheiceáil. Seo é an chuma a bheidh air má chuireann tú comhad a bhfuil earráid ann chuig an línéar:
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
Ní hiad na huimhreacha ar chlé an t-am, ach comhordanáidí na hearráide: uimhir ró agus colún. B’fhéidir nach n-insíonn an cur síos ar an earráid rud ar bith duit, ach tá a fhios agat go díreach cá bhfuil sé. Díreach breathnú ar an áit seo sa chód, agus is dócha go mbeidh gach rud soiléir.
Nuair nach bhfaighidh Yamllint aon earráidí i gcomhad, ní phriontáiltear aon rud ar an scáileán. Má chuireann ciúnas den sórt sin eagla ort agus go dteastaíonn beagán níos mó aiseolais uait, is féidir leat an lintéir a rith leis an ordú macalla coinníollach trí ampersand dúbailte (&&), mar seo:
$ yamllint perfect.yaml && echo "OK"
OK
I POSIX, cuirtear ampersand dúbailte i bhfeidhm má thagann an t-ordú roimhe seo ar ais 0. Agus ní thugann yamllint ach líon na n-earráidí a aimsíodh ar ais, agus is é sin an fáth go n-oibríonn an tógáil iomlán coinníollach seo.
2. Scríobh i Python, ní YAML
Más rud é go gcuireann YAML as do thú go mór, ná scríobh isteach ann, go litriúil. Tarlaíonn sé gurb é YAML an t-aon fhormáid a thuigeann an feidhmchlár. Ach fiú sa chás seo, ní gá comhad YAML a chruthú. Scríobh ar cad is maith leat agus ansin thiontú. Mar shampla, tá leabharlann iontach ann do Python
Féin-tiontú
Sa chás seo, is script Python é an comhad sonraí freisin a ghineann YAML. Is fearr a oireann an modh seo do thacair bheaga sonraí. Ní dhéanann tú ach na sonraí JSON a scríobh isteach in athróg Python, réamhrá a dhéanamh le treoir allmhairithe, agus ag deireadh an chomhaid cuir trí líne leis chun an t-aschur a chur i bhfeidhm.
#!/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
Anois ritheann muid an comhad seo i Python agus faighimid an comhad 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
Is YAML breá bailí é seo, ach tabharfaidh yamllint rabhadh duit nach dtosaíonn sé le -. Bhuel, is féidir é seo a cheartú go héasca de láimh nó beagán a mhodhnú sa script Python.
Comhshó trí scripteanna
Sa chás seo, scríobhann muid i JSON ar dtús, agus ansin reáchtáilimid an tiontaire mar script Python ar leith, a tháirgeann YAML mar aschur. I gcomparáid leis an modh roimhe seo, tá an modh seo ag scála níos fearr, ós rud é go bhfuil an comhshó ar leithligh ó na sonraí.
Ar dtús, cruthaimis comhad JSON example.json, mar shampla, is féidir leat é a thógáil uaidh
{
"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"
}
}
}
}
}
Ansin cruthóimid script tiontaire simplí agus sábhálfaimid é faoin ainm json2yaml.py. Iompórtálann an script seo modúil YAML agus JSON Python araon, agus luchtaíonn sé comhad JSON atá sonraithe ag an úsáideoir, déanann sé an tiontú, agus scríobhann sé na sonraí chuig an gcomhad 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()
Sábháil an script seo i gcosán an chórais agus rith mar is gá:
$ ~/bin/json2yaml.py example.json
3. Parsáil go leor agus go minic
Uaireanta bíonn sé úsáideach breathnú ar fhadhb ó uillinn eile. Má tá deacracht agat na caidrimh idir do shonraí a léiriú in YAML, is féidir leat rud éigin níos eolach a dhéanamh orthu go sealadach.
Mar shampla, má tá tú compordach ag obair le liostaí foclóra nó JSON, is féidir leat YAML a thiontú go JSON le dhá ordú sa bhlaosc idirghníomhach Python. Ligean le rá go bhfuil comhad YAML mydata.yaml agat, mar sin is é seo an chuma a bheadh air:
$ 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.'}
Is féidir leat teacht ar go leor samplaí eile ar an ábhar seo. Ina theannta sin, tá go leor tiontairí ar líne agus parsálaithe áitiúla ar fáil. Mar sin, ná bíodh leisce ort na sonraí a athfhormáidiú nuair nach bhfeiceann tú ach smionagar dothuigthe iontu.
4. Léigh na specs
Ag filleadh ar YAML tar éis sos fada, tá sé úsáideach cuairt a thabhairt
5. Pseudo-configs
Agus leabhar nó alt á scríobh, bíonn sé úsáideach i gcónaí réamh-imlíne a sceitseáil, ar a laghad i bhfoirm tábla na n-ábhar. Tá sé mar an gcéanna le YAML. Is dócha go bhfuil tuairim agat cad iad na sonraí is gá a scríobh isteach i gcomhad YAML, ach ní thuigeann tú i ndáiríre conas é a nascadh lena chéile. Mar sin, roimh YAML a dhealbhú, tarraing pseudo-config.
Tá pseudo-config cosúil le pseudo-code, áit nach gá duit a bheith buartha faoi struchtúr nó eangú, caidrimh tuismitheora-leanaí, oidhreacht agus neadú. Tá sé mar an gcéanna anseo: tarraingíonn tú atriallta de na sonraí de réir mar a thagann siad chun cinn i do cheann.
Ríomhchláraitheoirí liostála pseudo-config (Martin agus Tabitha) agus a gcuid scileanna (teangacha ríomhchlárúcháin: Python, Perl, Pascal agus Lisp, Fortran, Erlang, faoi seach).
Tar éis pseudo-config a tharraingt ar phíosa páipéir, déan anailís chúramach air agus, má tá gach rud in ord, formáid é i bhfoirm comhad bailí YAML.
6. Na Cluaisíní vs. Spásanna Aincheist
Beidh ort an aincheist a réiteach
In aon ghnátheagarthóir téacs, is féidir leat cluaisíní uathoibríoch-chearta a chumrú go dtí líon sonraithe spásanna, mar sin éirí amach na bpríomhghleacaithe Tab ní gá go mbeadh eagla ort.
Mar is eol go maith do gach fuathadóir YAML, ní fheiceann tú an difríocht idir cluaisíní agus spásanna ar an scáileán. Agus nuair nach bhfuil rud éigin le feiceáil, is gnách gurb é an rud deireanach a chuimhníonn daoine, tar éis dóibh gach fadhb eile a d'fhéadfadh a bheith ann a réiteach, a sheiceáil agus a dhíchur. Déanann uair an chloig ama a chaitear ag cuardach cuar táblaithe nó bloc spásanna screamáil go simplí go gcaithfidh tú go práinneach polasaí a chruthú maidir le húsáid ceann amháin nó eile, agus ansin seiceáil coincréit threisithe a chur i bhfeidhm maidir le comhlíonadh é (mar shampla, trí a Git hook chun é a bhrú trí línéar).
7. Níos lú tá níos mó (nó níos mó is lú)
Is maith le daoine áirithe scríobh in YAML mar cuireann sé béim ar struchtúr. Ag an am céanna, úsáideann siad eangú go gníomhach chun béim a chur ar bhlocanna sonraí. Is cineál camscéim é seo chun aithris a dhéanamh ar theangacha marcála a úsáideann teorainneacha sainráite.
Seo sampla de struchtúr den sórt sin ó
# Employee records
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
I gcás roinnt daoine, cuidíonn an rogha seo leo struchtúr YAML a réiteach ina gceann; do dhaoine eile, ar a mhalairt, cuireann sé greannú orthu le go leor fleasc nach bhfuil gá leo, dar leo.
Ach más tusa úinéir an doiciméid YAML agus go bhfuil tú freagrach as é a chothabháil, ansin tusa agus tusa amháin Ní mór a shainiú conas eangú a úsáid. Má chuireann stuáil mhór isteach ort, coinnigh chomh híseal agus is féidir é de réir shonraíocht YAML. Mar shampla, is féidir an comhad thuas ón doiciméadú Ansible a athscríobh mar seo gan aon chaillteanas:
---
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
8. Bain úsáid as bearnaí
Má dhéanann tú na botúin chéanna arís i gcónaí agus comhad YAML á líonadh agat, tá ciall leis teimpléad a chur isteach ann mar thráchtaireacht. Ansin an chéad uair eile is féidir leat an teimpléad seo a chóipeáil agus fíorshonraí a chur isteach ann, mar shampla:
---
# - <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. Bain úsáid as rud éigin difriúil
Mura bhfuil srian ag an bhfeidhmchlár ort, b’fhéidir gurbh fhiú an YAML a athrú go formáid eile. Le himeacht ama, is féidir le comhaid cumraíochta dul i léig agus ansin is fearr iad a thiontú ina scripteanna simplí i Lua nó Python.
Is rud iontach é YAML a bhfuil grá ag go leor daoine mar gheall ar a minimalism agus a simplíocht, ach tá sé i bhfad ón uirlis amháin i do Arsenal. Mar sin uaireanta is féidir leat é a dhiúltú. Is furasta leabharlanna parsála a aimsiú le haghaidh YAML, mar sin má thairgeann tú roghanna aistrithe éasca, mairfidh d’úsáideoirí an teip seo gan phian.
Mura féidir leat a dhéanamh gan YAML, ansin tóg na 10 leid seo agus faigh amach nach dtaitníonn YAML leat uair amháin agus go deo!
Foinse: will.com