ΠΡΠΈΡΠΊΠΈ ΠΎΠ±ΠΈΡΠ°ΠΌΠ΅ Ansible, Π½ΠΎ Ansible Π΅ YAML. ΠΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅: ΡΠΏΠΈΡΡΡΠΈ ΡΡΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π΄Π²ΠΎΠΉΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ, INI ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, YAML, JSON, XML ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΏΠΎΡΠ°Π΄ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΈ, YAML ΡΠ΅ΡΡΠΎ ΡΠ΅ ΡΠΌΡΡΠ° Π·Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΡΡΡΠ΄Π΅Π½. ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ²ΠΎΡ ΠΎΡΠ²Π΅ΠΆΠ°Π²Π°Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΡΠΌ ΠΈ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΠ²Π°ΡΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡΠ½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π½Π° YAML ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΎΡΠ°Π΄Π΅Π½ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Python ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊΡΠΌ ΠΎΡΡΡΡΠΏΠ°.
ΠΠΊΠΎ YAML Π²ΠΈ ΡΠ΄ΠΎΡΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ - ΠΈ ΡΡΡΠ±Π²Π°! - Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ 10 ΡΡΡΠΏΠΊΠΈ, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡΠ΅ ΡΠ°Π·Π΄ΡΠ°Π·Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ Π΄ΠΎ ΠΏΡΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΎ Π½ΠΈΠ²ΠΎ ΠΈ Π΄Π° ΠΎΠ±ΠΈΡΠ°ΡΠ΅ YAML. ΠΠ°ΠΊΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π°Π²Π° Π½Π° ΡΠΎΠ·ΠΈ ΡΠΏΠΈΡΡΠΊ, Π½Π°ΡΠΈΡΠ΅ Π΄Π΅ΡΠ΅Ρ ΡΡΠ²Π΅ΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½ΠΎΠΌΠ΅ΡΠΈΡΠ°Π½ΠΈ ΠΎΡ Π½ΡΠ»Π°ΡΠ°, Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΠΌΠ΅Π΄ΠΈΡΠ°ΡΠΈΡ ΠΈ Π΄ΡΡ
ΠΎΠ²Π½ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ π
0. ΠΠ°ΠΊΠ°ΡΠ°ΠΉΡΠ΅ Π²Π°ΡΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ
ΠΡΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΡΠ² ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΈΠΌΠ°ΡΠ΅, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΈΠΌΠ° ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ YAML ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° Π½Π΅Π³ΠΎ. ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅, Π½Π°ΠΌΠ΅ΡΠ΅ΡΠ΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π²Π΅Π΄Π½Π°Π³Π°. ΠΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅ΠΊΠ°ΡΠ²Π°ΡΠ΅ Π² ΡΡΡΡΠ΅Π½Π΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅, ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠ»Π°ΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ YAML.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ
Emacs Π² ΡΠ΅ΠΆΠΈΠΌ YAML ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ.
ΠΠΊΠΎ Π²Π°ΡΠΈΡΡ Π»ΡΠ±ΠΈΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π½ΡΠΌΠ° ΡΠ΅ΠΆΠΈΠΌ YAML, ΡΠΎΠ³Π°Π²Π° Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΅ΡΠ΅Π½ΠΈ ΡΡΠ΅Π· ΡΠ°Π±ΠΎΡΠ° Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° GNOME, Gedit, Π½ΡΠΌΠ° ΡΠ΅ΠΆΠΈΠΌ YAML, Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠΎΠΉ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π° YAML ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΎΡΡΡΡΠΏΠ°:
ΠΠ°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡΡΡΡΠΏΠΈ Π² Gedit.
ΠΠ»ΡΠ³ΠΈΠ½
Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, ΠΎΡΠ΄Π΅Π»Π΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ Π»ΡΠ±ΠΈΠΌΠΈΡ ΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. Π Π°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ ΡΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ YAML ΠΈ ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΎΡ ΡΠ΅Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π½ΡΠΌΠ° Π΄Π° ΡΡΠΆΠ°Π»ΡΠ²Π°ΡΠ΅.
1. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π»ΠΈΠ½ΡΠ΅Ρ
Π ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π΅Π·ΠΈΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ Π΅Π·ΠΈΡΠΈΡΠ΅ Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠΎΠΌΠΏΡΡΡΠΈΡΠ΅ ΡΠ° Π΄ΠΎΠ±ΡΠΈ Π² ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡΠ°, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π· 1978 Π³. Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ°
ΡΡΡΠ°Π½ΠΎΠ²ΡΡ
$ sudo dnf install yamllint
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠΎΡΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ yamllint, ΠΏΡΠ΅Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΌΡ YAML ΡΠ°ΠΉΠ» Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅. ΠΡΠΎ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Π°ΠΊΠΎ ΠΏΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΡΠ°ΠΉΠ» Ρ Π³ΡΠ΅ΡΠΊΠ° ΠΊΡΠΌ Π»ΠΈΠ½ΡΠ΅ΡΠ°:
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
Π§ΠΈΡΠ»Π°ΡΠ° ΠΎΡΠ»ΡΠ²ΠΎ Π½Π΅ ΡΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΡΠ΅ Π½Π° Π³ΡΠ΅ΡΠΊΠ°ΡΠ°: Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΡΠ΅Π΄Π° ΠΈ ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ°. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π²ΠΈ ΠΊΠ°Π·Π²Π° Π½ΠΈΡΠΎ, Π½ΠΎ Π²ΠΈΠ΅ Π·Π½Π°Π΅ΡΠ΅ ΡΠΎΡΠ½ΠΎ ΠΊΡΠ΄Π΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°. ΠΡΠΎΡΡΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΠΎΠ²Π° ΠΌΡΡΡΠΎ Π² ΠΊΠΎΠ΄Π° ΠΈ Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅ ΡΡΠ½ΠΎ.
ΠΠΎΠ³Π°ΡΠΎ yamllint Π½Π΅ Π½Π°ΠΌΠ΅ΡΠΈ Π³ΡΠ΅ΡΠΊΠΈ Π²ΡΠ² ΡΠ°ΠΉΠ», Π½ΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΎΡΠΏΠ΅ΡΠ°ΡΠ²Π° Π½Π° Π΅ΠΊΡΠ°Π½Π°. ΠΠΊΠΎ ΡΠ°ΠΊΠΎΠ²Π° ΠΌΡΠ»ΡΠ°Π½ΠΈΠ΅ Π²ΠΈ ΠΏΠ»Π°ΡΠΈ ΠΈ ΠΈΡΠΊΠ°ΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ°, ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π»ΠΈΠ½ΡΠ΅ΡΠ° Ρ ΡΡΠ»ΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° echo ΡΡΠ΅Π· Π΄Π²ΠΎΠ΅Π½ Π°ΠΌΠΏΠ΅ΡΡΠ°Π½Π΄ (&&), ΠΊΠ°ΡΠΎ ΡΠΎΠ·ΠΈ:
$ yamllint perfect.yaml && echo "OK"
OK
Π POSIX Π΄Π²ΠΎΠΉΠ½ΠΈΡΡ Π°ΠΌΠΏΠ΅ΡΡΠ°Π½Π΄ ΡΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°, Π°ΠΊΠΎ ΠΈ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΡΠ½Π΅ 0. Π yamllint ΠΏΡΠΎΡΡΠΎ Π²ΡΡΡΠ° Π±ΡΠΎΡ Π½Π° ΠΎΡΠΊΡΠΈΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ»Π°ΡΠ° ΡΠ°Π·ΠΈ ΡΡΠ»ΠΎΠ²Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠ°Π±ΠΎΡΠΈ.
2. ΠΠΈΡΠ΅ΡΠ΅ Π½Π° Python, Π° Π½Π΅ Π½Π° YAML
ΠΠΊΠΎ YAML Π½Π°ΠΈΡΡΠΈΠ½Π° Π²ΠΈ ΡΠ΄ΠΎΡΠ²Π°, ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΈΡΠ΅ΡΠ΅ Π² Π½Π΅Π³ΠΎ, Π±ΡΠΊΠ²Π°Π»Π½ΠΎ. Π‘Π»ΡΡΠ²Π° ΡΠ΅ YAML Π΄Π° Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ YAML ΡΠ°ΠΉΠ». ΠΠΈΡΠ΅ΡΠ΅ Π²ΡΡΡ
Ρ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ Ρ
Π°ΡΠ΅ΡΠ²Π°, ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΠΉΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ° ΡΡΡΠ°Ρ
ΠΎΡΠ½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° Python
Π‘Π°ΠΌΠΎΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Ρ ΡΠ΅
Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΠ°ΠΉΠ»ΡΡ Ρ Π΄Π°Π½Π½ΠΈ ΡΡΡΠΎ Π΅ ΡΠΊΡΠΈΠΏΡ Π½Π° Python, ΠΊΠΎΠΉΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° YAML. Π’ΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΡ Π·Π° ΠΌΠ°Π»ΠΊΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ. ΠΡΠΎΡΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π°ΡΠ΅ JSON Π΄Π°Π½Π½ΠΈ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° Python, ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΈ ΡΠ΅Π΄Π° Π² ΠΊΡΠ°Ρ Π½Π° ΡΠ°ΠΉΠ»Π°, Π·Π° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π°.
#!/usr/bin/python3
import yaml
d={
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
f=open('output.yaml','w')
f.write(yaml.dump(d))
f.close
Π‘Π΅Π³Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΠ» Π² Python ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ°ΠΉΠ»Π° output.yaml ΠΊΠ°ΡΠΎ ΠΈΠ·Ρ ΠΎΠ΄:
$ python3 ./example.json
$ cat output.yaml
glossary:
GlossDiv:
GlossList:
GlossEntry:
Abbrev: ISO 8879:1986
Acronym: SGML
GlossDef:
GlossSeeAlso: [GML, XML]
para: A meta-markup language, used to create markup languages such as DocBook.
GlossSee: markup
GlossTerm: Standard Generalized Markup Language
ID: SGML
SortAs: SGML
title: S
title: example glossary
Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π²Π°Π»ΠΈΠ΄Π΅Π½ YAML, Π½ΠΎ yamllint ΡΠ΅ Π²ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈ, ΡΠ΅ Π½Π΅ Π·Π°ΠΏΠΎΡΠ²Π° Ρ -. Π, ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΎ Π½Π° ΡΡΠΊΠ° ΠΈΠ»ΠΈ Π»Π΅ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΎ ΠΎΡ ΡΠΊΡΠΈΠΏΡΠ° Π½Π° Python.
ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ ΡΡΠ΅Π· ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅
Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΡΠ²ΠΎ ΠΏΠΈΡΠ΅ΠΌ Π² JSON ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡΠ° ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠΊΡΠΈΠΏΡ Π½Π° Python, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° YAML ΠΊΠ°ΡΠΎ ΠΈΠ·Ρ ΠΎΠ΄. Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄, ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ΡΠΎ Π΅ Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ.
ΠΡΡΠ²ΠΎ, Π½Π΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ JSON ΡΠ°ΠΉΠ» example.json, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π²Π·Π΅ΠΌΠ΅ΡΠ΅
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π½Π΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΎΡΡ ΡΠΊΡΠΈΠΏΡ Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡ ΠΈ Π΄Π° Π³ΠΎ Π·Π°ΠΏΠ°Π·ΠΈΠΌ ΠΊΠ°ΡΠΎ json2yaml.py. Π’ΠΎΠ·ΠΈ ΡΠΊΡΠΈΠΏΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ° YAML ΠΈ JSON Python ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅, Π·Π°ΡΠ΅ΠΆΠ΄Π° Π·Π°Π΄Π°Π΄Π΅Π½ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ JSON ΡΠ°ΠΉΠ», ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ Π·Π°ΠΏΠΈΡΠ²Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° output.yaml.
#!/usr/bin/python3
import yaml
import sys
import json
OUT=open('output.yaml','w')
IN=open(sys.argv[1], 'r')
JSON = json.load(IN)
IN.close()
yaml.dump(JSON, OUT)
OUT.close()
ΠΠ°ΠΏΠ°Π·Π΅ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠΊΡΠΈΠΏΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΏΡΡ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
$ ~/bin/json2yaml.py example.json
3. ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅ΡΡΠΎ
ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΡΠ³ΡΠ». ΠΠΊΠΎ Π²ΠΈ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π°Π½Π½ΠΈ Π² YAML, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° Π³ΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°ΡΠ΅ Π² Π½Π΅ΡΠΎ ΠΏΠΎ-ΠΏΠΎΠ·Π½Π°ΡΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π²ΠΈ Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΡΡΡ ΡΠΏΠΈΡΡΡΠΈ Ρ ΡΠ΅ΡΠ½ΠΈΡΠΈ ΠΈΠ»ΠΈ JSON, ΡΠΎΠ³Π°Π²Π° YAML ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ Π² JSON ΡΠ°ΠΌΠΎ Ρ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π° Python. ΠΠ° ΠΏΡΠΈΠ΅ΠΌΠ΅ΠΌ, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ YAML ΡΠ°ΠΉΠ» mydata.yaml, ΡΠΎΠ³Π°Π²Π° Π΅ΡΠΎ ΠΊΠ°ΠΊ ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°:
$ python3
>>> f=open('mydata.yaml','r')
>>> yaml.load(f)
{'document': 34843, 'date': datetime.date(2019, 5, 23), 'bill-to': {'given': 'Seth', 'family': 'Kenlon', 'address': {'street': '51b Mornington Roadn', 'city': 'Brooklyn', 'state': 'Wellington', 'postal': 6021, 'country': 'NZ'}}, 'words': 938, 'comments': 'Good article. Could be better.'}
ΠΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΏΠΎ ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡΠΈ ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ. Π’Π°ΠΊΠ° ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ°ΠΌΠΎ Π½Π΅ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠ° ΠΊΠ°ΡΠ° Π² ΡΡΡ .
4. ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅
ΠΡΡΡΠ°ΠΉΠΊΠΈ ΡΠ΅ ΠΊΡΠΌ YAML ΡΠ»Π΅Π΄ Π΄ΡΠ»Π³Π° ΠΏΠ°ΡΠ·Π°, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅
5. ΠΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
ΠΠΎΠ³Π°ΡΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠ½ΠΈΠ³Π° ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡ, Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π΄ΠΎΠ±ΡΠ° ΠΈΠ΄Π΅Ρ ΠΏΡΡΠ²ΠΎ Π΄Π° ΠΎΡΠ΅ΡΡΠ°Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΠ»Π°Π½, ΠΏΠΎΠ½Π΅ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅. Π‘ΡΡΠΎΡΠΎ Ρ YAML. ΠΠ°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° ΠΊΠ°ΠΊΠ²ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΠ°Π½ΠΈ Π² YAML ΡΠ°ΠΉΠ»Π°, Π½ΠΎ Π½Π°ΠΈΡΡΠΈΠ½Π° Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Π΅Π΄ΠΈΠ½ Ρ Π΄ΡΡΠ³. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΡΠΊΡΠ»ΠΏΡΡΡΠΈΡΠ°ΡΠ΅ YAML, Π½Π°ΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎ-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ.
Pseudoconfig Π΅ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄, ΠΊΡΠ΄Π΅ΡΠΎ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅ Π·Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠ»ΠΈ ΠΎΡΡΡΡΠΏ, Π²ΡΡΠ·ΠΊΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»-Π΄Π΅ΡΠ΅, Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ Π²Π»Π°Π³Π°Π½Π΅. Π’Π°ΠΊΠ° Π΅ ΠΈ ΡΡΠΊ: ΡΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ Π² Π³Π»Π°Π²Π°ΡΠ° Π²ΠΈ.
Pseudoconfig ΠΈΠ·Π±ΡΠΎΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ (ΠΠ°ΡΡΠΈΠ½ ΠΈ Π’Π°Π±ΠΈΡΠ°) ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΠΌΠ΅Π½ΠΈΡ (Π΅Π·ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅: ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ Python, Perl, Pascal ΠΈ Lisp, Fortran, Erlang).
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° Π»ΠΈΡΡ Ρ Π°ΡΡΠΈΡ, Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ ΠΈ, Π°ΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠ°ΡΠΎ Π²Π°Π»ΠΈΠ΄Π΅Π½ YAML ΡΠ°ΠΉΠ».
6. ΠΠΈΠ»Π΅ΠΌΠ°ΡΠ° Π·Π° ΡΠ°Π·Π΄Π΅Π»ΠΈ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ
Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ Π΅Π΄Π½Π° Π΄ΠΈΠ»Π΅ΠΌΠ°
ΠΡΠ² Π²ΡΠ΅ΠΊΠΈ Π½ΠΎΡΠΌΠ°Π»Π΅Π½ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π·Π°ΠΌΡΠ½Π° Π½Π° ΡΠ°Π·Π΄Π΅Π»ΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π±ΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π±ΡΠ½ΡΡΡ Π½Π° ΠΏΡΠΈΠ²ΡΡΠΆΠ΅Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΊΠ»ΡΡΠ° ΠΡΠΈΠΊΠ΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π΄Π° ΡΠ΅ ΡΡΡΠ°Ρ ΡΠ²Π°Ρ.
ΠΠ°ΠΊΡΠΎ Π²ΡΠ΅ΠΊΠΈ Ρ Π΅ΠΉΡΡΡ Π½Π° YAML Π΄ΠΎΠ±ΡΠ΅ Π·Π½Π°Π΅, Π½ΡΠΌΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ Π½Π° Π΅ΠΊΡΠ°Π½Π°. Π ΠΊΠΎΠ³Π°ΡΠΎ Π½Π΅ΡΠΎ Π½Π΅ ΡΠ΅ Π²ΠΈΠΆΠ΄Π°, ΡΠΎ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΠΌΠ½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π΅ ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΎ, ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ ΠΈ ΠΎΡΡΡΡΠ°Π½Π΅Π½ΠΈ Π²ΡΠΈΡΠΊΠΈ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠ΄ΠΈΠ½ ΡΠ°Ρ Π²ΡΠ΅ΠΌΠ΅, Π·Π°Π³ΡΠ±Π΅Π½ΠΎ Π² ΡΡΡΡΠ΅Π½Π΅ Π½Π° ΡΠ°Π·Π΄Π΅Π» ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ, ΠΏΡΠΎΡΡΠΎ Π²ΠΈΠΊΠ°, ΡΠ΅ ΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΅Π΄Π½ΠΎΡΠΎ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΡΠΎ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΡΡΠΎΠΌΠ°Π½ΠΎΠ±Π΅ΡΠΎΠ½Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΡΠΎ ΠΌΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π· Git ΠΊΡΠΊΠ° Π·Π° ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡΠ΅Π· Π»ΠΈΠ½ΡΠ΅ΡΠ°).
7. ΠΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ (ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ)
ΠΡΠΊΠΎΠΈ Ρ ΠΎΡΠ° ΠΎΠ±ΠΈΡΠ°Ρ Π΄Π° ΠΏΠΈΡΠ°Ρ Π½Π° YAML, Π·Π°ΡΠΎΡΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΡΡΡΠΏΠΈ Π·Π° ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° Π΅ Π²ΠΈΠ΄ ΠΈΠ·ΠΌΠ°ΠΌΠ° Π΄Π° ΡΠ΅ ΠΈΠΌΠΈΡΠΈΡΠ°Ρ Π΅Π·ΠΈΡΠΈ Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ·ΡΠΈΡΠ½ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ.
ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ°ΠΊΠ°Π²Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ
# Employee records
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
ΠΠ° Π½ΡΠΊΠΎΠΈ ΡΠ°Π·ΠΈ ΠΎΠΏΡΠΈΡ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΎΠΆΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° YAML Π² Π³Π»Π°Π²ΠΈΡΠ΅ ΠΈΠΌ, Π΄ΠΎΠΊΠ°ΡΠΎ Π·Π° Π΄ΡΡΠ³ΠΈ, Π½Π°ΠΏΡΠΎΡΠΈΠ², ΡΡ Π³ΠΈ Π΄ΡΠ°Π·Π½ΠΈ Ρ ΠΌΠ°ΡΠ° Π½Π΅Π½ΡΠΆΠ½ΠΈ, ΡΠΏΠΎΡΠ΅Π΄ ΡΡΡ , ΠΎΡΡΡΡΠΏΠΈ.
ΠΠΎ Π°ΠΊΠΎ Π²ΠΈΠ΅ ΡΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊ Π½Π° YAML Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈ ΡΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ ΠΌΡ, ΡΠΎΠ³Π°Π²Π° ΡΠΈ ΠΈ ΡΠ°ΠΌΠΎ ΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡΡΡΡΠΏ. ΠΠΊΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΡΡ ΠΎΡΡΡΡΠΏ Π²ΠΈ Π΄ΡΠ°Π·Π½ΠΈ, ΡΠ²Π΅Π΄Π΅ΡΠ΅ Π³ΠΎ Π΄ΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎΡΠΎ ΡΠΏΠΎΡΠ΅Π΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° YAML. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΠΎΡΠ½ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° Ansible ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π±Π΅Π· Π·Π°Π³ΡΠ±Π°:
---
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
8. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠΈ
ΠΠΊΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΡΠ΅ Π΄Π° ΠΏΠΎΠ²ΡΠ°ΡΡΡΠ΅ ΡΡΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° YAML ΡΠ°ΠΉΠ», ΠΈΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° Π²ΠΌΡΠΊΠ½Π΅ΡΠ΅ ΠΏΡΠ°Π·Π΅Π½ ΡΠ°Π±Π»ΠΎΠ½ Π² Π½Π΅Π³ΠΎ ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ. Π’ΠΎΠ³Π°Π²Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ ΡΠΎΠ²Π° ΠΏΡΠ°Π·Π½ΠΎ ΠΌΡΡΡΠΎ ΠΈ Π΄Π° Π²ΡΠ²Π΅Π΄Π΅ΡΠ΅ ΡΠ΅Π°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
---
# - <common name>:
# name: Given Surname
# job: JOB
# skills:
# - LANG
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
9. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π½Π΅ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ
ΠΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π΅ Π²ΠΈ Ρ Π²Π°Π½Π΅, ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ YAML Π² Π΄ΡΡΠ³ ΡΠΎΡΠΌΠ°Ρ. Π‘ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½Π°Π΄ΡΠ°ΡΠ½Π°Ρ ΡΠ΅Π±Π΅ ΡΠΈ ΠΈ ΡΠΎΠ³Π°Π²Π° Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅ Π² ΠΏΡΠΎΡΡΠΈ Lua ΠΈΠ»ΠΈ Python ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅.
YAML Π΅ ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° ΠΎΠ±ΠΈΡΠ°Ρ Π·Π°ΡΠ°Π΄ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΡΠΌ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ°, Π½ΠΎ Π΄Π°Π»Π΅Ρ Π½Π΅ Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΡΠ² Π²Π°ΡΠΈΡ Π°ΡΡΠ΅Π½Π°Π». Π’Π°ΠΊΠ° ΡΠ΅ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΎΡΠΊΠ°ΠΆΠ΅ΡΠ΅. ΠΠ΅ΡΠ½ΠΎ Π΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π·Π° YAML, ΡΠ°ΠΊΠ° ΡΠ΅ Π°ΠΊΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ, Π²Π°ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ ΠΏΡΠ΅ΠΆΠΈΠ²Π΅ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡΡ Π²ΡΡΠ»ΡΠ½Π΅ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½ΠΎ.
ΠΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±Π΅Π· YAML, ΡΠΎΠ³Π°Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ΅Π·ΠΈ 10 ΡΡΠ²Π΅ΡΠ° ΠΈ ΠΏΠΎΠ±Π΅Π΄Π΅ΡΠ΅ Π½Π΅ΠΏΡΠΈΡΠ·ΡΠ½ΡΠ° ΡΠΈ ΠΊΡΠΌ YAML Π²Π΅Π΄Π½ΡΠΆ Π·Π°Π²ΠΈΠ½Π°Π³ΠΈ!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com