Parser YAML
YAML (YAML Ain't Markup Language) to czytelny dla czlowieka format serializacji danych, popularny w plikach konfiguracyjnych. To narzedzie parsuje YAML z pelna obsluga specyfikacji 1.2, wlaczajac kotwice, aliasy i strumienie wielodokumentowe, a nastepnie wyswietla wynik w interaktywnym widoku drzewa.
Specyfikacje
Typowe zastosowania
- Parsowanie i walidacja manifestow Kubernetes (Deployment, Service, ConfigMap)
- Odczyt plikow Docker Compose i docker-compose.yml
- Debugowanie workflow GitHub Actions, GitLab CI lub CircleCI
- Konwersja playbookow Ansible do JSON do przetwarzania programistycznego
- Walidacja plikow values chartow Helm
Funkcje
- Pelna obsluga specyfikacji YAML 1.2
- Obsluga kotwic (&) i aliasow (*) dla wielokrotnego uzycia tresci
- Parsowanie strumieni wielodokumentowych (separatory ---)
- Konwersja do JSON, TOML lub XML
- Walidacja skladni z komunikatami bledow dla konkretnych linii
- Interaktywny widok drzewa dla zagniezdzonych struktur
Przyklady
Kubernetes Deployment
Wypróbuj →Manifest Deployment Kubernetes definiujacy replikowany pod nginx.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginxDocker Compose
Wypróbuj →Plik Docker Compose definiujacy uslugi webowe i bazodanowe.
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: secretWskazowki
- YAML jest wrazliwy na wciecia. Uzywaj spacji, nie tabulatorow.
- Lancuchy znakow nie wymagaja cudzyslowow, chyba ze zawieraja znaki specjalne.
- Uzywaj kotwic (&nazwa) i aliasow (*nazwa), aby uniknac powtarzania tresci.
- Lancuchy wieloliniowe moga uzywac skalarow blokowych | (literalny) lub > (zwiniety).
Zrozumienie Parser YAML
YAML (YAML Ain't Markup Language) to czytelny dla czlowieka format serializacji danych szeroko stosowany w DevOps, infrastrukturze chmurowej i konfiguracji aplikacji. Jego skladnia oparta na wcieciach eliminuje wizualny szum nawiasow kwadratowych i klamerowych, czyniąc go preferowanym formatem dla narzedzi infrastruktury jako kodu, potokow CI/CD i orkiestracji kontenerow.
Glowna sila YAML to czytelnosc. Manifest Deployment Kubernetes, workflow GitHub Actions lub plik Docker Compose w YAML mozna zrozumiec na pierwszy rzut oka. Format obsluguje skalary (lancuchy, liczby, wartosci logiczne, null, daty), sekwencje (tablice) i mapowania (pary klucz-wartosc). Lancuchy zwykle nie wymagaja cudzyslowow, tresc wieloliniowa moze uzywac blokow literalnych (|) lub zwiniętych (>), a kotwice (&) z aliasami (*) pozwalaja zdefiniowac wartosc raz i odwoływac sie do niej wielokrotnie, redukujac powtorzenia w duzych plikach konfiguracyjnych.
YAML 1.2, aktualna specyfikacja, jest scislym nadzbiorem JSON: kazdy prawidlowy dokument JSON jest takze prawidlowym YAML. Oznacza to, ze mozna mieszac skladnie YAML i JSON w tym samym pliku. Obsluga wielodokumentowa poprzez separator --- pozwala osadzac kilka niezaleznych dokumentow w jednym pliku, co jest powszechne w manifestach Kubernetes i szablonach Helm.
Glowna pulapka YAML to wrazliwosc na biale znaki. Tabulatory nie sa dozwolone do wciec (tylko spacje), a zle wyrownany klucz moze cicho zmienic strukture dokumentu. "Problem Norwegii" — gdzie wartosci bez cudzyslowow jak "no", "yes", "on" i "off" sa interpretowane jako wartosci logiczne — to kolejne notorycznie znane zrodlo bledow. YAML 1.2 rozwiazal niektore z tych problemow, ale wiele parserow domyslnie nadal uzywa regul YAML 1.1.
YAML 1.1 definiuje szeroki zestaw literalow logicznych, w tym yes/no, on/off, true/false i ich warianty z wielka litera. Kod kraju NO jest parsowany jako logiczne false, a lancuch "on" staje sie true — notorycznie znany "problem Norwegii". YAML 1.2 ogranicza wartosci logiczne do true i false, ale wiele popularnych parserow (w tym PyYAML) domyslnie nadal uzywa regul YAML 1.1. Bezpiecznym rozwiazaniem jest zawsze umieszczanie w cudzyslowach lancuchow, ktore moga byc blednie zinterpretowane. Znaki tabulacji sa rowniez scisle zabronione do wciec; dozwolone sa tylko spacje, a tabulator we wciеciu spowoduje blad parsowania. Dwie spacje na poziom to najpowszechniejsza konwencja.
YAML oferuje dwa style skalarow blokowych dla lancuchow wieloliniowych. Skalar blokowy literalny (|) zachowuje podzial na linie dokladnie tak, jak zostal zapisany, co czyni go idealnym dla osadzonych skryptow lub zapytan SQL. Skalar blokowy zwiniety (>) laczy kolejne linie spacjami, co dobrze sprawdza sie w dlugich opisach lub akapitach. Oba style obsluguja modyfikatory: |- i >- usuwaja koncowy znak nowej linii, natomiast |+ i >+ zachowuja wszystkie koncowe znaki nowej linii.
Kotwice i aliasy to mechanizm YAML do ponownego uzycia tresci. Kotwica (&nazwa) oznacza wezel do pozniejszego odwolania, a alias (*nazwa) wstawia ten wezel w innym miejscu dokumentu. W polaczeniu z kluczem scalajacym (<<: *defaults) ten wzorzec pozwala zdefiniowac wspolne ustawienia raz i scalic je z wieloma mapowaniami. Jest to szczegolnie przydatne w konfiguracjach CI/CD, gdzie wiele zadan wspoldzieli zmienne srodowiskowe, reguly cache'owania lub kroki wdrozeniowe.