Zrozumienie Yaml

Zrozumienie Yaml
YAML Ain't Markup Language lub YAML w skrócie to język serializacji danych powszechnie używany w plikach konfiguracyjnych, takich jak Kubernetes, Docker, Ansible i wiele innych. Jego popularność wzrosła na przestrzeni lat, co czyni go konkurentem dla JSON.

Ok, jeśli Yaml nie ma języka markup, co to jest?

Jak wspomniano, YAML jest serializowanym danymi językiem opracowanym w celu poprawy czytelności człowieka za pomocą wcięcia i natywnych struktur danych. Pomyśl o tym jak o ścisłym zastawie JSON lub skrzyżowaniu JSON i XML. Ta hybryda pozwala na robienie tego, co może JSON i więcej dodatkowych funkcji.

Celem tego samouczka jest przedstawienie Ci YAML, podanie przewodnika na temat składni języka, zapewnienie szybkich narzędzi do pracy z YAML i nauczanie, jak używać go do plików konfiguracyjnych i nie tylko.

Jak napisać YAML

Pisanie YAML jest niezwykle intuicyjne (myślę, że o to chodzi), ponieważ wykorzystuje składnię pary wartości kluczowej. Tak więc jest jak słownik w Pythonie. Jednak w przeciwieństwie do Pythona YAML nie pozwala na odstępy za zakładki; używa przestrzeni.

Ogólna składnia to:

kluczowa wartość

Aby rozpocząć nowy dokument YAML, zaczynamy od trzech krewacji wskazujących na początek nowego pliku.

Ta funkcja umożliwia posiadanie wielu dokumentów oddzielonych przez atrakcje w jednym pliku.

Utwórz plik z .Rozszerzenie YAML i dodaj następujące treści.

---

Język: Python

Autor: Guido van Rossum

Kraj: Holandia
---

Język: JavaScript

Autor: Brendan Eich

Kraj: Stany Zjednoczone
---

Język: Ruby

Autor: Yukihiroro Matsumoto

Kraj: Japonia

Jak widać z powyższego pliku, każdy dokument w YAML zaczyna się od trzech kropek, a następnie danych przechowywanych w parach kluczowych.

Zainstaluj liner YAML

Przed kontynuowaniem potwierdźmy, że mamy ważny plik YAML. Aby to zrobić, musimy zainstalować liner Yaml.

Linter to narzędzie, które sprawdza i powiadamia programistę o błędach programowania, takich jak błędy składniowe i nieprawidłowe konstrukcje. Na przykład umożliwia sprawdzenie prawidłowej składni pliku.

W naszym przykładzie użyjemy Yamllint.

Aby zainstalować, użyj apt jako:

Sudo apt-get Aktualizacja
sudo apt -get instaluj yamllint -y

Po zainstalowaniu możemy uruchomić liner na pliku za pomocą polecenia

echo -e „To jest poprawne: składnia YAML” | Próbka Yamllinta.Yaml

Jeśli plik zawiera prawidłową składnię YAML, nie daje nam żadnego wyjścia.

Teraz spróbuj dodać przestrzenie wewnątrz pliku YAML lub dodaj pojedynczą deskę rozdzielczą na dole jako:

---

Język: Python

Autor: Guido van Rossum

Kraj: Holandia
---

Język: JavaScript

Autor: Brendan Eich

Kraj: Stany Zjednoczone
---

Język: Ruby

Autor: Yukihiroro Matsumoto

Kraj: Japonia
-

Jeśli uruchomimy Linter na tym pliku, pojawiają się błędy, jak pokazano poniżej:

próbka.Yaml
15: 1 Błąd błędu Błąd: oczekiwany, ale znaleziony „-” (składnia)

NOTATKA: Podobnie jak słowniki w Python i podobne struktury danych w różnych językach programowania, pary kluczowe w dokumencie YAML muszą być unikalne.

Typy danych YAML

YAML obsługuje różne sposoby reprezentowania danych. Zawierają:

#: Typy skalarne

Są to najczęstszy typ danych w YAML. Mają postać par kluczowych, jak pokazano w powyższym przykładzie.

Wartości w parze mogą być dowolnym typem, taki jak ciąg, liczby, w tym sześciokadcima, liczby całkowite i takie.

#: Strings

YAML obsługuje również sznurki zamknięte w pojedynczych lub podwójnych cytatach. Nie jest to wymagane, ponieważ parser YAML to się rozwinę, ale może być pomocny, szczególnie w strunach z postaciami ucieczki.

Poniżej przedstawiono przykłady prawidłowych strun w YAML.

---

String: To jest ciąg

String2: „To jest również ciąg”

Ciąg: „Podobnie jest z tym”

NOTATKA: Upewnij się, aby zamknąć podwójne lub pojedyncze cytaty, gdzie używane. Poniżej spowoduje błąd.

---
Nieprawidłowe: „To jest nieprawidłowe

