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: nginx

Docker 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: secret

Wskazowki

  • 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.

← Powrot do wszystkich narzedzi