YAML-konfig (.yaml)

YAML Standard

YAML Ain't Markup Language (YAML) är det dominerande dataserialiseringsformatet för modern DevOps, molninfrastruktur (Kubernetes, Docker Compose) och CI/CD-automatisering, med betoning på mänsklig läsbarhet genom indrag med enbart blanksteg.

Konvertera YAML till JSON

Gratis konverterare från YAML till JSON i webbläsaren. Konvertera filer direkt på din enhet.

Granska och metadata

Operativsystem och filanalysverktyg identifierar YAML-filer genom att granska den inledande sekvensen av binära byte:

Välj eller släpp filer här

Privat - filer lämnar aldrig din enhet

eller klistra in Ctrl+V
Integritetsgaranti utan nätverksöverföring: 0 byte laddades upp till externa servrar. All bearbetning skedde lokalt i webbläsarens sandlåda.

Signatur i filhuvudet på bytenivå (magiska byte)

Operativsystem och filanalysverktyg identifierar YAML-filer genom att granska den inledande sekvensen av binära byte:

HEX-SIGNATUR (OFFSET 0):

2D 2D 2D 0A

ASCII-REPRESENTATION: ---\n

Standardisering: YAML 1.2.2 Specification

Tekniska specifikationer

ContainerarkitekturIndragsbaserat, människovänligt dataserialiseringsformat och utökning av JSON med stöd för ankare och alias
KomprimeringOkomprimerad textström
ByteordningUTF-8-/Unicode-textström
FärgrymderEj tillämpligt (dataserialisering)
Kanaler och strukturMappningar (nyckel-värde-ordböcker), sekvenser (listor), skalära typer (strängar, tal, booleska värden) samt ankare (&ref/*ref)
Maximala dimensionerObegränsad dokumentstorlek (stöder flerdokumentströmmar separerade med ”---”)
TransparensIngen
Strömning och progressiv visningFlerdokumentströmmar möjliggör sekventiell bearbetning dokument för dokument

Teknisk jämförelsematris: YAML jämfört med konkurrenter

Tekniskt attributYAML (Aktuell)JSONTOMLXML
SyntaxstilHierarki med indrag av blankstegStrikta parenteser och citatteckenTabeller och nyckel=värde-parUtförliga start- och sluttaggar
Stöd för kommentarerInbyggt (#-kommentarer)Inga kommentarer tillåtnaInbyggt (#-kommentarer)<!-- kommentarer -->
DevOps-användningStödet varierar mellan program.Stödet varierar mellan program.Paketkonfiguration för Rust/PythonÄldre företagskonfiguration
DataåteranvändningInbyggda ankare (&) och alias (*)Ingen (manuell dubblering)Ingen (manuell dubblering)XML-entiteter

Vanliga skadeorsaker och hex-återställningsguide

Parserfel: 'mapping values are not allowed here' eller indenteringsfel.

Grundorsak: Blandning av tabbar med mellanslag eller felinriktade indenteringsnivåer.

Återställning: Konvertera tabbar till mellanslag och validera syntaxen med File2File.app YAML Formatter.

Säkerhetsanalys och attackvektorer för tolkar

YAML-tolkar som stöder anpassade typannoteringar (som PyYAML:s 'yaml.load()') har historiskt tillåtit fjärrkodkörning genom att skapa godtyckliga objekt.

Kända attackvektorer

  • Godtycklig kodkörning genom osäkra deserialiseringstaggar för objekt (t.ex. '!!python/object/apply').
  • Entitetsutvidgningsbomber (motsvarigheten till 'billion laughs' med YAML-ankare och alias).
  • Typförväxlingssårbarheter på grund av implicit tolkning av boolska värden och tidsstämplar.

Rekommenderade skyddsåtgärder: Använd alltid säkra YAML-tolkar ('yaml.safe_load()' i Python) och tillämpa gränser för ankarexpansionsdjup.

Historiskt ursprung och milstolpar

2021YAML 1.2.2-revideringen publiceras, vilket förfinar JSON-kompatibilitet och formella grammatikdefinitioner.
2009YAML 1.2 standardiserar YAML som en strikt övermängd av JSON, vilket innebär att all giltig JSON är giltig YAML.
2001Clark Evans, Ingy döt Net och Oren Ben-Kiki skapar YAML som ett människovänligt alternativ till XML.

Viktiga fördelar

  • YAML används ofta i infrastrukturverktyg, men stöd och beteende varierar mellan implementationer.
  • Ren, läsbar syntax: eliminerar röran av klamrar, parenteser och citattecken genom intuitiv indentering.
  • Stöder referenser och ankarreferenser (&anchor / *anchor) för att återanvända upprepade konfigurationsblock utan dubblering.

Tekniska begränsningar

  • Blankstegskänsligt: en oavsiktlig tab eller ett extra mellanslag kan förstöra dokumenthierarkin eller orsaka parserfel.
  • Ökända typomvandlingsfel: ord utan citattecken som 'no', 'on', 'yes' eller landskoder ('NO' för Norge) kan i tysthet tolkas som booleska värden.
  • Betydligt långsammare parsningstakt jämfört med binära format eller strikt JSON.

Intressant teknisk kuriosa

  • YAML stod ursprungligen för 'Yet Another Markup Language', men döptes skämtsamt om till den rekursiva akronymen 'YAML Ain't Markup Language' för att betona dataserialisering.
  • 'Norge-problemet' är ett berömt programmeringsfel där landskoden 'NO' i en YAML-fil tolkades som det boolska värdet 'false'.
  • Varje giltig JSON-fil i världen är samtidigt också en 100 % giltig YAML-fil.

Vanliga tekniska frågor

Vad används YAML till?

YAML är det primära konfigurationsspråket för molnberäkning, Kubernetes-klusterdistribution, Docker Compose-filer, GitHub Actions-arbetsflöden och programvaruinställningar.

Kan jag använda tabbade indrag i YAML-filer?

Nej. Den officiella YAML-specifikationen förbjuder helt tabbtecken för indrag; du måste alltid använda mellanslag (vanligtvis 2 mellanslag per nivå).

Hur kan jag konvertera YAML till JSON?

Du kan konvertera YAML-filer till ren, validerad JSON med ett enda klick i File2File.app direkt i webbläsaren, med full respekt för din integritet.