Aby dodać akapit w pliku YAML, użyj znaku (większego niż). Pamiętaj, aby dodać przestrzeń przed linią. Na przykład:

---
para:>

tworzenie akapitu
to obejmuje więcej niż jeden
linia.

#: Typy liczbowe

Drugi typ danych obsługiwany w YAML to typy numeryczne. Typy liczbowe obejmują liczby całkowite, dziesiętne, sześciokadcicę, ósemkowe i inne typy numeryczne.

Poniższa składnia YAML reprezentuje typy numeryczne.

---

INT: 100

HEX: 0x7F000001

Octal: 0177

Float: 127.0

Expo: 6.022e+23

#: Listy

Listy w YAML są określone przy użyciu pojedynczego deski rozdzielczej jako:

---
- lista
- inny
- i kolejny

#: Sekwencje

Sekwencje to typy danych używane do przechowywania wielu wartości w jednym samym kluczu. Na przykład:

---

serwer:

- Apache
- 2.07
- Lampp

#: Mapowania

Mapowanie jest dość podobne do sekwencji, ale składa się z par kluczowych, wszystkie zawarte w jednej podgrupie.

Oto przykład:

---

Serwery:

- Apache:

Nazwa: serwer1

OS: Debian 10

wersja 2.4.46

- IIS:

Nazwa: IIS-V01

OS: Windows Datacenter 2019

Wersja: 10.0.17763

#: Zero

Ustawiamy zerowe w YAML za pomocą tylde (~) lub null ciągu, jak pokazano w poniższym przykładzie:

---
Tilde: ~
var: null

#: Tablice

Tablice w YAML są określone za pomocą nawiasów kwadratowych w jednej linii. Poniższy przykład pokazuje definicję tablic w YAML.

---
Liczby: [1,2,3,4,5,6,7,8,9,10]
Strings: [„Hello”, „World”, „From”, „Linuxhint”]

Komentarze Yaml

YAML obsługuje również komentarze, które pozwalają dodać dodatkowe informacje do danych YAML. Parser ignoruje komentarze.

Komentarze YAML zaczynają się od Octothorpe (#).
---
# To jest komentarz w Yaml

Przetwarzaj YAML do JSON

W niektórych przypadkach może być konieczne przekonwertowanie YAML na JSON. Ponieważ oba są ściśle powiązane, sensowne jest potrzebne od drugiego.

W przypadku takich scenariuszy możemy użyć narzędzia takiego jak YQ, ​​które jest parserem YAML/XML dla JQ.

Aby go zainstalować, użyj PIP z poleceniem, jak pokazano:

PIP3 Zainstaluj YQ

NOTATKA: Upewnij się, że masz zainstalowany JQ, ponieważ jest to wymagana zależność dla YQ.

Załóżmy, że mamy przykładowy plik tworzenia kapsułki Kubernetes (Kubernetes.YAML) z zawartością, jak pokazano:

---
APIVERSION: V1
rodzaj: Pod
metadane:
Nazwa: miejsce sklepu
Etykiety:
Aplikacja: Web
Spec:
Pojemniki:
- Nazwa: Nginx
Zdjęcie: Nginx
Porty:
- Contenerport: 8080
VolumEmounts:
- Nazwa: Master
Mountpath:/var/www/html/nginx
DNSpolicy: Domyślnie
wolumeny:
- Nazwa: home_directory
pustyDir:

NOTATKA: Powyższy plik dotyczy celów ilustracyjnych i może zawierać błędy, jeśli używane w prawdziwej instancji Kubernetes.

Aby przekonwertować plik YAML na JSON, użyj polecenia:

sudo yq eval -j kubernetes.Yaml

Po wykonaniu powyższego polecenia zawartość pliku jest automatycznie konwertowana na JSON, jak pokazano poniżej:


„APIVERSION”: „V1”,
„Kind”: „Pod”,
„Metadata”:
„Nazwa”: „strona sklepu”,
„Etykiety”:
„App”: „Web”

,
„Spec”:
„Pojemniki”: [

„Nazwa”: „Nginx”,
„Image”: „Nginx”,
„Porty”: [

„Containerport”: 8080

],
„VolumEmounts”: [

„Nazwa”: „Master”,
„Mountpath”: "/var/www/html/nginx"

]

],
„Dnspolicy”: „Domyślnie”,
"wolumeny": [

„Nazwa”: „home_directory”,
„EmptyDir”:

]

To ułatwia działanie podczas przejścia z JSON na YAML i odwrotnie.

Wniosek

YAML to niezwykle potężne narzędzie, które pozwala budować wysoce czytelne i kompatybilne pliki konfiguracyjne dla usług wsparcia. Korzystając z koncepcji w tym samouczku, jesteś w stanie tworzyć złożone dokumenty YAML dla swoich aplikacji lub aplikacji obsługujących YAML.

Dziękuję i szczęśliwe kodowanie!