Konfiguracja YAML (.yaml)
YAML StandardowyYAML Ain't Markup Language (YAML) to dominujący format serializacji danych dla nowoczesnych rozwiązań DevOps, infrastruktury chmurowej (Kubernetes, Docker Compose) oraz automatyzacji CI/CD, kładący nacisk na czytelność dla człowieka dzięki przejrzystym wcięciom spacjami.
Konwertuj YAML na JSON
Darmowy konwerter z YAML na JSON w przeglądarce. Konwertuj pliki natychmiast na swoim urządzeniu.
Inspekcja i metadane
Systemy operacyjne i analizatory plików identyfikują pliki YAML, sprawdzając początkową sekwencję bajtów binarnych:
Podpis nagłówka na poziomie bajtów (Magic Bytes)
Systemy operacyjne i analizatory plików identyfikują pliki YAML, sprawdzając początkową sekwencję bajtów binarnych:
PODPIS HEX (OFFSET 0):
2D 2D 2D 0AREPREZENTACJA ASCII: ---\n
Normalizacja: YAML 1.2.2 Specification
Specyfikacja techniczna
| Architektura kontenera | Indentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases |
| Kompresja | Uncompressed text stream |
| Kolejność bajtów (Endianness) | UTF-8 / Unicode text stream |
| Przestrzenie kolorów | N/A (Data Serialization) |
| Kanały i struktura | Mappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref) |
| Maks. wymiary | Unbounded document size (supports multi-document streams separated by '---') |
| Przezroczystość | None |
| Streaming i progresywne ładowanie | Multi-document streams allow sequential document-by-document processing |
Techniczna macierz porównawcza: YAML a konkurencja
| Atrybut techniczny | YAML (Bieżący) | JSON | TOML | XML |
|---|---|---|---|---|
| Styl składni | Hierarchia wcięć za pomocą białych znaków | Ścisłe nawiasy i cudzysłowy | Tabele i pary klucz=wartość | Rozwlekłe znaczniki otwierające/zamykające |
| Obsługa komentarzy | Natywna (komentarze #) | Brak dozwolonych komentarzy | Natywna (komentarze #) | <!-- komentarze --> |
| Adopcja w DevOps | Uniwersalny standard (Kubernetes, CI/CD) | Uniwersalny standard API | Konfiguracja pakietów Rust/Python | Korporacyjna konfiguracja dziedziczona |
| Ponowne użycie danych | Natywne kotwice (&) i aliasy (*) | Brak (ręczne powielanie) | Brak (ręczne powielanie) | Encje XML |
Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego
Błąd parsera: 'mapping values are not allowed here' lub błąd wcięć.
Główna przyczyna: Mieszanie tabulatorów ze spacjami lub niedopasowane poziomy wcięć.
Odzyskiwanie: Zamień tabulatory na spacje i zweryfikuj składnię za pomocą formatera YAML w File2File.
Analiza bezpieczeństwa i wektory ataku na parser
Analizatory YAML obsługujące niestandardowe znaczniki typów (takie jak 'yaml.load()' w PyYAML) historycznie pozwalały na zdalne wykonanie kodu poprzez dowolne instancjonowanie obiektów.
Znane wektory ataku
- Zdalne wykonanie kodu za pomocą niezabezpieczonych znaczników deserializacji obiektów (np. '!!python/object/apply').
- Bomby ekspansji encji (odpowiednik ataku 'billion laughs' z użyciem kotwic i aliasów YAML).
- Podatności na pomylenie typów (type confusion) wynikające z niejawnego parsowania wartości logicznych i znaczników czasu.
Najlepsze praktyki obronne:
Pochodzenie historyczne i kamienie milowe
Główne zalety
- Bezdyskusyjny standard dla nowoczesnej infrastruktury chmurowej: powszechnie stosowany w manifestach Kubernetes, Docker Compose oraz GitHub Actions.
- Czysta, czytelna składnia: eliminuje bałagan związany z klamrami, nawiasami kwadratowymi i cudzysłowami dzięki intuicyjnym wcięciom.
- Obsługuje referencje i kotwice (&anchor / *anchor) w celu ponownego używania powtarzalnych bloków konfiguracyjnych bez ich powielania.
Ograniczenia techniczne i wady
- Wrażliwość na białe znaki: przypadkowy tabulator lub pojedyncza dodatkowa spacja może uszkodzić hierarchię dokumentu lub spowodować błędy parsowania.
- Cieszące się złą sławą błędy dopasowywania typów: ujęte w cudzysłów słowa takie jak 'no', 'on', 'yes' lub kody krajów ('NO' dla Norwegii) mogą po cichu zamienić się w wartości logiczne (boolean).
- Znacznie mniejsza prędkość parsowania w porównaniu do formatów binarnych lub ścisłego JSON.
Ciekawe informacje techniczne
- YAML pierwotnie rozwijało się jako skrót od 'Yet Another Markup Language', ale zostało żartobliwie przemianowane na rekurencyjny akronim 'YAML Ain't Markup Language', aby podkreślić serializację danych.
- „Problem z Norwegią" to słynny błąd programistyczny, w którym kod kraju 'NO' w pliku YAML został zinterpretowany jako wartość logiczna 'false'.
- Każdy poprawny plik JSON na świecie jest jednocześnie w 100% poprawnym plikiem YAML.
Często zadawane pytania techniczne
Do czego służy YAML?
YAML to główny język konfiguracyjny dla chmury obliczeniowej, wdrażania klastrów Kubernetes, plików Docker Compose, przepływów pracy GitHub Actions oraz ustawień oprogramowania.
Czy mogę używać znaków tabulacji w plikach YAML?
Nie. Oficjalna specyfikacja YAML surowo zabrania używania znaków tabulacji do wcięć; zawsze należy używać spacji (zazwyczaj 2 spacji na poziom).
Jak mogę przekonwertować YAML na JSON?
Możesz przekonwertować pliki YAML na czysty, zweryfikowany format JSON jednym kliknięciem za pomocą File2File.app bezpośrednio w przeglądarce internetowej z zachowaniem pełnej prywatności.
Powiązane pary konwersji YAML
Konwersja plików konfiguracyjnych YAML na format JSON przekształca czytelne dla człowieka struktury tekstowe z wcięciami w ścisłe obiekty analizowane przez maszyny w aplikacjach internetowych.
Konwersja plików konfiguracyjnych JSON na format YAML przekształca sztywne struktury danych programistycznych w czytelne dokumenty, które administratorom systemów znacznie łatwiej edytować.