Wat is het YML-bestandsformaat?
.yml is een plat tekstbestand en een formaat voor gegevensuitwisseling. Het is een gestandaardiseerd, platformonafhankelijk formaat dat gegevens opslaat als menselijk leesbare tekst, georganiseerd via een op inspringing gebaseerde key: value-structuur. .yml-bestanden kunnen worden gelezen en geschreven met behulp van YAML-bibliotheken die beschikbaar zijn voor vrijwel elke grote programmeertaal. .yml en .yaml identificeren hetzelfde formaat - .yml is de oudere drieletterige vorm die door veel tools wordt behouden, zoals docker-compose.yml, .gitlab-ci.yml en GitHub Actions-workflows. Het formaat wordt het meest gebruikt voor gegevensserialisatie en applicatieconfiguratie.
Serialisatie is een term uit de informatica en verwijst naar het concept van het uitwisselen van gegevens tussen programma's of applicaties met behulp van goed gedefinieerde objecten. Een object kan worden begrepen als een gegevenscontainer. Database-records zijn bijvoorbeeld een vorm van gegevensserialisatie, omdat ze eenvoudig kunnen worden uitgewisseld tussen verschillende databases. Geserialiseerde gegevens kunnen ook de vorm aannemen van gestructureerde bestanden die tussen applicaties kunnen worden verzonden. Tot de meest gebruikte serialisatieformaten behoren .yml, XML, JSON en TOML.
Een kenmerkend aspect van .yml is het gebruik van significante witruimte: inspringing definieert de documentstructuur en alleen spaties zijn toegestaan - tabs zijn expliciet verboden door de specificatie. Documenten kunnen optioneel openen met --- (start van document) en sluiten met .... YAML ondersteunt ook inline #-commentaren, blok-scalars over meerdere regels met | of >, en ankers (&) met aliassen (*) voor het hergebruiken van herhaalde waarden.
Beveiliging & veiligheid
RISICO: MEDIUMEen .yml-bestand is platte tekst en wordt niet uit zichzelf uitgevoerd, dus het lezen ervan is veilig. Twee reële risico's: (1) configuratie-YAML (CI-pipelines, Compose, K8s, Ansible) bevat vaak geheimen - tokens, wachtwoorden, sleutels - dus plak deze niet in niet-vertrouwde online validators en commit ze niet openbaar. (2) Programmatisch gevaar: het laden van niet-vertrouwde YAML met een onveilige parser (bijv. PyYAML's yaml.load in plaats van yaml.safe_load) kan willekeurige objecten/code uitvoeren - gebruik altijd de veilige lader voor bestanden die u niet vertrouwt. Bewerkingsrisico: een tab of verkeerd uitgelijnde spatie verandert stilletjes de betekenis, dus valideer na het bewerken.
Formaatdetails
in een notendop- Strangereal IFL camera-map (zeldzaam) - Een paar legacy-apps hergebruikten .yml voor niet-YAML-gegevens, maar tegenwoordig is de extensie vrijwel altijd YAML-tekst.
Programma's die YML-bestanden openen
Technische details
diepe specificaties| MIME-type | application/yaml (IANA-geregistreerd); legacy-varianten zijn onder meer text/yaml, text/x-yaml, application/x-yaml |
| Codering | UTF-8 (standaard en meest gebruikelijk); UTF-16 en UTF-32 met BOM zijn toegestaan door de specificatie maar worden in de praktijk zelden gebruikt |
| Bestandsstructuur | Op inspringing gebaseerde mappings (key: value), sequenties (- item) en scalars; nesting wordt puur uitgedrukt door het inspringniveau |
| Significante witruimte | Inspringing definieert de structuur; alleen spaties zijn toegestaan - tabs zijn expliciet verboden door de YAML-specificatie |
| Documentmarkeringen | Optionele --- markeert het begin van een document; ... markeert het einde; een enkel .yml-bestand kan meerdere YAML-documenten bevatten, gescheiden door --- |
| Ondersteuning voor commentaar | Inline en volledige regelcommentaren ingeleid door # - afwezig in JSON en de meeste binaire serialisatieformaten |
| Systeemeigen gegevenstypen | String, integer, float, boolean, null, timestamp en binary (base64-gecodeerd via de !!binary tag) |
| Ankers en aliassen | & declareert een herbruikbaar anker; * verwijst ernaar (alias) - elimineert herhaling door kopiëren en plakken in complexe configuratiebestanden |
| Blok-scalars | | (literal block scalar) behoudt regeleinden zoals ze zijn; > (folded block scalar) voegt regeleinden samen tot spaties |
| JSON-superset | Sinds YAML 1.2 (2009) is elk geldig JSON-bestand ook geldig YAML, dus YAML-parsers kunnen JSON systeemeigen lezen |
| Magic bytes / handtekening | Geen - geen binaire header of magisch getal; geïdentificeerd door de op inspringing gebaseerde key: value-structuur en de .yml- of .yaml-extensie |
| Bestandsgrootte (typisch) | Bytes tot tientallen KB voor configuratie- en CI/CD-pipelinebestanden; overschrijdt zelden enkele honderden KB |
| Gelijkwaardigheid van extensies | .yml en .yaml zijn identiek qua formaat; .yml is de drieletterige vorm uit het DOS-tijdperk die is overgenomen door docker-compose.yml, .gitlab-ci.yml en GitHub Actions |
| Specificatieversie-richtlijn | Optionele %YAML 1.2 pragma aan het begin van het bestand declareert de specificatieversie; de meeste bestanden laten dit weg en vertrouwen op parser-standaarden |
| Uitgebracht | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 1.2.2 in 2021) |
| Laatste versie | YAML 1.2.2 (2021) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | yaml.org |
YML conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over YML-bestanden.