áá»áœááºá¯ááºááá¯á·á¡á¬ážáá¯á¶áž Ansible ááá¯ááŸá áºáááºáá±á¬áºáááºáž Ansible ááẠYAML ááŒá áºáááºá ááœá²á·á ááºážááŸá¯ááá¯ááºáá»á¬ážá¡ááœáẠáá±á¬áºáááºáá»á¬ážá áœá¬ááŸááááº- áááºááá¯ážá á¬áááºážáá»á¬ážá ááá·áºáááºáá»ááºáááºááá¯ážá¡ááœá²áá»á¬ážá INI ááá¯ááºáá»á¬ážá YAMLá JSONá XML ááŸáá·áº á¡ááŒá¬ážáá»á¬ážá áœá¬áá±á¬ á¡ááŒá¬ážá¡áá¬áá»á¬ážá ááá¯á·áá±á¬áº áááºážááá¯á·á¡á¬ážáá¯á¶ážá០á¡ááŒá±á¬ááºážáááºážáá»á¬ážá áœá¬á¡ááœáẠYAML ááẠá¡áá°ážáááºáá²áááºáᯠáá°ááá±á·ááŸááááºá á¡áá°ážáááŒáá·áºá áááºážá áááºážáá áºáá±á¬ áááá·áºáá«ážááŸá¯ ááŸáá·áº á¡áááºá¡á±á¬áẠáááºááá¯ážáá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºááŒááºážá¡ááœáẠá¡áááºááŒá®ážáá±á¬ááºáá±á¬ á áœááºážáááºáá»á¬ážááŸááá±áá±á¬áºáááºáž YAML syntax ááẠáááºážá Python-like áá»ááºážáááºááŸá¯ááœáẠá¡ááŸá±á¬ááºá¡ááŸááºááŒá áºá á±ááá¯ááºáááºá
YAML á áááºážááᯠáá±á«áááœááºááẠáááºážáá¯ááºááá¯ááºáááºá áááºážáá¯ááºááá·áºáááºá - áááºáá
áááºáá»ááºá¡á¬ážááá¯áááºáá¶ááá¯ááºáá±á¬á¡ááá·áºááá¯á·áá»áŸá±á¬á·áá»áááºááŸáá·áº YAML ááá¯áá»á
áºááŒááºááá¯ážááẠá¡á±á¬ááºáá«á¡ááá·áº áá áá¯ááá¯áá¯ááºáá±á¬ááºáá«á á€á
á¬áááºážááŸáá·áº ááá¯ááºáá®áááºááŸáá·áºá¡áá»áŸ áá»áœááºá¯ááºááá¯á·á á¡ááŒá¶ááŒá¯áá»áẠáááºáá¯ááᯠá¡á
ááŸáá±ááœááºáááºááŒá
áºááŒá®ážá ááá¬ážááá¯ááºááŒááºážááŸáá·áº áá¬ááºááá¯ááºážááá¯ááºáᬠá¡áá±á·á¡áá»áá·áºáá»á¬ážááᯠá
áááºááá¯ááºážáá» ááá·áºááœááºážáá±ážááẠð
0. áááºáá¡ááºáá®áá¬á¡áá¯ááºááá¯áá¯ááºáá«á
ááá·áºááœáẠáááºááá·áºá á¬áá¬ážáááºážááŒááºáá°ááŸááá«ááááºážá YAML ááŸáá·áºáá¯ááºáá±á¬ááºáááºá¡ááœáẠá¡áááºážáá¯á¶áž plugin áá áºáá¯ááŸáááá¯ááºáááºá ááá·áºááœááºáá áºáá¯áááŸááá«áá áááºážááá¯ááŸá¬ááœá±ááŒá®ážáá»ááºáá»ááºážááá·áºááœááºážáá«á YAML ááᯠáááºážááŒááºááẠá¡áá»áááºááá¯ááºážááœáẠááŸá¬ááœá±ááŒááºážááŸáá·áº á áá áºááá·áºááœááºážááŒááºáž á¡áá¯á¶ážááŒá¯ááá·áºá¡áá»áááºááẠá¡ááá»á¬ážá áœá¬ áá¯á¶ážááŸá¯á¶ážááœá¬ážáááºááŒá áºáááºá
á¥ááᬠá¡ááºáá®áá¬
YAML áá¯ááºááœáẠEmacs ááŸáá·áº áá±áá¬ááœááºáá»á¬ážááᯠááŒáááŒááºážá
ááá·áºá áááºááŒáá¯ááºáááºážááŒááºáá°ááẠYAML áá¯ááºáááŸááá«áá áááºáááºáá»á¬ážááŸáá·áºá¡áá° áá¯ááºáá±á¬ááºááŒááºážááŒáá·áº ááŒá¿áá¬á¡áá»áá¯á·ááᯠááŒá±ááŸááºážááá¯ááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá¯á¶ááŸáẠGNOME á á¬áá¬ážáááºážááŒááºáá° Gedit ááœáẠYAML áá¯ááºááœáẠááá«ááŸááá±á¬áºáááºáž áá¯á¶ááŸááºá¡á¬ážááŒáá·áº áááºážááẠYAML syntax ááᯠáá®ážáá±á¬ááºážááá¯ážááŒááŒá®áž indentations áá»á¬ážááŒáá·áº á¡áá¯ááºáá¯ááºááẠá á®á ááºááœáá·áºááŒá¯áááº-
Gedit ááœáẠá¡ááºáááºážáá»á¬ážááᯠáááºááŸááºááŒááºážá
ááááºá¡ááºáá
áºáá¯
áá áºáááºážááá¯ááá±á¬áº áááºááŸá áºáááºáá±á¬ á¡ááºáá®áá¬á¡ááŒá±á¬ááºážááᯠá¡áá»áááºááŒá¯ááºážáá«á YAML ááŸáá·áº áá¯ááºáá±á¬ááºáááºá¡ááœáẠáá° ááá¯á·ááá¯áẠáá°á ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážá¡ááá¯ááºá¡áááºážá áááºážááŸááºážáá¬ážááá·áºá¡áá¬áá»á¬ážááᯠááŸá¬ááœá±ááŒá®áž á¡ááá¯áá«á¡ááºá¹áá«áááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á áá±áá»á¬áá±á«ááºáá±á¬ááºáááááºááá¯ááºáá«á
1. áá®áá¬áá¯á¶ážáá«á
á¡áá±á¬ááºážáá¯á¶ážááá±á¬á· áááá¯ááááºážáááºážáá¬áá¬á
áá¬ážáá»á¬ážááŸáá·áº markup áá¬áá¬á
áá¬ážáá»á¬ážááẠááŒáá¯áááºááá·áºááŸááºážááá¯ááºáá±á¬ á¡áá¬ážá¡ááá¯ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá ááœááºááŒá°áá¬áá»á¬ážááẠááŒáá¯áááºááŸááºážáááá¯ááºááŸá¯ááœáẠáá±á¬ááºážááœááºáá±á¬ááŒá±á¬áá·áº áááºážá¡áá°á¡áá á¡ááŒá±á¬ááºážáááºážááŒá
áºáááºá
ááá·áºááœááºážáá«
$ sudo dnf install yamllint
ááá¯á·áá±á¬áẠá á áºáá±ážááẠYAML ááá¯ááºááᯠááŒááºá yamllint ááᯠááá¯ážááá¯ážááŸááºážááŸááºáž ááœáá·áºáá«á áááºááẠááá¯ááºáá áºáá¯ááᯠá¡ááŸá¬ážáá áºáá¯ááŒáá·áº linter ááá¯á·áá±ážááá¯á·áá«á áááºážááẠáá¯á¶ááá¹áá¬ááºááŒá áºáááºá
$ yamllint errorprone.yaml
errorprone.yaml
23:10 error syntax error: mapping values are not allowed here
23:11 error trailing spaces (trailing-spaces)
áááºáááºááŸá áá¶áá«ááºáá»á¬ážááẠá¡áá»áááºááá¯ááºáá±á¬áºáááºáž á¡ááŸá¬ážá ááŒááááááºáá»á¬áž- á¡áááºážááŸáá·áº áá±á¬áºáá¶áá¶áá«ááºá á¡ááŸá¬ážááá±á¬áºááŒáá»ááºááẠááá·áºá¡á¬áž áá¬áá»áŸáááŒá±á¬ááŒááá¯ááºáá±á¬áºáááºáž áááºážááẠáááºááá·áºáá±áá¬ááœááºááŸááááºááᯠáááºá¡ááá¡áá»áááá«áááºá áá¯ááºááŸá á€áá±áá¬ááᯠááŒáá·áºáá¯á¶ááŒáá·áº á¡áá¬á¡á¬ážáá¯á¶áž ááŸááºážááœá¬ážáá±áááá·áºáááºá
yamllint ááẠááá¯ááºáá áºáá¯ááœáẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážáááœá±á·áá±á¬á¡áá«á áááºááá·áºá¡áá¬ááá¯áá»áŸ á ááááºááœáẠááá¯ááºááŸáááºáááºááá¯ááºáá«á ááá¯ááá¯á·áá±á¬ááááºááááºááŸá¯ááẠááá·áºááá¯ááŒá±á¬ááºááá·áºááŒá®áž áá¯á¶á·ááŒááºáá»ááºá¡áááºážáááºááá¯ááá¯áá«áá áááºážááᯠdouble ampersand (&&) ááŸáá áºááá·áº conditional echo command ááŒáá·áº linter ááᯠrun ááá¯ááºáááº-
$ yamllint perfect.yaml && echo "OK"
OK
POSIX ááœááºá ááŸá±á· command ááẠ0 ááŒááºáá¬ááŸáá¬áá»áŸáẠdouble ampersand ááẠfire áá¯ááºáá«áááºá ááŸáá·áº yamllint ááẠááœá±á·ááŸááá±á¬ error á¡áá±á¡ááœááºááᯠááŒááºáá±ážáááºá ááá¯á·ááŒá±á¬áá·áº ဠconditional construct áá áºáá¯áá¯á¶áž á¡áá¯ááºáá¯ááºáá«áááºá
2. YAML ááá¯ááºáá² Python ááŒáá·áºáá±ážáá«á
YAML á áááºážááᯠááááºá
áááºááá¯ážááẠá
á¬áá¬ážá¡ááá¯ááºáž ááá±ážáá«áá²á·á YAML ááẠá¡ááá®áá±ážááŸááºážáá¬ážáááºááá·áº áá
áºáá¯áááºážáá±á¬áá±á¬áºáááºááŒá
áºáá¬áááºá ááá¯á·áá±á¬áºá€ááá
á¹á
ááœááºááẠYAML ááá¯ááºááá¯áááºáá®ážáááºáááá¯á¡ááºáá«á ááŒáá¯ááºáá¬ááá¯áá±ážááŒá®áž convert áá¯ááºáá«á á¥ááá¬á¡á¬ážááŒáá·áºá Python á¡ááœáẠáá±á¬ááºážááœááºáá±á¬ á
á¬ááŒáá·áºááá¯ááºáá
áºáᯠááŸááááºá
ááááááá¯ááºááᯠáá°ážááŒá±á¬ááºážááŒááºážá
á€ááá á¹á ááœááºá áá±áá¬ááá¯ááºááẠYAML ááá¯áá¯ááºáá±ážááá·áº Python script áá áºáá¯áááºážááŒá áºáááºá á€áááºážáááºážááẠá¡áá±ážá á¬ážáá±áá¬á¡ááœá²áá»á¬ážá¡ááœáẠá¡ááá·áºáá±á¬áºáá¯á¶ážááŒá áºáááºá áááºááẠJSON áá±áá¬ááᯠPython variable áá áºáá¯á¡ááŒá Ạááá¯ážááŸááºážá áœá¬áá±ážááŒá®áž áááºááœááºážááŸá¯ááœáŸááºááŒá¬ážáá»ááºááŒáá·áº áááºážááá¯ááŒáá¯áááºáá±á¬áºááŒááŒá®áž ááá¯ááºáá¡áá¯á¶ážááœáẠoutput ááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºááẠá á¬ááŒá±á¬ááºážáá¯á¶ážááŒá±á¬ááºážááá·áºáá«á
#!/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 ááœáẠá€ááá¯ááºááᯠrun ááŒá®áž 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 script ááœáẠá¡ááœááºááá° ááŒááºáááºááá¯ááºááẠááá¯á·ááá¯áẠá¡áááºážááẠááŒááºáááºááá¯ááºáááºá
scripts áá»á¬ážááŸáááá·áºáá°ážááŒá±á¬ááºážááŒááºážá
á€ááá á¹á ááœááºá áá»áœááºá¯ááºááá¯á·ááẠJSON ááŒáá·áº áŠážá áœá¬áá±ážáá¬ážááŒá®ážáá±á¬áẠYAML ááᯠoutput á¡ááŒá áºáá¯ááºáá±ážááá·áº áá®ážááŒá¬áž Python script á¡ááŒá Ạconverter ááᯠrun áááºá ááááºáááºážáááºážááŸáá·áº ááŸáá¯ááºážááŸááºáá«áá ááŒá±á¬ááºážáá²ááŒááºážááẠáá±áá¬ááŸáá·áº áá®ážááŒá¬ážááŒá áºáá±á¬ááŒá±á¬áá·áº á€áááºážáááºážááẠá¡ááá¯ááºážá¡áá¬ááá¯áá±á¬ááºážáá«áááºá
ááááŠážá
áœá¬ 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"
}
}
}
}
}
ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠááá¯ážááŸááºážáá±á¬ converter script áá áºáá¯ááᯠáááºáá®ážááŒá®áž json2yaml.py á¡áááºá¡á±á¬ááºááœáẠááááºážáááºážáá«áááºá ဠscript ááẠYAML ááŸáá·áº JSON Python modules ááŸá áºáá¯áá¯á¶ážááᯠáááºááœááºážááŒá®áž á¡áá¯á¶ážááŒá¯áá° áááºááŸááºáá¬ážáá±á¬ 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
áá á¡áá»á¬ážááŒá®áž áááŒá¬áá ááœá²ááŒááºážá áááºáá«á
áá áºáá«áá áºáá¶ááœáẠááŒá¿áá¬áá áºáá¯ááᯠááŸá¯áá±á¬áá·áºá¡áá»áá¯ážáá»áá¯ážá០ááŒáá·áºááŒááºážááẠá¡áá¯á¶ážáááºáááºá YAML ááŸá ááá·áºáá±áá¬áá»á¬ážááŒá¬áž áááºáá¶áá±ážááᯠááá¯ááºá á¬ážááŒá¯áá¬ááœáẠááŒá¿áá¬ááŸááá±áá«áá áááºážááᯠááá¯ááá¯áááºážááŸá®ážááá·áºá¡áá¬á¡ááŒá Ạáá¬áá®ááŒá±á¬ááºážáá²ááá¯ááºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠá¡áááá¬ááºá á¬áááºážáá»á¬áž ááá¯á·ááá¯áẠJSON ááŒáá·áº á¡áá¯ááºáá¯ááºáá¬ááœáẠá¡áááºááŒá±áá«áá á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºáá±á¬ Python shell ááœáẠcommand ááŸá áºáá¯ááŒáá·áº YAML ááá¯á· JSON ááá¯á· ááŒá±á¬ááºážááá¯ááºáááºá ááá·áºááœáẠ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.'}
á€á¡ááŒá±á¬ááºážá¡áá¬á¡ááœáẠá¡ááŒá¬ážá¥ááá¬áá»á¬ážá áœá¬ááᯠáááºááœá±á·ááá¯ááºáááºá ááá¯á·á¡ááŒááºá á¡áœááºááá¯ááºáž converters áá»á¬ážááŸáá·áº local parser á¡áá»á¬ážá¡ááŒá¬ážáááŸáááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº áááºážááœáẠáá¬ážááááºááá¯ááºáá±á¬ ááŸá¯ááºááœá±ážááŸá¯áá áºáá¯áá¬ááœá±á·áá±á¬á¡áá« áá±áá¬ááᯠááŒááºáááºááŒááºáááºááẠáááœáá·áºáá¯ááºáá«ááŸáá·áºá
4. Specs ááá¯áááºáá«á
á¡áá»áááºá¡áá±á¬áºááŒá¬ á¡áá¬ážáá°ááŒá®ážáá±á¬áẠYAML ááá¯á· ááŒááºáá¬áá«á ááœá¬ážáá±á¬ááºáááºáááºááẠá¡áá¯á¶ážáááºáá«áááºá
5. Pseudo-configs
á á¬á¡á¯áẠááá¯á·ááá¯áẠáá±á¬ááºážáá«ážáá áºáá¯ááºáá±ážáá±á¬á¡áá«á á¡áááºážáá¯á¶áž á¡ááŒá±á¬ááºážá¡áá¬ááá¬ážáá áºáá¯á áá¯á¶á á¶ááŒáá·áº ááá¬ááá±á¬ááºááŒá±á¬ááºážááᯠááááŠážá áœá¬áá±ážááœá²ááẠá¡ááŒá²á¡áá¯á¶ážáááºáááºá YAML áá²á· á¡áá°áá°áá«áá²á ááŒá áºááá¯ááºáá»á±áá»á¬ážáááºááŸá¬ YAML ááá¯ááºááœáẠáááºááá·áºáá±áá¬ááᯠáá±ážáá¬ážááááºááᯠááá·áºááœáẠá¡ááŒá¶á¥á¬ááºááŸááá±á¬áºáááºáž áááºážááᯠáááºááá¯á·áá»áááºáááºááááºááᯠáááºááááºáá¬ážááááºáá«á ááá¯á·ááŒá±á¬áá·áº YAML ááᯠáá¯á¶ááá±á¬áºáá®á pseudo-config áá áºáá¯ááœá²áá«á
Pseudo-config ááẠpseudo-code ááŸáá·áº áááºáá°áááºáá áááºáá±á¬ááºáá¯á¶ (ááá¯á·) indentationá ááá-ááá±áž áááºáá¶áá±ážá á¡ááœá±áááºáá¶ááŸá¯ááŸáá·áº nesting á¡ááœáẠá áá¯ážááááºá áᬠáááá¯áá«á á€áá±áá¬ááœáẠá¡áá°áá°áááºááŒá áºáááº- áá±áá¬áá»á¬ážááᯠááá·áºáá±á«ááºážáá²ááœáẠáá±á«áºáá¬áááºááŸáá·áº áááºáá¬áááºáá¬ááœá²áá«á
Pseudo-config listing programmers (Martin and Tabitha) ááŸáá·áº áááºážááá¯á·á áá»áœááºážáá»ááºááŸá¯áá»á¬áž (programming languages: Python, Perl, Pascal and Lisp, Fortran, Erlang, á¡áá®ážáá®áž)á
á á¬ááœááºáá áºááœááºáá±á«áºááœáẠpseudo-config ááá¯ááœá²ááŒá®ážáá±á¬ááºá áááºážááᯠááá¯áá áá¯ááºááœá²ááŒááºážá áááºááŒá¬ááŒá®áž á¡áá¬á¡á¬ážáá¯á¶ážááẠá áá áºááá»ááŒá áºáá«á áááºážááᯠááá¬ážááẠYAML ááá¯ááºáá¯á¶á á¶ááŒáá·áº áá±á¬áºáááºáá¯ááºáá«á
6. Tabs ááŸáá·áº Spaces á¡áá»ááºááá¯ááºááŸá¯
á¡áá»ááºá¡áááºážááᯠááŒá±ááŸááºážááá«áááá·áºáááºá
áááºááá·áº áá¬áá¬áẠá á¬áá¬ážáááºážááŒááºááŸá¯ááœááºáááá¯á áááºááẠáááºááŸááºáá¬ážáá±á¬ áá±áá¬áá¶áá«ááºáá áºáá¯ááá¯á· á¡ááá¯á¡áá»á±á¬ááºááŒááºáá±ážááá·áº áááºááºáá»á¬ážááᯠá á®á ááºáááºááŸááºááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº áá±á¬á·ááœá²áá±áá°áá»á¬ážá áá¯ááºáááºááŸá¯á tab ááᯠááŒá±á¬ááºá áá¬áááá¯áá«áá°ážá
YAML áá¯ááºážáá®ážáá°ááá¯ááºáž áá±á¬ááºážá áœá¬ááááá·áºá¡ááá¯ááºážá á ááááºáá±á«áºááŸá áááºááºáá»á¬ážááŸáá·áº áá±áá¬ááœááºáá»á¬ážááŒá¬áž ááŒá¬ážáá¬ážáá»ááºááᯠáááºáááŒááºááá¯ááºáá«á áá áºáá¯áá¯ááᯠáááŒááºááá¯ááºáá±á¬á¡áá«ááœááºá áááºážááá¯á·ááẠááœá²ááŒááºážá áááºááŒá¬ááŒá®áž á á áºáá±ážááŒá®áž áááºááŸá¬ážááŒá®ážáá±á¬áẠááŒá áºááá¯ááºááá·áº ááŒá¿áá¬á¡á¬ážáá¯á¶ážááᯠáááºááŸá¬ážááŒá®ážáá±á¬áẠáá°á¡áá»á¬ážá ááŸááºáááá±á·ááŸááááºá áá áºáá¬áá®á ᬠááá¬ážáá»ááºážááœá±ážáá áºáᯠááá¯á·ááá¯áẠáá±áá¬ááœááºáááºáá áºáá¯ááᯠááŸá¬ááœá±ááẠá¡áá»áááºáá áºáá¬áá®ááŒá¬á¡á±á¬áẠáááºáá áºáŠáž ááá¯á·ááá¯áẠá¡ááŒá¬ážáá áºáá¯á¡áá¯á¶ážááŒá¯áááºá¡ááœáẠáá°áá«ááá áºáá¯áááºáá®ážááẠá¡áá±ážáááŒá®ážááá¯á¡ááºááŒá±á¬ááºáž ááŒáœá±ážááŒá±á¬áºááá¯ááºááŒá®áž áááºážááŸáá·áº ááá¯ááºáá»á±á¬áá®ááœá±ááŸáá á±ááẠá¡á¬ážááŒáá·áºááœááºááá áºá á áºáá±ážááŸá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá« (á¥ááá¬á¡á¬ážááŒáá·áºá Git áá»áááºáá áºáá¯ááẠáááºážááᯠlinter ááŸáááá·áºááœááºážá¡á¬ážáá±ážáááºá)
7. ááá¯áááºážááẠ(ááá¯á·ááá¯áẠááá¯áááºážáááº)
ááœá²á·á ááºážáá¯á¶ááᯠá¡áá±ážáá±ážáá²á·á¡ááœáẠYAML ááŸá¬ áá±ážááá¬ááᯠááŸá áºáááºáá«áááºá áá áºáá»áááºáááºážááŸá¬áááºá áá±áá¬ááá±á¬ááºáá»á¬ážááᯠáá®ážáá±á¬ááºážááá¯ážááŒááẠá¡ááºáááºážááᯠáááºááŒáœá áœá¬ á¡áá¯á¶ážááŒá¯ááŒáááºá á€áááºááŸá¬ áááá»ááŒááºáá¬ážáá±á¬ ááá·áºáááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áº markup áá¬áá¬á áá¬ážáá»á¬ážááᯠáá¯áááẠááááºáááºááŸá¯áá»áá¯ážááŒá áºáááºá
á€áááºááŸá¬ ááá¯áá²á·ááá¯á·áá±á¬ ááœá²á·á
ááºážáá¯á¶á á¥ááá¬áá
áºáá¯ááŒá
áºáááºá
# 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 á á¬ááœááºá á¬áááºážá ááá¯ááºááŸááºááŒá áºááŒá®áž áááºážááᯠááááºážááááºážááẠáá¬áááºááŸááá«áá áááºááŸáá·áº áááºáá áºáŠážáááºážáá±á¬ Indentation ááᯠá¡áá¯á¶ážááŒá¯áááºážááᯠáááºááŸááºááá«áááºá ááŒá®ážáá¬ážáá±á¬ padding ááŒá±á¬áá·áº á áááºá¡ááŸá±á¬áá·áºá¡ááŸááºááŒá áºáá»áŸáẠYAML áááºááŸááºáá»ááºá¡ááá¯ááºáž ááŒá áºááá¯ááºááá»áŸ á¡áááºážáá¯á¶ážááŒá áºá¡á±á¬áẠáá¬ážáá«á á¥ááá¬á¡á¬ážááŒáá·áºá Ansible documentation á០á¡áááºáá±á¬áºááŒáá«ááá¯ááºááᯠá¡áá¯á¶ážááŸá¯á¶ážááá¶áá² á€áá²á·ááá¯á· ááŒááºáááºáá±ážáá¬ážááá¯ááºáááº-
---
- 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 ááœáẠááá¯ážááŸááºážáá±á¬ script áá»á¬ážá¡ááŒá áºááá¯á· ááŒá±á¬ááºážááŒááºážááẠááá¯áá±á¬ááºážáááºá
YAML ááẠáááºážá ááá¯ážááŸááºážááŸá¯ááŸáá·áº ááá¯ážááŸááºážááŸá¯ááᯠáá°á¡áá»á¬ážááŸá áºáááºááá·áº ááŒá®ážááŒááºáá±á¬á¡áá¬áá áºáá¯ááŒá áºáá±á¬áºáááºáž áááºážááẠááá·áºáááºáááºááá¯ááºááŸá áá áºáá¯áááºážáá±á¬áááááá¬ááŸáá·áº áá±ážááœá¬áááºá áá«ááŒá±á¬áá·áº áá áºáá«ááá±áá±á¬á· ááŒááºážááá¯á·ááá«áááºá ááœá²ááŒááºážá áááºááŒá¬ááá·áºá á¬ááŒáá·áºááá¯ááºáá»á¬ážááẠYAML á¡ááœááºááŸá¬ááœá±áááºááœááºáá°áááºá ááá¯á·ááŒá±á¬áá·áº áááºááẠááœááºáá°áá±á¬ááœáŸá±á·ááŒá±á¬ááºážááŸá¯ááœá±ážáá»ááºá áá¬áá»á¬ážááᯠáá±ážáá±á¬ááºáá«áá áááºáá¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠá€áá»áá¯á·ááœááºážáá»ááºá¡á¬áž áá¬áá»ááºááŸá¯áááŸááá² ááŸááºáááºááá¯ááºáááºááŒá áºáááºá
YAML ááá«áá² ááá¯ááºááá¯ááºáá«á á€á¡ááŒá¶ááŒá¯áá»áẠ10 áá¯ááᯠááá¯ááºáá¬ááŒá®áž YAML ááᯠáááŒáá¯ááºáá«á áá
áºááŒáááºááŒá®ážááá¯ááºáž áá»á±á¬áºááœáŸá¬ážááá¯ááºáá«á
source: www.habr.com