Tha gaol againn uile air Ansible, ach tha YAML ann an Ansible. Tha mòran chruthan ann airson faidhlichean rèiteachaidh: liostaichean luachan, paidhrichean luach paramadair, faidhlichean INI, YAML, JSON, XML agus mòran eile. Ach, airson grunn adhbharan a-mach às a h-uile gin dhiubh, tha YAML gu tric air a mheas gu sònraichte duilich. Gu sònraichte, a dh’ aindeoin a mhion-eòlas ùrachail agus na comasan drùidhteach aige airson a bhith ag obair le luachan rangachd, faodaidh co-chòrdadh YAML a bhith draghail leis an dòigh-obrach coltach ri Python a thaobh indentation.
Ma chuireas YAML stad ort, faodaidh tu - agus bu chòir dhut! - Gabh na 10 ceumannan a leanas gus do shàrachadh a lughdachadh gu ìre iomchaidh agus tuiteam ann an gaol le YAML. Mar a tha iomchaidh don liosta seo, bidh na deich molaidhean againn air an àireamhachadh bhon fhìor thoiseach, cuiridh sinn cleachdaidhean meòrachaidh agus spioradail ris aig toil 😉
0. Dèan an neach-deasachaidh agad ag obair
Chan eil e gu diofar dè an deasaiche teacsa a th’ agad, is dòcha gu bheil co-dhiù aon plugan ann airson a bhith ag obair le YAML. Mura h-eil fear agad, lorg agus stàlaich e sa bhad. Pàighidh an ùine a thèid a chaitheamh a’ lorg agus a’ stèidheachadh iomadh uair a h-uile uair a dh’ fheumas tu YAML a dheasachadh.
Mar eisimpleir, neach-deasachaidh
Emacs ann am modh YAML agus a’ taisbeanadh àiteachan.
Mura h-eil modh YAML aig an deasaiche as fheàrr leat, faodar cuid de na duilgheadasan fhuasgladh le bhith ag obair leis na roghainnean. Mar eisimpleir, chan eil modh YAML aig deasaiche teacsa àbhaisteach GNOME Gedit, ach gu gnàthach bidh e a’ soilleireachadh co-chòrdadh YAML agus a’ leigeil leat obair a rèiteachadh le indentations:
A’ suidheachadh indents ann an Gedit.
A plugan
Ann am faclan eile, caith ùine ag ionnsachadh mun neach-deasachaidh as fheàrr leat. Faigh a-mach dè tha e fhèin no a choimhearsnachd leasachaidh a’ tabhann airson a bhith ag obair le YAML, agus cleachd na cothroman sin. Gu cinnteach cha bhith thu aithreachas air.
1. Cleachd lòchran
Mas fheàrr, bidh cànanan prògramaidh agus cànanan comharrachaidh a’ cleachdadh co-chòrdadh ro-innseach. Tha coimpiutairean math air ro-innse, agus is e sin as coireach gu bheil bun-bheachd
Stàlaich
$ sudo dnf install yamllint
An uairsin bidh thu dìreach a’ ruith yamllint, a’ dol seachad air am faidhle YAML airson a sgrùdadh. Seo mar a tha e coltach ma bheir thu seachad faidhle le mearachd chun an loidhne-lìn:
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
Chan e na h-àireamhan air an taobh chlì an ùine, ach co-chomharran na mearachd: àireamh sreath is colbh. Is dòcha nach innis an tuairisgeul air a’ mhearachd dad dhut, ach tha fios agad gu cinnteach càite a bheil e. Dìreach thoir sùil air an àite seo sa chòd, agus is coltaiche gum fàs a h-uile dad soilleir.
Nuair nach lorg yamllint mearachdan sam bith ann am faidhle, chan eil dad air a chlò-bhualadh chun sgrion. Ma chuireas an leithid de shàmhchair eagal ort agus gu bheil thu ag iarraidh beagan a bharrachd fios air ais, faodaidh tu an loidhne a ruith leis an àithne mac-talla cumhach tro ampersand dùbailte (&&), mar seo:
$ yamllint perfect.yaml && echo "OK"
OK
Ann am POSIX, bidh ampersand dùbailte a 'losgadh ma tha agus a-mhàin ma thilleas an àithne roimhe 0. Agus tha yamllint dìreach a' tilleadh an àireamh de mhearachdan a chaidh a lorg, agus is e sin as coireach gu bheil an togail cumhach seo ag obair.
2. Sgrìobh ann am Python, chan e YAML
Ma tha YAML dha-rìribh gad chuir dheth, dìreach na sgrìobh ann, gu litearra. Tha e a’ tachairt gur e YAML an aon chruth a thuigeas an aplacaid. Ach eadhon anns a 'chùis seo, chan eil feum air faidhle YAML a chruthachadh. Sgrìobh air na tha thu ag iarraidh agus an uairsin tionndaidh. Mar eisimpleir, tha leabharlann math ann airson Python
Fèin-thionndadh
Anns a ’chùis seo, tha am faidhle dàta cuideachd na sgriobt Python a ghineas YAML. Tha an dòigh seo nas freagarraiche airson seataichean dàta beaga. Bidh thu dìreach a’ sgrìobhadh an dàta JSON gu caochladair Python, ga ro-ràdh le stiùireadh in-mhalairt, agus aig deireadh an fhaidhle cuir trì loidhnichean ris gus an toradh a chuir an gnìomh.
#!/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
A-nis ruithidh sinn am faidhle seo ann am Python agus gheibh sinn am faidhle 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
Tha seo gu tur dligheach YAML, ach bheir yamllint rabhadh dhut nach tòisich e le -. Uill, faodar seo a cheartachadh gu furasta le làimh no atharrachadh beagan ann an sgriobt Python.
Iompachadh tro sgriobtaichean
Anns a ’chùis seo, bidh sinn a’ sgrìobhadh ann an JSON an toiseach, agus an uairsin a ’ruith an inneal-tionndaidh mar sgriobt Python air leth, a bheir a-mach YAML mar thoradh. An coimeas ris an dòigh roimhe, tha an dòigh seo a’ fàs nas fheàrr, leis gu bheil an tionndadh air leth bhon dàta.
An toiseach, cruthaichidh sinn faidhle JSON example.json, mar eisimpleir, faodaidh tu a thoirt bho
{
"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"
}
}
}
}
}
An uairsin cruthaichidh sinn sgriobt tionndaidh sìmplidh agus sàbhailidh sinn e fon ainm json2yaml.py. Bidh an sgriobt seo a’ toirt a-steach an dà chuid modalan YAML agus JSON Python, agus a’ luchdachadh faidhle JSON a tha sònraichte don neach-cleachdaidh, a’ coileanadh an tionndaidh, agus a’ sgrìobhadh an dàta chun fhaidhle 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àbhail an sgriobt seo ann an slighe an t-siostaim agus ruith e mar a dh’ fheumar:
$ ~/bin/json2yaml.py example.json
3. Parse mòran agus gu tric
Uaireannan tha e feumail coimhead air duilgheadas bho cheàrn eadar-dhealaichte. Ma tha duilgheadas agad a’ riochdachadh nan dàimhean eadar an dàta agad ann an YAML, faodaidh tu a thionndadh gu sealach gu rudeigin nas eòlaiche.
Mar eisimpleir, ma tha thu comhfhurtail ag obair le liostaichean faclair no JSON, faodaidh tu YAML a thionndadh gu JSON le dìreach dà àithne anns an t-slige Python eadar-ghnìomhach. Canaidh sinn gu bheil faidhle YAML agad mydata.yaml, an uairsin is e seo cò ris a bhiodh e coltach:
$ 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.'}
Gheibh thu mòran eisimpleirean eile air a’ chuspair seo. A bharrachd air an sin, tha mòran de luchd-tionndaidh air-loidhne agus parsers ionadail rim faighinn. Mar sin na bi leisg an dàta ath-chruthachadh nuair nach fhaic thu ach smeuran do-thuigsinn ann.
4. Leugh na specs
A 'tilleadh gu YAML an dèidh fois fhada, tha e feumail tadhal
5. Pseudo-configs
Nuair a bhios tu a’ sgrìobhadh leabhar no artaigil, tha e an-còmhnaidh feumail geàrr-chunntas a dhèanamh an-toiseach, co-dhiù ann an cruth clàr-innse. Tha e an aon rud le YAML. As dualtaiche, tha beachd agad air dè an dàta a dh'fheumar a sgrìobhadh ann am faidhle YAML, ach chan eil thu dha-rìribh a’ tuigsinn mar a cheanglas tu e ri chèile. Mar sin, mus dèan thu snaidheadh YAML, tarraing pseudo-config.
Tha pseudo-config coltach ri còd-brèige, far nach fheum thu a bhith draghail mu structar no indentation, dàimhean pàrant-pàiste, dìleab agus neadachadh. Tha e an aon rud an seo: bidh thu a’ tarraing ath-aithrisean den dàta mar a dh’ èiricheas iad nad cheann.
Pseudo-config a’ liostadh prògramadairean (Martin agus Tabitha) agus na sgilean aca (cànanan prògramaidh: Python, Perl, Pascal agus Lisp, Fortran, Erlang, fa leth).
Às deidh dhut pseudo-config a tharraing air pìos pàipear, dèan sgrùdadh faiceallach air agus, ma tha a h-uile dad ann an òrdugh, cruth e ann an cruth faidhle YAML dligheach.
6. Na Tabs vs Spaces Dilema
Feumaidh tu an dileab fhuasgladh
Ann an deasaiche teacsa àbhaisteach sam bith, faodaidh tu tabaichean fèin-cheart a rèiteachadh gu àireamh sònraichte de dh’ àiteachan, agus mar sin ar-a-mach prìomh luchd-leantainn tab chan fheum eagal a bhith ort.
Mar a tha fios math aig a h-uile neach-fuath YAML, chan fhaic thu an diofar eadar tabaichean agus àiteachan air an sgrion. Agus nuair nach eil rudeigin ri fhaicinn, mar as trice is e an rud mu dheireadh a bhios daoine a’ cuimhneachadh, às deidh dhaibh a bhith a’ rèiteach, a’ sgrùdadh agus a’ cuir às do gach duilgheadas eile a dh’ fhaodadh a bhith ann. Tha uair a thìde de dh’ ùine a thathar a’ caitheamh a’ lorg lùb clàrachaidh no bloc de dh’àiteachan dìreach a’ sgreuchail gu feum thu gu h-èiginneach poileasaidh a chruthachadh airson cleachdadh aon no tè eile, agus an uairsin cuir an gnìomh seic cruadhtan daingnichte airson gèilleadh ris (mar eisimpleir, tro dubhan Git airson a sparradh tro lòchran).
7. Tha nas lugha nas motha (no barrachd tha nas lugha)
Is toil le cuid de dhaoine sgrìobhadh ann an YAML oir tha e a’ cur cuideam air structar. Aig an aon àm, bidh iad gu gnìomhach a’ cleachdadh indentation gus blocaichean dàta a shoilleireachadh. Is e seòrsa de sgam a tha seo gus atharrais a dhèanamh air cànanan comharrachaidh a bhios a’ cleachdadh crìochan soilleir.
Seo eisimpleir de leithid de structar bho
# Employee records
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
Dha cuid, tha an roghainn seo gan cuideachadh le bhith a’ rèiteach structar YAML nan cinn; dha feadhainn eile, air an làimh eile, bidh e gan nàrachadh le tòrr indents neo-riatanach, nam beachd-san.
Ach ma tha thu nad shealbhadair air an sgrìobhainn YAML agus gu bheil uallach ort airson a chumail suas, an uairsin thu fein agus thusa a mhàin Feumaidh mìneachadh mar a chleachdas tu indentation. Ma tha pleadhag mòr air do bhuaireadh, cùm e cho ìosal ‘s as urrainn dhut a rèir sònrachadh YAML. Mar eisimpleir, faodar am faidhle gu h-àrd bho na sgrìobhainnean Ansible ath-sgrìobhadh mar seo gun chall sam bith:
---
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
8. Cleachd beàrnan
Ma nì thu an-còmhnaidh na h-aon mhearachdan nuair a lìonas tu faidhle YAML, tha e ciallach teamplaid a chuir a-steach mar bheachd. An uairsin an ath thuras faodaidh tu dìreach an teamplaid seo a chopaigeadh agus fìor dhàta a chuir a-steach an sin, mar eisimpleir:
---
# - <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. Cleachd rudeigin eadar-dhealaichte
Mura h-eil bacadh sam bith aig an aplacaid ort, is dòcha gum b’ fhiach an YAML atharrachadh gu cruth eile. Thar ùine, faodaidh faidhlichean rèiteachaidh a dhol thairis orra fhèin agus an uairsin tha e nas fheàrr an tionndadh gu sgriobtaichean sìmplidh ann an Lua no Python.
Is e rud math a th’ ann an YAML a tha mòran dhaoine dèidheil air airson cho beag agus cho sìmplidh ‘s a tha e, ach tha e fada bhon aon inneal san arsenal agad. Mar sin uaireannan faodaidh tu a dhiùltadh. Tha e furasta leabharlannan parsaidh a lorg airson YAML, mar sin ma tha thu a’ tabhann roghainnean imrich furasta, mairidh an luchd-cleachdaidh agad an teip seo gu ìre gun phian.
Mura h-urrainn dhut a dhèanamh às aonais YAML, gabh na 10 molaidhean sin agus faigh thairis air nach toil leat YAML uair is uair!
Source: www.habr.com