YAML-konfiguratsioon (.yaml)
YAML StandardYAML Ain't Markup Language (YAML) on kaasaegse DevOps-i, pilveinfrastruktuuri (Kubernetes, Docker Compose) ja CI/CD automatiseerimise domineeriv andmete järjestusvorming, mis rõhutab inimeste loetavust puhta tühikutega taande abil.
Teisenda formaadist YAML formaati JSON
Tasuta YAML -> JSON konverter brauseris. Teisenda faile koheselt oma seadmes.
Kontrolli ja metaandmed
Operatsioonisüsteemid ja failianalüsaatorid tuvastavad YAML faile, kontrollides algset binaarset baidijada:
Baidi-taseme päise allkiri (maagilised baidid)
Operatsioonisüsteemid ja failianalüsaatorid tuvastavad YAML faile, kontrollides algset binaarset baidijada:
HEX-ALLKIRI (NIHE 0):
2D 2D 2D 0AASCII-ESITUS: ---\n
Standardiseerimine: YAML 1.2.2 Specification
Tehnilised andmed
| Konteineri arhitektuur | Indentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases |
| Tihendamine | Uncompressed text stream |
| Baitide järjekord (Endianness) | UTF-8 / Unicode text stream |
| Värviruumid | N/A (Data Serialization) |
| Kanalid ja struktuur | Mappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref) |
| Max mõõtmed | Unbounded document size (supports multi-document streams separated by '---') |
| Läbipaistvus | None |
| Voogedastus ja progressiivsus | Multi-document streams allow sequential document-by-document processing |
Tehniline võrdlusmaatriks: YAML vs konkurendid
| Tehniline atribuut | YAML (Praegune) | JSON | TOML | XML |
|---|---|---|---|---|
| Süntaksi stiil | Taande tühikute hierarhia | Ranged sulud ja jutumärgid | Tabelid ja võti=väärtus paarid | Mahukad avamis-/sulgemissildid |
| Kommentaaride tugi | Omane (# kommentaarid) | Kommentaarid pole lubatud | Omane (# kommentaarid) | <!-- kommentaarid --> |
| DevOps-i kasutuselevõtt | Universaalne standard (Kubernetes, CI/CD) | Universaalne API standard | Rusti/Pythoni paketi seadistus | Ettevõtte pärandseadistus |
| Andmete taaskasutus | Omased ankrud (&) ja aliasteed (*) | Puudub (käsitsi dubleerimine) | Puudub (käsitsi dubleerimine) | XML olemid |
Levinud riknemisvead ja heksataaste juhend
Parseri viga: 'mapping values are not allowed here' või taandeviga.
Juurpõhjus: Tabulaatorite segamine tühikutega või valesti joondatud taandetasemed.
Taastamine: Teisenda tabulaatorid tühikuteks ja kontrolli süntaksit File2File YAML-i vormindaja abil.
Turvaanalüüs ja parsimisründevektorid
YAML-i parserid, mis toetavad kohandatud tüübisilte (nagu PyYAML-i 'yaml.load()'), lubasid ajalooliselt kaugkoodi käivitamist meelevaldse objekti loomise kaudu.
Teadaolevad ründavektorid
- Meelevaldne koodi käivitamine ebaturvaliste objektide deserialiseerimise siltide kaudu (nt '!!python/object/apply').
- Olemite laiendamise pommid (miljoni naeru ekvivalent, mis kasutab YAML-i ankruid ja aliaseid).
- Tüübi segaduse haavatavused kaudse tõeväärtuste ja ajatemplite parsimise tõttu.
Kaitsealased parimad tavad:
Ajalooline taust ja verstapostid
Peamised eelised
- Vaieldamatu standard kaasaegse pilveinfrastruktuuri jaoks: kasutatakse universaalselt Kubernetese manifestides, Docker Compose'is ja GitHub Actionsis.
- Puhas, loetav süntaks: kõrvaldab loogeliste sulgude, kantiliste sulgude ja jutumärkide segaduse intuitiivse taande abil.
- Toetab viiteid ja ankruid (&anchor / *anchor) korduvate konfiguratsiooniplokkide taaskasutamiseks ilma dubleerimiseta.
Tehnilised piirangud ja puudused
- Tühikutundlik: juhuslik tabulaator või üksainus lisatühik võib dokumendi hierarhiat rikkuda või põhjustada parsimisvigu.
- Kurikuulsad tüübiteisenduse vead: jutumärkideta sõnad nagu 'no', 'on', 'yes' või riigikoodid ('NO' Norra jaoks) võivad märkamatult muutuda tõeväärtusteks.
- Märgatavalt aeglasem parsimiskiirus võrreldes binaarvormingute või range JSON-iga.
Huvitavaid tehnilisi fakte
- YAML tähendas algselt 'Yet Another Markup Language', kuid nimetati naljatlevalt ümber rekursiivseks akronüümiks 'YAML Ain't Markup Language', et rõhutada andmete järjestamist.
- 'Norra probleem' on kuulus programmeerimisvea, kus YAML-failis olev riigikood 'NO' analüüsiti tõeväärtuseks 'false'.
- Kõik maailma kehtivad JSON-failid on samal ajal ka 100% kehtivad YAML-failid.
Korduma kippuvad tehnilised küsimused
Milleks YAML-i kasutatakse?
YAML on pilvandmetöötluse, Kubernetes klastri juurutamise, Docker Compose failide, GitHub Actionsi töövoogude ja tarkvaraseadete peamine konfiguratsioonikeel.
Kas ma saan YAML-failides kasutada tabulatsioone (tab)?
Ei. Ametlik YAML-i spetsifikatsioon keelab rangelt tabulatsioonimärkide kasutamise taandeks; peate alati kasutama tühikuid (tavaliselt 2 tühikut taseme kohta).
Kuidas ma saan YAML-i JSON-iks konverteerida?
Saate YAML-failid ühe klõpsuga teisendada puhtaks, valideeritud JSON-iks, kasutades File2File.app-i otse oma veebibrauseris täieliku privaatsusega.
Seotud YAML teisenduspaarid
YAML-konfiguratsioonifailide teisendamine JSON-vormingusse muudab inimloetavad taandega tekstistruktuurid rangeteks masinloetavateks objektideks veebirakenduste jaoks.
JSON-konfiguratsioonifailide teisendamine YAML-vormingusse muudab jäigad programmilised andmestruktuurid puhasteks, inimloetavateks dokumentideks, mida süsteemiadministraatoritel on palju lihtsam muuta.