YAML-konfiguration (.yaml)

YAML Standard

YAML Ain't Markup Language (YAML) er det dominerende dataserialiseringsformat til moderne DevOps, skyinfrastruktur (Kubernetes, Docker Compose) og CI/CD-automatisering, med vægt på menneskelig læsbarhed gennem ren indrykning med blanktegn.

Konverter YAML til JSON

Gratis YAML til JSON-konverter i browseren. Konverter filer med det samme på din enhed.

Undersøgelse og metadata

Operativsystemer og filanalysatorer identificerer YAML-filer ved at inspicere den indledende binære bytesekvens:

Vælg eller træk filer hertil

Privat - filer forlader aldrig din enhed

eller indsæt Ctrl+V
Privatlivsgaranti uden netværksoverførsel: 0 byte overført til eksterne servere. Al behandling foregik lokalt i browserens sandkasse.

Byte-niveau Header-signatur (Magic Bytes)

Operativsystemer og filanalysatorer identificerer YAML-filer ved at inspicere den indledende binære bytesekvens:

HEX-SIGNATUR (OFFSET 0):

2D 2D 2D 0A

ASCII-REPRÆSENTATION: ---\n

Standardisering: YAML 1.2.2 Specification

Tekniske specifikationer

ContainerarkitekturIndrykningsbaseret, menneskeligt læsbart data-serialiseringsformat, der udvider JSON og understøtter ankre og aliaser
KomprimeringUkomprimeret tekststrøm
Byte-rækkefølgeUTF-8-/Unicode-tekststrøm
FarverumIkke relevant (data-serialisering)
Kanaler og strukturAfbildninger (nøgle-værdi-ordbøger), sekvenser (lister), skalartyper (strenge, tal, booleske værdier) og ankre (&ref/*ref)
Maks. dimensionerUbegrænset dokumentstørrelse (understøtter strømme med flere dokumenter adskilt af '---')
GennemsigtighedIngen
Streaming og progressivStrømme med flere dokumenter muliggør sekventiel behandling dokument for dokument

Teknisk sammenligningsmatrix: YAML sammenlignet med konkurrenterne

Teknisk attributYAML (Aktuel)JSONTOMLXML
SyntaksstilHierarki baseret på indrykning med mellemrumStrenge parenteser og anførelsestegnTabeller og nøgle=værdi-parOrdrige åbne-/lukketags
KommentarunderstøttelseIndbygget (#-kommentarer)Ingen kommentarer tilladtIndbygget (#-kommentarer)<!-- kommentarer -->
Udbredelse i DevOpsUnderstøttelsen varierer fra program til program.Understøttelsen varierer fra program til program.Rust/Python-pakkekonfigÆldre virksomhedskonfiguration
DatagenbrugIndbyggede ankre (&) og aliaser (*)Ingen (manuel duplikering)Ingen (manuel duplikering)XML-entiteter

Almindelige korruptionstilstande og hex-gendannelsesvejledning

Parserfejl: 'mapping values are not allowed here' eller indrykningsfejl.

Grundlæggende årsag: Blanding af tabulatorer med mellemrum eller forkert justerede indrykningsniveauer.

Gendannelse: Konverter tabulatorer til mellemrum og valider syntaks ved hjælp af File2File.app YAML Formatter.

Sikkerhedsanalyse og parser-angrebsvektorer

YAML-parsere, der understøtter brugerdefinerede typetags (såsom PyYAMLs 'yaml.load()'), har historisk set tilladt udførelse af fjernkode (RCE) via vilkårlig objektinstansiering.

Kendte angrebsvektorer

  • Vilkårlig kodeeksekvering gennem usikre objektdeserialiseringstags (f.eks. '!!python/object/apply').
  • Entitetsudvidelsesbomber (svarende til 'billion laughs', der anvender YAML-ankere og -aliaser).
  • Typeforvirringssårbarheder på grund af implicit fortolkning af boolske værdier og tidsstempler.

Defensive bedste praksisser: Brug altid sikre YAML-parsere ('yaml.safe_load()' i Python) og håndhæv grænser for ankerudvidelsesdybde.

Historisk oprindelse og milepæle

2021YAML 1.2.2-revisionen udgives, hvilket finpudser JSON-kompatibilitet og formelle grammatikdefinitioner.
2009YAML 1.2 standardiserer YAML som et strengt supersæt af JSON, hvilket betyder, at alt gyldigt JSON også er gyldigt YAML.
2001Clark Evans, Ingy döt Net og Oren Ben-Kiki skaber YAML som et menneskevenligt alternativ til XML.

Vigtige fordele og styrker

  • YAML bruges ofte i infrastrukturværktøjer, men understøttelse og funktion varierer efter implementering.
  • Ren, læsbar syntaks: fjerner rod med krøllede parenteser, kantede parenteser og anførselstegn gennem intuitiv indrykning.
  • Understøtter referencer og ankre (&anchor / *anchor) til at genbruge gentagne konfigurationsblokke uden duplikering.

Tekniske begrænsninger og ulemper

  • Følsom over for blanktegn (whitespace): en utilsigtet tabulator eller et enkelt ekstra mellemrum kan ødelægge dokumenthierarkiet eller forårsage parserfejl.
  • Berygtede typekonverteringsfejl: uanførte ord som 'no', 'on', 'yes' eller landekoder ('NO' for Norge) kan i det skjulte blive til boolske værdier.
  • Betydeligt langsommere fortolkningshastighed sammenlignet med binære formater eller streng JSON.

Interessante tekniske fakta

  • YAML stod oprindeligt for 'Yet Another Markup Language', men blev humoristisk omdøbt til det rekursive akronym 'YAML Ain't Markup Language' for at fremhæve dataserialisering.
  • 'Norway-problemet' er en berømt programmeringsfejl, hvor landekoden 'NO' i en YAML-fil blev fortolket som den boolske værdi 'false'.
  • Enhver gyldig JSON-fil i verden er samtidig også en 100 % gyldig YAML-fil.

Ofte stillede tekniske spørgsmål

Hvad bruges YAML til?

YAML er det primære konfigurationssprog til cloud computing, implementering af Kubernetes-klynger, Docker Compose-filer, GitHub Actions-workflows og softwareindstillinger.

Kan jeg bruge tabulatortegn (tabs) i YAML-filer?

Nej. Den officielle YAML-specifikation forbyder strengt brugen af tabulatortegn til indrykning; du skal altid bruge mellemrum (typisk 2 mellemrum pr. niveau).

Hvordan kan jeg konvertere YAML til JSON?

Du kan konvertere YAML-filer til ren, valideret JSON med et enkelt klik ved hjælp af File2File.app direkte i din webbrowser med fuldstændig beskyttelse af privatlivets fred.