YAML-configuratie (.yaml)
YAML StandaardYAML Ain't Markup Language (YAML) is het dominante gegevensserialisatieformaat voor moderne DevOps, cloudinfrastructuren (Kubernetes, Docker Compose) en CI/CD-automatisering. Het legt de nadruk op leesbaarheid voor mensen dankzij overzichtelijke inspringing met witruimte.
YAML naar JSON converteren
Gratis YAML-naar-JSON-converter in uw browser. Converteer bestanden direct op uw apparaat.
Inspecteren en metadata
Besturingssystemen en bestandsanalysators herkennen YAML-bestanden aan de hand van de eerste binaire bytesequentie:
Bestandshandtekening op byteniveau (magic bytes)
Besturingssystemen en bestandsanalysators herkennen YAML-bestanden aan de hand van de eerste binaire bytesequentie:
HEX-HANDTEKENING (OFFSET 0):
2D 2D 2D 0AASCII-WEERGAVE: ---\n
Standaardisatie: YAML 1.2.2-specificatie
Technische specificaties
| Containerarchitectuur | Op inspringing gebaseerd, mensvriendelijk gegevensserialisatieformaat als superset van JSON dat ankers en aliassen ondersteunt |
| Compressie | Niet-gecomprimeerde tekststroom |
| Bytevolgorde (endianness) | UTF-8 / Unicode-tekststroom |
| Kleurruimten | N.v.t. (gegevensserialisatie) |
| Kanalen en structuur | Mappings (sleutel-waardewoordenboeken), reeksen (lijsten), scalartypen (tekenreeksen, getallen, booleans) en ankers (&ref/*ref) |
| Maximale afmetingen | Onbegrensde documentgrootte (ondersteunt stromen met meerdere documenten gescheiden door '---') |
| Transparantie | Geen |
| Streaming en progressief | Stromen met meerdere documenten maken sequentiële verwerking per document mogelijk |
Technische vergelijkingsmatrix: YAML versus concurrenten
| Technisch kenmerk | YAML (Huidig) | JSON | TOML | XML |
|---|---|---|---|---|
| Syntaxisstijl | Hiërarchie op basis van inspringing en witruimte | Strikte haken en aanhalingstekens | Tabellen en sleutel=waarde-paren | Uitgebreide openende en sluitende tags |
| Ondersteuning voor opmerkingen | Ingebouwd (#-opmerkingen) | Geen opmerkingen toegestaan | Ingebouwd (#-opmerkingen) | <!-- opmerkingen --> |
| DevOps-adoptie | Ondersteuning verschilt per programma. | Ondersteuning verschilt per programma. | Rust/Python-pakketconfiguratie | Verouderde configuratie in bedrijfsomgevingen |
| Gegevenshergebruik | Ingebouwde ankers (&) en aliassen (*) | Geen (handmatige duplicatie) | Geen (handmatige duplicatie) | XML-entiteiten |
Veelvoorkomende beschadigingen en gids voor hex-herstel
Parserfout: 'mapping values are not allowed here' of inspringfout.
Oorzaak: Het combineren van tabs en spaties of onjuist uitgelijnde inspringingsniveaus.
Herstel: Converteer tabs naar spaties en valideer de syntaxis met de YAML-formatter van File2File.app.
Beveiligingsanalyse en aanvalsvectoren voor parsers
YAML-parsers die aangepaste typetags ondersteunen (zoals 'yaml.load()' van PyYAML), stonden historisch gezien uitvoering van externe code toe via willekeurige objectinstantiatie.
Bekende aanvalsvectoren
- Uitvoering van willekeurige code via onveilige objectdeserialisatietags (bijv. '!!python/object/apply').
- Entiteitsexpansiebommen (het equivalent van de billion-laughs-aanval met YAML-ankers en -aliassen).
- Kwetsbaarheden door typeverwarring als gevolg van impliciete verwerking van booleans en tijdstempels.
Aanbevolen beveiligingspraktijken: Gebruik altijd veilige YAML-parsers ('yaml.safe_load()' in Python) en handhaaf limieten voor de diepte van ankerexpansie.
Historische oorsprong en mijlpalen
Belangrijkste voordelen
- YAML komt veel voor in infrastructuurtools, maar de ondersteuning en het gedrag verschillen per implementatie.
- Schone, leesbare syntaxis: elimineert de rommel van accolades, haken en aanhalingstekens door intuïtieve inspringing.
- Ondersteunt verwijzingen en ankers (&anchor / *anchor) om herhaalde configuratieblokken te hergebruiken zonder duplicatie.
Technische beperkingen
- Gevoelig voor witruimte: een per ongeluk ingevoerde tab of extra spatie kan de documenthiërarchie beschadigen of verwerkingsfouten veroorzaken.
- Berucht om fouten door automatische typeconversie: woorden zonder aanhalingstekens zoals 'no', 'on', 'yes' of landcodes ('NO' voor Noorwegen) kunnen ongemerkt in booleans worden omgezet.
- Aanzienlijk tragere verwerkingssnelheid vergeleken met binaire formaten of strikte JSON.
Interessante technische weetjes
- YAML stond oorspronkelijk voor 'Yet Another Markup Language', maar werd voor de grap hernoemd naar het recursieve acroniem 'YAML Ain't Markup Language' om de nadruk te leggen op gegevensserialisatie.
- Het 'Norway problem' (Noorwegenprobleem) is een beroemde programmeerbug waarbij de landcode 'NO' in een YAML-bestand werd geparseerd als de boolean 'false'.
- Elk geldig JSON-bestand ter wereld is tegelijkertijd ook een 100% geldig YAML-bestand.
Veelgestelde technische vragen
Waar wordt YAML voor gebruikt?
YAML is de primaire configuratietaal voor cloudcomputing, Kubernetes-clusterimplementatie, Docker Compose-bestanden, GitHub Actions-workflows en software-instellingen.
Kan ik tabs gebruiken in YAML-bestanden?
Nee. De officiële YAML-specificatie verbiedt ten strengste het gebruik van tabtekens voor inspringing; u moet altijd spaties gebruiken (meestal 2 spaties per niveau).
Hoe kan ik YAML naar JSON converteren?
U kunt YAML-bestanden met één klik converteren naar schone, gevalideerde JSON met behulp van File2File.app, rechtstreeks in uw webbrowser met volledige privacy.
Gerelateerde conversieparen voor YAML
Het converteren van YAML-configuratiebestanden naar het JSON-formaat vertaalt door mensen leesbare tekststructuren met inspringingen naar strikte, door machines te parsen objecten voor webapplicaties.
Het converteren van JSON-configuratiebestanden naar het YAML-formaat transformeert rigide programmatische gegevensstructuren in schone, leesbare documenten die veel gemakkelijker te bewerken zijn voor systeembeheerders.