YAML-konfiguration (.yaml)
YAML StandardYAML 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:
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 0AASCII-REPRÆSENTATION: ---\n
Standardisering: YAML 1.2.2 Specification
Tekniske specifikationer
| Containerarkitektur | Indrykningsbaseret, menneskeligt læsbart data-serialiseringsformat, der udvider JSON og understøtter ankre og aliaser |
| Komprimering | Ukomprimeret tekststrøm |
| Byte-rækkefølge | UTF-8-/Unicode-tekststrøm |
| Farverum | Ikke relevant (data-serialisering) |
| Kanaler og struktur | Afbildninger (nøgle-værdi-ordbøger), sekvenser (lister), skalartyper (strenge, tal, booleske værdier) og ankre (&ref/*ref) |
| Maks. dimensioner | Ubegrænset dokumentstørrelse (understøtter strømme med flere dokumenter adskilt af '---') |
| Gennemsigtighed | Ingen |
| Streaming og progressiv | Strømme med flere dokumenter muliggør sekventiel behandling dokument for dokument |
Teknisk sammenligningsmatrix: YAML sammenlignet med konkurrenterne
| Teknisk attribut | YAML (Aktuel) | JSON | TOML | XML |
|---|---|---|---|---|
| Syntaksstil | Hierarki baseret på indrykning med mellemrum | Strenge parenteser og anførelsestegn | Tabeller og nøgle=værdi-par | Ordrige åbne-/lukketags |
| Kommentarunderstøttelse | Indbygget (#-kommentarer) | Ingen kommentarer tilladt | Indbygget (#-kommentarer) | <!-- kommentarer --> |
| Udbredelse i DevOps | Understøttelsen varierer fra program til program. | Understøttelsen varierer fra program til program. | Rust/Python-pakkekonfig | Ældre virksomhedskonfiguration |
| Datagenbrug | Indbyggede 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
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.
Relaterede konverteringspar for YAML
Konvertering af YAML-konfigurationsfiler til JSON-format oversætter menneskelæselige, indrykkede tekststrukturer til strengt maskinlæsbare objekter til webapplikationer.
Konvertering af JSON-konfigurationsfiler til YAML-format forvandler stive programmatiske datastrukturer til rene, menneskelæselige dokumenter, der er meget nemmere for systemadministratorer at redigere.