YAML si za posledních několik let získal velkou oblibu, protože se stal součástí klíčových nástrojů, technologií a procesů DevOps, jako jsou Ansible, Kubernetes, CI/CD potrubí a tak dále.
Už jsme probrali spoustu výukových programů na Ansible a Kubernetes. Myslel jsem na pokrytí základů YAML, takže si musíte být vědomi pro hladší práci s konfigurací nástrojů DevOps.
Co je YAML?
YAML znamená „YAML Ain't Markup Language“ původně to byla zkratka pro 'Yet Another Markup Language'. YAML je jazyk pro „serializaci dat“ a v podstatě lidsky čitelný formát strukturovaných dat.
Je navržen tak, aby byl přátelský ke čtení a psaní. Funkce objektové serializace YAML se prezentuje jako praktická alternativa k JSON. YAML je nadmnožina JSON s použitím rozsahu založeného na odsazení k označení struktury jako Python.
Zde je ukázkový příklad YAML:
---
Student-ID: 314159
First-Name: Linus
Last-Name: Torvalds
Phone-numbers:
- 281.555.7777
- 832.676.8888
- 937.996.9999
Addresses:
- Street: 123 Main St.
- City: Houston
- State: Tx
---
Základní pravidla YAML, která byste si měli vždy pamatovat
Pokud nechcete, aby se při analýze vašeho YAML souboru opakovaly chyby, musíte mít při práci na YAML vždy na paměti následující:
- V YAML NEJSOU povoleny karty. Měli byste použít prostor pro odsazení.
- Přestože na velikosti prostoru nezáleží, pokud je odsazení podřízeného uzlu větší než odsazení nadřazeného uzlu, je dobrým zvykem zachovat stejný počet mezer.
- Mezi různými prvky YAML musí být mezera (vysvětleno později).
- YAML rozlišuje velká a malá písmena.
- Soubor YAML by měl končit příponami jako
.yaml
nebo.yml
. - YAML umožňuje kódování UTF-8, UTF-16 a UTF-32.
Pojďme nyní pochopit syntaxi YAML.
Prvky souboru YAML:Základní syntaxe
K popisu dat se používá soubor YAML. V souboru YAML je obsah celý o sbírce párů klíč–hodnota kde hodnotou může být cokoliv od řetězce po strom.
Pojďme to pochopit na příkladu. Toto je soubor manifestu služby Kubernetes.
kind: Service
metadata:
name: web-app-svc
spec:
type: NodePort
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort: 30012 #Node Port from the range - 30000-32767
selector:
app: web-app
Je samozřejmé, že se jedná o sadu prvků páru klíč hodnota:Name: Value
.
Jak můžete vidět z výše uvedeného souboru, soubor YAML se skládá z řady různých prvků. Společně je lze použít k popisu široké škály struktur.
1. Mezery nebo odsazení
V YAML odsazujete mezerami, nikoli tabulátory. A mezi prvky MUSÍ být mezera.
Správná specifikace:
Kind: Service
Nesprávná specifikace:
Kind:Service
Protože ve výše uvedeném příkazu není za dvojtečkou mezera!
2. Komentáře v YAML
Komentáře lze definovat umístěním hash před položku '#
'. Komentáře lze vkládat na začátek řádku kdekoli v řádku.
Pokud si projdete náš konfigurační soubor YAML, máme tři komentáře jako „#service port“ atd.
3. Skalární (pár klíč–hodnota)
Skaláry jsou řetězce a čísla, které tvoří data na stránce. Jednoduše řečeno, jsou to páry klíčových hodnot.
kind: Service
metadata:
name: web-app-svc
4. Sbírky a seznamy
Prvky nebo členové seznamu a kolekce jsou řádky, které začínají na stejné úrovni odsazení, začínají pomlčkou a za ní mezerou.
- web-app-prod
- prod-deployments
- prom-monitored
Jedná se o základní seznam s každou položkou v seznamu umístěnou na vlastním řádku s úvodní pomlčkou.
5. Vnořené sbírky
Pokud chcete vytvořit vnořenou sekvenci s položkami a podpoložkami, můžete tak učinit umístěním jedné mezery před každou pomlčku v podpoložkách.
-
- web-app-prod
- prod-deployments
- prom-monitored
-
- web-app-test
- staging-deployments
- not-monitored
6. Slovníky
Slovníky obsahují key: value
formát s odsazeným obsahem.
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort: 30012 #Node Port from the range - 30000-32767
Kolekce seznamů a slovníků můžete slučovat a míchat takto:
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort:
- 30012
- 30013
- 30014
Toto jsou velmi základní koncepty YAML, ale nezbytné pro inženýra DevOps.
Pro YAML nepotřebujete speciální editor. Váš oblíbený textový editor by již měl podporovat YAML nebo v případě potřeby použít plugin.
Existuje mnoho věcí, které můžete prozkoumat a naučit se. Za tímto účelem se můžete vždy obrátit na oficiální dokumentaci YAML.
Chcete být lepším sysadminem nebo DevOps? Staňte se členem Linux Handbook ještě dnes.