YAML-konfiguraatio (.yaml)

YAML Standardi

YAML Ain't Markup Language (YAML) on nykyaikaisen DevOpsin, pilvi-infrastruktuurin (Kubernetes, Docker Compose) ja CI/CD-automaation hallitseva tiedon sarjoitusmuoto, joka korostaa ihmisen luettavuutta puhtaan sisennysvälistyksen avulla.

Muunna tiedostot muodosta YAML muotoon JSON

Ilmainen selaimen sisäinen YAML - JSON-muunnin. Muunna tiedostoja välittömästi laitteellasi.

Tarkastele ja metatiedot

Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat YAML-tiedostot tarkistamalla tiedoston alun binäärisarjan:

Valitse tai pudota tiedostot tähän

100 % yksityinen selaimen sisäinen muunnos - tiedostot eivät poistu laitteeltasi

tai liitä Ctrl+V
Tietosuojatakuu: 0 % verkkosiirtoa 0 tavua ladattu ulkoisille palvelimille. Kaikki käsittely tapahtui paikallisesti selaimen hiekkalaatikossa.

Tavutason otsikon allekirjoitus (Magic Bytes)

Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat YAML-tiedostot tarkistamalla tiedoston alun binäärisarjan:

HEX-ALLEKIRJOITUS (OFFSET 0):

2D 2D 2D 0A

ASCII-ESITYSTAPA: ---\n

Standardointi: YAML 1.2.2 Specification

Tekniset tiedot

SäiliöarkkitehtuuriIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
PakkausUncompressed text stream
Tavujärjestys (Endianness)UTF-8 / Unicode text stream
VäriavaruudetN/A (Data Serialization)
Kanavat ja rakenneMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Suurimmat mitatUnbounded document size (supports multi-document streams separated by '---')
LäpinäkyvyysNone
Suoratoisto ja progressiivinen latausMulti-document streams allow sequential document-by-document processing

Tekninen vertailumatriisi: YAML vs. kilpailijat

Tekninen attribuuttiYAML (Nykyinen)JSONTOMLXML
SyntaksityyliSisennysvälistyshierarkiaTiukat hakasulkeet ja lainausmerkitTaulukot ja avain=arvo-paritPolveilevat aloitus-/lopetustunnisteet
KommenttitukiNatiivi (#-kommentit)Kommentit eivät ole sallittujaNatiivi (#-kommentit)<!-- kommentit -->
DevOps-käyttöönottoYleismaailmallinen standardi (Kubernetes, CI/CD)Yleismaailmallinen API-standardiRust-/Python-pakettiasetuksetYrityksen vanhat asetukset
Tiedon uudelleenkäyttöNatiivit ankkurit (&) ja aliakset (*)Ei ole (manuaalinen kahdennus)Ei ole (manuaalinen kahdennus)XML-entiteetit

Yleiset korruptiotilat ja heksatietojehdotusopas

Jäsennysvirhe: 'mapping values are not allowed here' tai sisennysvirhe.

Perussyy: Sarkainten sekoittaminen välilyönteihin tai väärin kohdistetut sisennystasot.

Korjaus: Muunna sarkaimet välilyönneiksi ja tarkista syntaksi File2File YAML Formatter -työkalulla.

Turvallisuusanalyysi ja jäsenninhyökkäysvektorit

YAML-jäsentimet, jotka tukevat mukautettuja tietotyypin tunnisteita (kuten PyYAML:n 'yaml.load()'), sallivat historiallisesti etäkoodin suorittamisen mielivaltaisen olioiden luonnin kautta.

Tunnetut hyökkäysvektorit

  • Mielivaltainen koodin suoritus turvattomien olion deserialisointitunnisteiden kautta (esim. '!!python/object/apply').
  • Entiteettien laajennuspommit (vastine miljardille naurulle käyttämällä YAML-ankkureita ja aliaksia).
  • Tietotyyppien sekaannushaavoittuvuudet, jotka johtuvat implisiittisestä totuusarvojen ja aikaleimojen jäsennyksestä.

Parhaat puolustuskäytännöt:

Historia ja virstanpylväät

2021YAML 1.2.2 -versiopäivitys julkaistaan, mikä tarkentaa JSON-yhteensopivuutta ja muodollisia kielioppimäärittelyjä.
2009YAML 1.2 standardisoi YAML:n tiukkana JSON-ylijoukkona, mikä tarkoittaa, että kaikki kelvollinen JSON on kelvollista YAML:ää.
2001Clark Evans, Ingy döt Net ja Oren Ben-Kiki luovat YAML:n ihmisystävällisenä vaihtoehtona XML:lle.

Tärkeimmät edut

  • Kiistaton standardi nykyaikaiselle pilvi-infrastruktuurille: käytetään maailmanlaajuisesti Kubernetes-malleissa, Docker Composessa ja GitHub Actionsissa.
  • Puhdas, luettava syntaksi: poistaa aaltosulkujen, hakasulkujen ja lainausmerkkien aiheuttaman sekavuuden intuitiivisella sisennyksellä.
  • Tukee viittauksia ja ankkureita (&anchor / *anchor) toistuvien asetuslohkojen uudelleenkäyttöön ilman kaksoiskappaleita.

Tekniset rajoitukset

  • Herkkä tyhjätiloille: vahingossa tehty sarkain tai yksittäinen ylimääräinen välilyönti voi rikkoa tiedoston hierarkian tai aiheuttaa jäsennysvirheitä.
  • Surullisen kuuluisat tietotyyppimuunnosbugit: lainaamattomat sanat, kuten 'no', 'on', 'yes' tai maakoodit ('NO' Norjalle), voivat muuttua huomaamatta totuusarvoiksi.
  • Merkittävästi hitaampi jäsennysnopeus verrattuna binäärimuotoihin tai tiukkaan JSON:iin.

Mielenkiintoisia teknisiä faktoja

  • YAML tarkoitti alun perin 'Yet Another Markup Language', mutta nimettiin leikkisästi uudelleen rekursiiviseksi lyhenteeksi 'YAML Ain't Markup Language' korostamaan tiedon sarjoitusta.
  • 'Norja-ongelma' on kuuluisa ohjelmointibugi, jossa maakoodi 'NO' YAML-tiedostossa tulkittiin totuusarvoksi 'false'.
  • Jokainen maailman kelvollinen JSON-tiedosto on samanaikaisesti myös 100-prosenttisesti kelvollinen YAML-tiedosto.

Usein kysytyt tekniset kysymykset

Mihin YAMLia käytetään?

YAML on pilvilaskennan, Kubernetes-klusterien käyttöönottojen, Docker Compose -tiedostojen, GitHub Actions -työnkulkujen ja ohjelmistoasetusten ensisijainen määrityskieli.

Voinko käyttää sarkainmerkkejä (tab) YAML-tiedostoissa?

Et. Virallinen YAML-spesifikaatio kieltää jyrkästi sarkainmerkkien käytön sisennyksissä; sinun on aina käytettävä välilyöntejä (tyypillisesti 2 välilyöntiä tasoa kohti).

Voinko muuntaa YAMLin JSON-muotoon?

Voit muuntaa YAML-tiedostot puhtaaksi, validoiduksi JSON-muodoksi yhdellä napsautuksella File2File.appilla suoraan verkkoselaimessasi täydellä tietosuojalla.