YAML-konfigurasjon (.yaml)

YAML Standard

YAML Ain't Markup Language (YAML) er det dominerende dataserialiseringsformatet for moderne DevOps, skyinfrastruktur (Kubernetes, Docker Compose) og CI/CD-automatisering, med vekt på menneskelig lesbarhet gjennom ren innrykk med blanktegn.

Konverter YAML til JSON

Gratis YAML til JSON-konverterer i nettleseren. Konverter filer umiddelbart på enheten din.

Inspeksjon og metadata

Operativsystemer og filanalysatorer identifiserer YAML-filer ved å undersøke den innledende binære bytesekvensen:

Velg eller slipp filer her

Privat - filer forlater aldri enheten din

eller lim inn Ctrl+V
Personverngaranti uten nettverksoverføring: 0 byte ble lastet opp til eksterne servere. All behandling foregikk lokalt i det isolerte nettlesermiljøet ditt.

Filsignatur på bytenivå (magiske byte)

Operativsystemer og filanalysatorer identifiserer YAML-filer ved å undersøke den innledende binære bytesekvensen:

HEX-SIGNATUR (OFFSET 0):

2D 2D 2D 0A

ASCII-REPRESENTASJON: ---\n

Standardisering: YAML 1.2.2 Specification

Tekniske spesifikasjoner

BeholderarkitekturInnrykksbasert, menneskeleselig dataserialiseringsformat og overmengde av JSON, med støtte for ankre og aliaser
KomprimeringUkomprimert tekststrøm
BytterekkefølgeUTF-8-/Unicode-tekststrøm
FargeromIkke relevant (dataserialisering)
Kanaler og strukturAvbildninger (nøkkel-verdi-ordbøker), sekvenser (lister), skalartyper (strenger, tall, boolske verdier) og ankre (&ref/*ref)
Maks. dimensjonerUbegrenset dokumentstørrelse (støtter strømmer med flere dokumenter atskilt av «---»)
GjennomsiktighetIngen
Strømming og progressiv visningStrømmer med flere dokumenter gjør det mulig å behandle dokumentene sekvensielt, ett om gangen

Teknisk sammenligningsmatrise: YAML sammenlignet med konkurrenter

Teknisk attributtYAML (Gjeldende)JSONTOMLXML
SyntaksstilHierarki uttrykt med innrykk og blanktegnStrenge klammer og sitattegnTabeller og nøkkel=verdi-parOrdflytende åpnings-/lukkekoder
Støtte for kommentarerInnebygd (#-kommentarer)Ingen kommentarer tillattInnebygd (#-kommentarer)<!-- kommentarer -->
DevOps-adopsjonStøtten varierer mellom programmer.Støtten varierer mellom programmer.Rust-/Python-pakkekonfigurasjonEldre bedriftskonfigurasjon
DatagjenbrukInnebygde ankre (&) og aliaser (*)Ingen (manuell duplisering)Ingen (manuell duplisering)XML-entiteter

Vanlige korrupsjonsmoduser og heksadesimal gjenopprettingsveiledning

Parserfeil: 'mapping values are not allowed here' eller innrykkfeil.

Underliggende årsak: Blanding av tabulatorer og mellomrom eller feiljusterte innrykksnivåer.

Utbedring: Konverter tabulatorer til mellomrom og valider syntaksen ved hjelp av File2File.app YAML-formatereren.

Sikkerhetsanalyse og angrepsvektorer mot parsere

YAML-parsere som støtter egendefinerte typetagger (som PyYAMLs 'yaml.load()') tillot historisk sett fjernkjøring av kode via vilkårlig objektinstansiering.

Kjente angrepsvektorer

  • Vilkårlig kodekjøring gjennom usikre deserialiseringstagger for objekter (f.eks. '!!python/object/apply').
  • Enhetsutvidelsesbomber (tilsvarer «billion laughs» som bruker YAML-ankere og -aliaser).
  • Typeforvekslingssårbarheter på grunn av implisitt tolkning av boolske verdier og tidsstempler.

Anbefalte sikkerhetstiltak: Bruk alltid sikre YAML-parsere ('yaml.safe_load()' i Python) og håndhev dybdegrenser for ankerutvidelse.

Historisk opprinnelse og milepæler

2021YAML 1.2.2-revisjonen blir publisert, og presiserer JSON-kompatibiliteten og de formelle grammatikkdefinisjonene.
2009YAML 1.2 standardiserer YAML som et strengt overmengdeformat av JSON, noe som betyr at all gyldig JSON er gyldig YAML.
2001Clark Evans, Ingy döt Net og Oren Ben-Kiki skaper YAML som et menneskevennlig alternativ til XML.

Viktige fordeler

  • YAML brukes ofte i infrastrukturverktøy, men støtte og funksjonalitet varierer etter implementasjon.
  • Ren, lesbar syntaks: fjerner rotet med krøllparenteser, hakeparenteser og anførselstegn gjennom intuitivt innrykk.
  • Støtter referanser og ankre (&anchor / *anchor) for å gjenbruke gjentatte konfigurasjonsblokker uten duplisering.

Tekniske begrensninger og ulemper

  • Sensitiv for blanktegn: en tilfeldig tabulator eller et enkelt ekstra mellomrom kan ødelegge dokumenthierarkiet eller forårsake parserfeil.
  • Beryktede typekonverteringsfeil: ord uten anførselstegn som 'no', 'on', 'yes' eller landskoder ('NO' for Norge) kan i det skjulte bli til boolske verdier.
  • Betydelig lavere parsinghastighet enn for binære formater eller streng JSON.

Interessante tekniske fakta

  • YAML sto opprinnelig for 'Yet Another Markup Language', men ble spøkefullt omdøpt til det rekursive akronymet 'YAML Ain't Markup Language' for å understreke dataserialisering.
  • «Norge-problemet» er en berømt programmeringsfeil der landskoden 'NO' i en YAML-fil ble tolket som den boolske verdien 'false'.
  • Hver eneste gyldige JSON-fil i verden er samtidig en 100 % gyldig YAML-fil.

Ofte stilte tekniske spørsmål

Hva brukes YAML til?

YAML er det primære konfigurasjonsspråket for dataskytjenester, Kubernetes-klusterdistribusjon, Docker Compose-filer, GitHub Actions-arbeidsflyter og programvareinnstillinger.

Kan jeg bruke tabulatorer i YAML-filer?

Nei. Den offisielle YAML-spesifikasjonen forbyr strengt bruk av tabulatortegn for innrykk; du må alltid bruke mellomrom (vanligvis 2 mellomrom per nivå).

Hvordan kan jeg konvertere YAML til JSON?

Du kan konvertere YAML-filer til ren, validert JSON med ett klikk ved hjelp av File2File.app direkte i nettleseren din med fullstendig personvern.