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 serialisointimuoto, joka korostaa luettavuutta selkeän sisennyksen avulla.

Muunna tiedostot muodosta YAML muotoon JSON

Ilmainen selaimessa toimiva muunnin, jolla voit muuntaa tiedostoja muodosta YAML muotoon JSON. Muunna tiedostot hetkessä laitteellasi.

Tarkastele tiedostoa ja sen metatietoja

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

Valitse tai pudota tiedostot tähän

Yksityisesti - tiedostot eivät koskaan poistu laitteeltasi

tai liitä Ctrl+V
Tietosuojatakuu: 0 % verkkosiirtoa Ulkoisille palvelimille ei ole ladattu yhtään tavua. Kaikki käsittely tapahtui paikallisesti selaimen hiekkalaatikossa.

Otsaketunniste tavutasolla (tunnistetavut)

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

HEKSADEKSIMAALINEN TUNNISTE (SIJAINTI 0):

2D 2D 2D 0A

ASCII-ESITYSTAPA: ---\n

Standardointi: YAML 1.2.2 Specification

Tekniset tiedot

SäiliöarkkitehtuuriSisennyksiin perustuva, ihmisystävällinen tiedon serialisointimuoto, joka on JSONin laajennus ja tukee ankkureita sekä aliaksia
PakkausPakkaamaton tekstivirta
Tavujärjestys (Endianness)UTF-8- tai Unicode-tekstivirta
VäriavaruudetEi sovellu (tiedon serialisointi)
Kanavat ja rakenneKuvaukset (avain-arvo-sanakirjat), jonot (luettelot), skalaarityypit (merkkijonot, numerot, totuusarvot) ja ankkurit (&ref/*ref)
Suurimmat mitatAsiakirjan koolla ei ole rajaa (tukee usean asiakirjan virtoja, jotka erotetaan merkillä ”---”)
LäpinäkyvyysEi läpinäkyvyyttä
Suoratoisto ja progressiivinen latausUsean asiakirjan virrat mahdollistavat asiakirjojen peräkkäisen käsittelyn yksi kerrallaan

Tekninen vertailumatriisi: YAML vs. kilpailijat

Tekninen attribuuttiYAML (Nykyinen)JSONTOMLXML
SyntaksityyliSisennysten muodostama hierarkiaPakolliset sulkeet ja lainausmerkitTaulukot ja avain=arvo-paritRunsaasti tekstiä vaativat aloitus-/lopetustunnisteet
KommenttitukiSisäänrakennettu tuki (#-kommentit)Kommentit eivät ole sallittujaSisäänrakennettu tuki (#-kommentit)<!-- kommentit -->
DevOps-käyttöTuki vaihtelee ohjelmittain.Tuki vaihtelee ohjelmittain.Rust-/Python-pakettiasetuksetYrityksen vanhat asetukset
Tiedon uudelleenkäyttöSisäänrakennetut ankkurit (&) ja aliakset (*)Ei ole (manuaalinen kahdennus)Ei ole (manuaalinen kahdennus)XML-entiteetit

Yleiset vioittumistavat ja heksadesimaalinen palautusopas

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.app YAML Formatter -työkalulla.

Tietoturva-analyysi ja tiedostojäsentimien hyö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ä.

Tietoturvan parhaat käytännöt: Käytä aina turvallisia YAML-jäsentimiä (Pythonissa 'yaml.safe_load()') ja rajoita ankkurien laajennussyvyyttä.

Historia ja virstanpylväät

2021YAML 1.2.2 -versiopäivitys julkaistiin, mikä tarkensi 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

  • YAML on yleinen infrastruktuurityökaluissa, mutta tuki ja toiminta vaihtelevat toteutuksen mukaan.
  • 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

  • Välilyöntien käytöstä riippuvainen: 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).

Miten voin muuntaa YAMLin JSON-muotoon?

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