YAML konfiguráció (.yaml)

YAML Szabvány

A YAML Ain't Markup Language (YAML) a modern DevOps, a felhőinfrastruktúra (Kubernetes, Docker Compose) és a CI/CD automatizálás domináns adatok szerializálására szolgáló formátuma, amely a tiszta behúzások révén az emberi olvashatóságot helyezi előtérbe.

YAML konvertálása erre: JSON

Ingyenes, böngészőben használható YAML-konverter JSON formátumba. A fájlokat azonnal konvertálhatja az eszközén.

Vizsgálat és metaadatok

Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) YAML fájlokat:

Válasszon ki vagy húzzon ide fájlokat

Privát - a fájlok soha nem hagyják el az eszközét

vagy beillesztés Ctrl+V
Adatvédelmi garancia hálózati adatátvitel nélkül: 0 bájt került fel külső szerverekre. Minden feldolgozás helyben, a böngésző elkülönített környezetében történt.

Bájtszintű fejlécaláírás (fájlazonosító bájtok)

Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) YAML fájlokat:

HEX ALÁÍRÁS (ELTOLÁS 0):

2D 2D 2D 0A

ASCII ÁBRÁZOLÁS: ---\n

Szabványosítás: YAML 1.2.2 Specification

Műszaki specifikációk

Konténer architektúraBehúzásalapú, emberbarát adatszerializációs formátum, a JSON kiterjesztése horgonyok és álnevek támogatásával
TömörítésTömörítetlen szövegfolyam
BájtsorrendUTF-8 / Unicode szövegfolyam
SzínterekNem alkalmazható (adatszerializáció)
Csatornák és struktúraLeképezések (kulcs-érték szótárak), sorozatok (listák), skalárértékek (karakterláncok, számok, logikai értékek), valamint horgonyok (&ref/*ref)
Max. méretekA dokumentumméret nincs korlátozva (a többdokumentumos adatfolyamok dokumentumait a „---” választja el)
ÁtlátszóságNincs
Streaming és progresszívA többdokumentumos adatfolyam lehetővé teszi a dokumentumok egymás utáni feldolgozását

Műszaki összehasonlító mátrix: YAML vs. versenytársak

Technikai attribútumYAML (Jelenlegi)JSONTOMLXML
SzintaxisstílusBehúzással jelölt hierarchiaSzigorú zárójelek és idézőjelekTáblázatok és kulcs-érték-párokHosszú nyitó- és zárócímkék
Megjegyzések támogatásaBeépített támogatás (# megjegyzések)Megjegyzések nem engedélyezettekBeépített támogatás (# megjegyzések)<!-- megjegyzések -->
DevOps-elterjedtségA támogatás programonként eltér.A támogatás programonként eltér.Rust/Python-csomagok konfigurációjaVállalati örökölt konfiguráció
Adatok újrafelhasználásaBeépített horgonyok (&) és álnevek (*)Nincs (kézi duplikáció)Nincs (kézi duplikáció)XML entitások

Gyakori sérülési módok és hexadecimális helyreállítási útmutató

Elemzési hiba: 'mapping values are not allowed here' vagy behúzási hiba.

Kiváltó ok: Tabulátorok keverése szóközökkel vagy rosszul igazított behúzási szintek.

Helyreállítás: Alakítsa át a tabulátorokat szóközökké, és ellenőrizze a szintaxist a File2File.app YAML Formatter segítségével.

Biztonsági elemzés és elemző (parser) támadási vektorok

Az egyedi típuscímkéket támogató YAML-elemzők (mint a PyYAML 'yaml.load()' függvénye) korábban lehetővé tették a távoli kódfuttatást tetszőleges objektumok példányosításával.

Ismert támadási vektorok

  • Tetszőleges kód futtatása nem biztonságos objektum-deszerializáló címkék révén (pl. '!!python/object/apply').
  • Entitásbővítési bombák (a „billion laughs” támadás YAML-megfelelője YAML-horgonyok és álnevek használatával).
  • Típuskeveredési sérülékenységek a logikai értékek és az időbélyegek implicit értelmezése miatt.

Ajánlott védekezési módszerek: Mindig használjon biztonságos YAML-elemzőket ('yaml.safe_load()' Pythonban), és korlátozza a horgonyok kibontási mélységét.

Történeti háttér és mérföldkövek

2021A YAML 1.2.2 revízió közzététele, amely finomítja a JSON-kompatibilitást és a formális nyelvtani definíciókat.
2009A YAML 1.2 szabványosítja a YAML-t a JSON szigorú szuperhalmazaként, vagyis minden érvényes JSON egyben érvényes YAML is.
2001Clark Evans, Ingy döt Net és Oren Ben-Kiki létrehozza a YAML-t az XML emberbarát alternatívájaként.

Főbb előnyök

  • A YAML gyakori az infrastruktúra-eszközökben, de a támogatás és a működés megvalósításonként eltér.
  • Tiszta, olvasható szintaxis: az intuitív behúzásnak köszönhetően nincs szükség kapcsos zárójelekre, szögletes zárójelekre és idézőjelekre.
  • Támogatja a hivatkozásokat és horgonyokat (&anchor / *anchor) az ismétlődő konfigurációs blokkok ismétlés nélküli újrafelhasználásához.

Technikai korlátok és hátrányok

  • A behúzásra érzékeny: egy véletlen tabulátor vagy egyetlen extra szóköz is elronthatja a dokumentumhierarchiát vagy elemzési hibát okozhat.
  • Hírhedt típuskényszerítési hibák: az idézőjelek nélküli szavak, mint a 'no', 'on', 'yes', vagy az országkódok ('NO' Norvégia kódjaként) csendben logikai értékekké válhatnak.
  • Jelentősen lassabb elemzési sebesség a bináris formátumokhoz vagy a szigorú JSON-hoz képest.

Érdekes technikai tudnivalók

  • A YAML eredetileg a 'Yet Another Markup Language' rövidítése volt, de tréfásan a rekurzív 'YAML Ain't Markup Language' feloldásra változtatták a nevét az adatszerializáció hangsúlyozására.
  • A 'Norvégia-probléma' egy híres programozási hiba, amelyben a YAML-fájlban szereplő 'NO' országkódot 'false' logikai értékként elemezték.
  • A világ minden érvényes JSON-fájlja egyidejűleg 100%-ban érvényes YAML-fájl is.

Gyakran Ismételt Műszaki Kérdések

Mire használatos a YAML?

A YAML a felhőalapú számítástechnika, a Kubernetes-fürtök üzembe helyezése, a Docker Compose-fájlok, a GitHub Actions munkafolyamatok és a szoftverbeállítások elsődleges konfigurációs nyelve.

Használhatok tabulátorokat a YAML-fájlokban?

Nem. A hivatalos YAML-specifikáció szigorúan tiltja a tabulátor karakterek használatát behúzáshoz; mindig szóközöket kell használni (szintenként általában 2 szóközt).

Hogyan konvertálhatom a YAML-t JSON-ba?

A File2File.app segítségével egyetlen kattintással, közvetlenül a böngészőben, teljes adatvédelem mellett konvertálhatja a YAML-fájlokat tiszta, érvényesített JSON-fájlokká.