YAML konfigurācija (.yaml)

YAML Standarts

YAML Ain't Markup Language (YAML) ir dominējošais datu serializācijas formāts mūsdienu DevOps, mākoņdatošanas infrastruktūrai (Kubernetes, Docker Compose) un CI/CD automatizācijai, uzsverot cilvēka salasāmību, izmantojot tīru atstarpju atkāpju sistēmu.

Konvertēt YAML uz JSON

Bezmaksas YAML uz JSON konvertētājs pārlūkprogrammā. Konvertējiet failus uzreiz savā ierīcē.

Pārbaudīt un metadati

Operētājsistēmas un failu analizatori identificē YAML failus, pārbaudot sākotnējo bināro baitu secību:

Atlasiet vai velciet failus šeit

100% privāta konvertēšana pārlūkprogrammā - faili nekad neatstāj jūsu ierīci

vai ielīmējiet Ctrl+V
Privātuma garantija bez datu pārraides tīklā: 0 baitu augšupielādēti ārējos serveros. Visa apstrāde notika lokāli jūsu pārlūkprogrammas smilškastē.

Baitu līmeņa galvenes paraksts (maģiskie baiti)

Operētājsistēmas un failu analizatori identificē YAML failus, pārbaudot sākotnējo bināro baitu secību:

HEKSADECIMĀLAIS PARAKSTS (NOBĪDE 0):

2D 2D 2D 0A

ASCII ATTEIOLOJUMS: ---\n

Standartizācija: YAML 1.2.2 Specification

Tehniskās specifikācijas

Konteinera arhitektūraIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
SaspiešanaUncompressed text stream
Baitu secībaUTF-8 / Unicode text stream
Krāsu telpasN/A (Data Serialization)
Kanāli un struktūraMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Maks. izmēriUnbounded document size (supports multi-document streams separated by '---')
CaurspīdīgumsNone
Straumēšana un progresīvā ielādeMulti-document streams allow sequential document-by-document processing

Tehniskā salīdzinājuma matrica: YAML pret konkurentiem

Tehniskais atribūtsYAML (Pašreizējais)JSONTOMLXML
Sintakses stilsAtstarpju atkāpju hierarhijaStingras iekavas un pēdiņasTabulas un key=value pāriGarvārdiski atvēršanas/aizvēršanas tagi
Komentāru atbalstsVietējais ("#" komentāri)Komentāri nav atļautiVietējais ("#" komentāri)<!-- komentāri -->
DevOps ieviešanaUniversāls standarts (Kubernetes, CI/CD)Universāls API standartsRust/Python pakotnes konfigurācijaUzņēmuma mantotā konfigurācija
Datu atkārtota izmantošanaVietējie enkuri (&) un aizstājvārdi (*)Nav (manuāla dublēšana)Nav (manuāla dublēšana)XML entītijas

Biežākie bojājumu veidi un heksadecimālās atkopšanas ceļvedis

Parsētāja kļūda: "mapping values are not allowed here" vai atkāpes kļūda.

Pamatcēlonis: Tabulāciju sajaukšana ar atstarpēm vai nepareizi pielīdzināti atkāpju līmeņi.

Atkopšana: Konvertējiet tabulācijas uz atstarpēm un validējiet sintaksi, izmantojot File2File YAML formātētāju.

Drošības analīze un parsētāja uzbrukuma vektori

YAML parsētāji, kas atbalsta pielāgotus tipu tagus (piemēram, PyYAML "yaml.load()"), vēsturiski ļāva izpildīt attālinātu kodu, izmantojot patvaļīgu objektu izveidi.

Zināmie uzbrukuma vektori

  • Patvaļīga koda izpilde, izmantojot nedrošus objektu deserializācijas tagus (piemēram, "!!python/object/apply").
  • Entītiju paplašināšanas bumbas (miljards smieklu ekvivalents, izmantojot YAML enkurus un aizstājvārdus).
  • Tipu sajaukšanas ievainojamības netiešas Būla un laikspiediena parsēšanas dēļ.

Aizsardzības labākā prakse:

Vēsturiskā izcelsme un pavērsieni

2021Publicēta YAML 1.2.2 versija, pilnveidojot JSON saderību un formālās gramatikas definīcijas.
2009YAML 1.2 standartizē YAML kā stingru JSON virskopu, kas nozīmē, ka viss derīgais JSON ir derīgs YAML.
2001Klārks Evans (Clark Evans), Ingy döt Net un Orens Bens-Kiki (Oren Ben-Kiki) izveido YAML kā cilvēkam draudzīgu alternatīvu XML.

Galvenās priekšrocības un plusi

  • Neapstrīdams standarts mūsdienu mākoņa infrastruktūrai: universāli izmantots Kubernetes manifestos, Docker Compose un GitHub Actions.
  • Tīra, salasāma sintakse: novērš figūriekavu, iekavu un pēdiņu jucekli, izmantojot intuitīvas atkāpes.
  • Atbalsta atsauces un enkurus (&anchor / *anchor), lai atkārtoti izmantotu atkārtotus konfigurācijas blokus bez dublēšanās.

Tehniskie ierobežojumi un mīnusi

  • Jūtīgs pret atstarpēm: nejauša tabulācija vai viena papildu atstarpe var sabojāt dokumenta hierarhiju vai izraisīt parsēšanas kļūdas.
  • Bērnīgi tipu piespiedu konvertēšanas bugi: necitēti vārdi, piemēram, "no", "on", "yes" vai valstu kodus ("NO" Norvēģijai), var klusējot kļūt par Būla vērtībām.
  • Ievērojami lēnāks parsēšanas ātrums salīdzinājumā ar binārajiem formātiem vai stingru JSON.

Interesanti tehniski fakti

  • YAML sākotnēji apzīmēja "Yet Another Markup Language", bet tika ar humoru pārdēvēts par rekursīvu akronīmu "YAML Ain't Markup Language", lai uzsvērtu datu serializāciju.
  • "Norvēģijas problēma" ir slavena programmēšanas kļūda, kur valsts kods "NO" YAML failā tika parsēts kā Būla vērtība "false".
  • Ikviena derīga JSON datne pasaulē vienlaikus ir arī 100% derīga YAML datne.

Bieži uzdotie tehniskie jautājumi

Kam tiek izmantots YAML?

YAML ir galvenā konfigurācijas valoda mākoņdatošanai, Kubernetes klasteru izvietošanai, Docker Compose failiem, GitHub Actions darbplūsmai un programmatūras iestatījumiem.

Vai YAML failos varu izmantot tabulācijas (tabs)?

Nē. Oficiālā YAML specifikācija kategoriski aizliedz izmantot tabulatora rakstzīmes atkāpēm; jums vienmēr ir jāizmanto atstarpes (parasti 2 atstarpes vienā līmenī).

Kā es varu konvertēt YAML uz JSON?

Jūs varat konvertēt YAML failus tīrā, validētā JSON formātā ar vienu klikšķi, izmantojot File2File.app tieši savā tīmekļa pārlūkprogrammā ar pilnīgu privātumu.