áá¯ááºáá±ážááẠááœá²á·á ááºážááŸá¯ááá¯ááºáᬠá á®áá¶ááá·áºááœá²ááŸá¯á áá áºáá áºáá¯ááŒá áºáááºá áááºážááᯠááá¯áá»ááºáá±á¬ááŒááºáááºááá¯á· áá±á¬ááºážáááºááá¯ááºááŒá±á¡ááŸááºáá»á¬áž áá°áá±á¬ááºáá¬ááŒá®áž á€ááŒááºáááºááᯠááááºážááááºážááẠá¡áá¯á¶ážááŒá¯áááºá
áá»áœááºáá±á¬áº Puppet áá²á· áá¯ááºáá¬áᬠáá«ážááŸá áºáá»á±á¬áºááŒá®á á€á á¬áá¬ážááẠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº áá¯ááºáá±ážáá¡ááŸá áºáá¬áááᯠáá»ááºááŒááºá áœá¬áá¬ážáááºááá¯ááºá á±ááá·áº ááá¬ážáááºá á¬ááœááºá á¬áááºážáá»á¬ážá០á¡áááá¡áá»ááºáá»á¬ážááᯠáá¬áá¬ááŒááºááŒá®áž ááŒááºáááºá á®áá°áá¬ážáá±á¬ á á¯á ááºážááŸá¯áá áºáá¯ááŒá áºáááºá
á¡ááŒá±áá¶á¡áá»ááºá¡áááº
Puppet ááááºáááºááŸá¯á áá áºááẠáá¯á¶ážá áœá²áá°-áá¬áá¬ááŒá áºááŒá®áž á¡ááá·áºá¡áááºááŸááá±á¬ áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááŒáá·áº áá¬áá¬áá²á·áááºáááºááŸá¯ááá¯áááºáž áá¶á·ááá¯ážáá±ážáá«áááºá
ááœá²áá¯ááºááŒááºážáá¯á¶á á¶ááᯠá¡áá¯á¶ážááŒá¯áááº- áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áá¬áá®áááºááá¯ááºážááœáẠáá±á¬ááºáááºáá»á¬ážááẠááœá²á·á ááºážááŸá¯áá áºáá¯á¡ááœáẠáá¬áá¬ááᯠáááºááœááºááŒá®áž áááºážááᯠá¡áá¯á¶ážáá»áá«á ááẠAnsible ááŸáá·áºá¡áá¯ááºáá¯ááºááŒá®ážáá«áá áááºážááá¯á·ááẠááá°áá®áá±á¬ááœááºážá¡á¬ážáá±ážááá·áºáá¯á¶á á¶ááá¯á¡áá¯á¶ážááŒá¯áááº- á¡ááºááááºááẠááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážáá¯ááºáááºážá ááºááá¯á áááºáá¯ááºáá±á¬ááºáááºá áá¯á¶ážá áœá²áá°áá»á¬ážááá¯ááºááá¯ááºá áááºááá·áºá¡áá¬ááá¯áá»áŸ á¡áá¯á¶ážáá»áááºááá¯ááºáá«á
ááœááºáááºáááºááœááºááŸá¯á¡ááœááºážá TLS áá¯ááºááŸááºááŒááºážááᯠááŸá áºáááºážááœá¬ážá¡áá¯á¶ážááŒá¯áááº- áá¬áá¬ááŸáá·áº client ááœáẠáááºážááá¯á·áááá¯ááºááá¯ááºáá±á¬á·áá»á¬ážááŸáá·áº áááºááá¯ááºáᬠáááºááŸááºáá»á¬ážááŸááááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áº áá¬áá¬ááẠáá±á¬ááºáááºáá»á¬ážá¡ááœáẠáááºááŸááºáá»á¬ážááá¯áá¯ááºáá±ážáá±á¬áºáááºáž áá°á¡áá¡á¬ážááŒáá·áº ááŒááºá CA ááᯠá¡áá¯á¶ážááŒá¯ááẠááŒá áºááá¯ááºáááºá
ááŒá±ááŒá¬á á¬áááºážááááºáááº
áá¯ááºáá±ážá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááœáẠáá¯ááºáá±ážáá¬áá¬ááá¯á· áá»áááºáááºáá« áá¯á¶ááŸááºáá»á¬áž (nodes)á node áá»á¬ážá¡ááœáẠconfiguration ááá¯áá±ážáá¬ážáá¬ážáááºá manifestos ááœáẠá¡áá°ážáááá¯ááááºážáááºážáá¬áá¬á áá¬áž - áá¯ááºáá±áž DSL á
áá¯ááºáá±áž DSL ááẠááŒá±ááŒá¬áá¬áá¬á áá¬ážáá áºáá¯ááŒá áºáááºá áááºážááẠá¡áááºážá¡ááŒá áºáá áºáá¯áá»ááºážá á®á ááŒá±ááŒá¬áá»ááºáá¯á¶á á¶ááŒáá·áº node áá¡ááá¯ááŸááá±á¬á¡ááŒá±á¡áá±á¡á¬áž áá±á¬áºááŒáááºá á¥ááá¬-
- ááá¯ááºáááºááŸáááŒá®áž áááºážááœáẠáá®ážááŒá¬ážá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááŸááááºá
- á¡áá¯ááºááᯠáááºáááºáá¬ážáááºá
- áááºáá±á¬ááºááŸá¯á áááºáá«ááŒá®á
á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡ááŒááºá¡ááŸááºáá»áááºáááºááá¯ááºáááº-
- ááŸá®ááá¯ááŸá¯áá»á¬ážááŸááááºá áááºážááá¯á·ááẠá¡áááºážá¡ááŒá
áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áº á¡á
á®á¡á
ááºá¡áá±á«áº áááºáá±á¬ááºááŸá¯ááŸááááºá
á¥ááá¬á¡á¬ážááŒáá·áº "áááºáá±á·áá»áºááᯠáŠážá áœá¬ááá·áºááœááºážáá«á ááá¯á·áá±á¬áẠááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááá¯ááºááᯠáááºážááŒááºáá«á ááá¯á·áá±á¬áẠáááºáá±á¬ááºááŸá¯ááᯠá áááºáá«á" - á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬áž ááŸáááẠ- á¡áááºážá¡ááŒá
áºáá
áºáᯠááŒá±á¬ááºážáá²ááœá¬ážáá«á áááºážááœáẠá
á¬áááºážááœááºážáá¬ážááá·áº á¡áááºážá¡ááŒá
áºáá»á¬ážáᶠá¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬áž áá±ážááá¯á·áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá ááœá²á·á ááºážááŸá¯ááá¯ááºááẠááŒá±á¬ááºážáá²áá«áá áááºááẠáááºáá±á¬ááºááŸá¯ááᯠá¡ááá¯á¡áá»á±á¬áẠááŒááºáááºá áááºááá¯ááºáááºá
ááá¯á·á¡ááŒááºá áá¯ááºáá±áž DSL ááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáá·áº ááœá²ááŒá¬ážááŸá¯áá»á¬ážá¡ááŒáẠá¡ááŒá±á¡áá±ááá¯ááºáᬠáá¯ááºááŒááºáá»ááºáá»á¬ážááŸáá·áº ááœá±ážáá»ááºááŸá¯áá»á¬ážáá«ááŸááááºá á¡áá»áá¯ážáá»áá¯ážáá±á¬ áá¯á¶á á¶ááœááºáá¯á¶á ᶠááá¹ááá¬ážáá»á¬ážááᯠEPP ááŸáá·áº ERB ááá¯á·ááá¯áááºáž áá¶á·ááá¯ážáá¬ážáááºá
áá¯ááºáá±ážááᯠááá¹áááŒá¬ážááŒáá·áº áá±ážáá¬ážáá±á¬ááŒá±á¬áá·áº áááºáá±á¬ááºáá¯á¶ááŸáá·áº á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážá áœá¬ááᯠááá¯áá±áá¬á០áá°áá¬ážáááºá Ruby ááẠááá·áºá¡á¬áž áá¯ááºáá±ážááá¯áá»á²á·ááœááºááẠááœáá·áºááŒá¯ááẠ- ááŸá¯ááºááœá±ážáá±á¬áá¯áá¹áááá±áá á¡áááºážá¡ááŒá áºá¡áá»áá¯ážá¡á á¬ážá¡áá áºáá»á¬ážá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯ááá·áºáá«á
Puppet áá¯ááºáá±á¬ááºáá±áá»áááºááœáẠáá¬áá¬ááŸá áá®ážááŒá¬áž node áá áºáá¯á á®á¡ááœáẠmanifests áá»á¬ážááᯠdirectory áá áºáá¯á¡ááŒá Ạá á¯á ááºážáá¬ážáá«áááºá directory ááᯠáá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážá ááááºážááŸááºáá»á¬ážááŸáá·áº á¡ááŒá±á¡áá±ááá¯ááºáᬠáá¯ááºááŒááºáá»ááºáá»á¬ážá áá»á²á·ááœááºááŸá¯áááºááá¯ážááᯠááœááºáá»ááºááŒá®ážáá±á¬áẠá¡áááºážá¡ááŒá áºáá»á¬ážááŸáá·áº áááºážááá¯á·á áááºáá¶áá±ážáá»á¬ážá á¬áááºážááŒá áºáááºá
á¡áá¬ážá¡ááá¯ááŸáá·áº áá¯ááºáá¯á¶á á¶
áá±ážáá¬ážáá±á¬ááá°áá¬áá»á¬áž ááá¯á¶áá±á¬ááºáá«á á€á¡áá¬áá»á¬ážááẠááá¬ážáááºá á¬ááœááºá á¬áááºážáá»á¬ážá á¡ááá¯ááºážáá»á¬ážááŒá áºáááº-
á¡áá»áá¯ážáá»áá¯ážáá±á¬áá¬áá¬á áá¬ážáááºáá±á¬ááºááŸá¯á syntax á á¡áááºážá¡ááŒá áºá¡áá¬ážá¡ááá¯á node áá»á¬ážááá¯áá±á¬áºááŒááŒááºážá¡ááœáẠSyntax
á€á¡áá¬ááẠáá±á¬áºááŒáá»ááºááá¯á¶ááá¹áá¬áẠá¥ááá¬áá áºáá¯ááŒá áºáááºá
# ÐПЌЌеМÑаÑОО пОÑÑÑÑÑ, как О ЌМПгП гЎе, пПÑле ÑеÑÑÑкО.
#
# ÐпОÑаМОе кПМÑОгÑÑаÑОО ÐœÐŸÐŽÑ ÐœÐ°ÑОМаеÑÑÑ Ñ ÐºÐ»ÑÑевПгП ÑлПва node,
# за кПÑПÑÑÐŒ ÑлеЎÑÐµÑ ÑелекÑÐŸÑ ÐœÐŸÐŽÑ â Ñ
ПÑÑМейЌ (Ñ ÐŽÐŸÐŒÐµÐœÐŸÐŒ ОлО без)
# ОлО ÑегÑлÑÑМПе вÑÑажеМОе ÐŽÐ»Ñ Ñ
ПÑÑМейЌПв, ОлО клÑÑевПе ÑлПвП default.
#
# ÐПÑле ÑÑПгП в ÑОгÑÑÐœÑÑ
ÑкПбкаÑ
ПпОÑÑваеÑÑÑ ÑПбÑÑвеММП кПМÑОгÑÑаÑÐžÑ ÐœÐŸÐŽÑ.
#
# ÐЎМа О Ñа же МПЎа ÐŒÐŸÐ¶ÐµÑ Ð¿ÐŸÐ¿Ð°ÑÑÑ Ð¿ÐŸÐŽ МеÑкПлÑкП ÑелекÑПÑПв. ÐÑП пÑОПÑОÑеÑ
# ÑелекÑПÑПв МапОÑаМП в ÑÑаÑÑе пÑП ÑОМÑакÑÐžÑ ÐŸÐ¿ÐžÑÐ°ÐœÐžÑ ÐœÐŸÐŽ.
node 'hostname', 'f.q.d.n', /regexp/ {
# ÐПМÑОгÑÑаÑÐžÑ Ð¿ÐŸ ÑÑÑО ÑвлÑеÑÑÑ Ð¿ÐµÑеÑОÑлеМОеЌ ÑеÑÑÑÑПв О ОÑ
паÑаЌеÑÑПв.
#
# У кажЎПгП ÑеÑÑÑÑа еÑÑÑ ÑОп О МазваМОе.
#
# ÐМОЌаМОе: Ме ÐŒÐŸÐ¶ÐµÑ Ð±ÑÑÑ ÐŽÐ²ÑÑ
ÑеÑÑÑÑПв ПЎМПгП ÑОпа Ñ ÐŸÐŽÐžÐœÐ°ÐºÐŸÐ²ÑЌО МазваМОÑЌО!
#
# ÐпОÑаМОе ÑеÑÑÑÑа МаÑОМаеÑÑÑ Ñ ÐµÐ³ÐŸ ÑОпа. ТОп пОÑеÑÑÑ Ð² МОжМеЌ ÑегОÑÑÑе.
# ÐÑП ÑазМÑе ÑÐžÐ¿Ñ ÑеÑÑÑÑПв МапОÑаМП МОже.
#
# ÐПÑле ÑОпа в ÑОгÑÑÐœÑÑ
ÑкПбкаÑ
пОÑеÑÑÑ ÐœÐ°Ð·Ð²Ð°ÐœÐžÐµ ÑеÑÑÑÑа, пПÑПЌ ЎвПеÑПÑОе,
# ЎалÑÑе ОЎÑÑ ÐŸÐ¿ÑОПМалÑМПе пеÑеÑОÑлеМОе паÑаЌеÑÑПв ÑеÑÑÑÑа О ОÑ
зМаÑеМОй.
# ÐМаÑÐµÐœÐžÑ Ð¿Ð°ÑаЌеÑÑПв ÑказÑваÑÑÑÑ ÑеÑез Ñ.Ðœ. hash rocket (=>).
resource { 'title':
param1 => value1,
param2 => value2,
param3 => value3,
}
}
Indentation ááŸáá·áº line breaks áá»á¬ážááẠmanifest á ááá¯á¡ááºáá±á¬ á¡á
áááºá¡ááá¯ááºážááá¯ááºáá±á¬áºáááºáž á¡ááŒá¶ááŒá¯áá»ááºáá
áºáá¯ááŸááá«áááºá
- áá±áá¬ááœááºááŸá áºáᯠá¡ááºáááºážáá»á¬ážá áááºááºáá»á¬ážááᯠá¡áá¯á¶ážáááŒá¯áá«á
- Curly braces áá»á¬ážááᯠspace áá áºáá¯ááŒáá·áº ááá¯ááºážááŒá¬ážáá¬ážááŒá®áž colon áá»á¬ážááᯠspace áá áºáá¯ááŒáá·áº áááœá²ááŒá¬ážáá«á
- áá±á¬ááºáá¯á¶ážáá
áºáá¯á¡áá«á¡ááẠááá·áºáááºáá±á¬ááºáá
áºáá¯á
á®ááŒá®ážáá±á¬áẠáá±á¬áºáá¬áá»á¬ážá ááá·áºáááºáá»ááºáá
áºáá¯á
á®ááẠáá®ážááŒá¬ážáá»ááºážáá
áºáá¯áá±á«áºááœááºááŸááááºá ááá·áºáááºáá±á¬ááºáá»á¬ážááŸáá·áº ááá·áºáááºáá»ááºáá
áºáá¯ááá«áá² ááá
á¹á
áááºá¡ááœáẠááŒáœááºážáá»ááºáá
áºáá¯ááẠá
á¬ááŒá±á¬ááºážáá
áºááŒá±á¬ááºážááŸáá·áº áá±á¬áºáá¬ááá«áá² áá±ážááá¯ááºááẠ(ááá¯ááá¯áááºááŸá¬á
resource { 'title': }
Оresource { 'title': param => value }
). - ááá·áºáááºáá»ááºáá»á¬ážááŸá ááŒáŸá¬ážáá»á¬ážááẠáá°áá®áá±á¬á¡ááá·áºááœáẠááŸáááá·áºáááºá
- á¡áááºážá¡ááŒá áºáááºááœááºááŸá¯ááœáŸá¬ážáá»á¬ážááᯠáááºážááá¯á·ááŸá±á·ááœáẠáá±ážáá¬ážáááºá
pappetserver ááŸá ááá¯ááºáá»á¬ážááááºáá±áá¬
áá±á¬ááºáááºááŸááºážáááºážáá»ááºá¡ááœááºá áá»áœááºá¯ááºááẠ"á¡ááŒá áºáááºážááœáŸááº" áááá±á¬ááá¬ážááá¯ááááºáááºáá±ážáá«áááºá root directory ááẠáá®ážááŒá¬áž node áá áºáá¯á¡ááœáẠPuppet configuration áá«áááºáá±á¬ directory ááŒá áºáááºá
Puppet áá¬ážááŸááºážááŸáá·áº á¡áá¯á¶ážááŒá¯ááá·áº áááºáááºážáá»ááºáá»á¬ážáá±á«áºáá°áááºá root directory ááœá²ááŒá¬ážáááºá áááºáááºážáá»ááºáá»á¬ážááẠáá®ážááŒá¬ážáááºážááœáŸááºáá»á¬ážááœáẠááááºážáááºážáá¬ážááá·áº áá®ážááŒá¬ážááœááºáááºáá±á¬ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá»á¬ážááŒá áºáááºá áá»á¬ážáá±á¬á¡á¬ážááŒáá·áº git ááŸáá·áº ááœá²áá¯á¶ážáá±á·ááŸááááºá áááºážá¡ááŒá±á¡áá±ááœáẠáááºáááºážáá»ááºáá»á¬ážááᯠgit á¡ááá¯ááºážá¡áááºáá»á¬ážá០áááºáá®ážáá¬ážáááºá ááá¯á·ááŒá±á¬áá·áºá node áá áºáá¯á á®ááẠáááºáááºážáá»ááºáá áºáᯠááá¯á·ááá¯áẠá¡ááŒá¬ážáá áºáá¯ááœáẠáááºááŸááááºá áááºážááᯠnode ááá¯ááºááá¯áẠááá¯á·ááá¯áẠENC ááœáẠconfigure áá¯ááºááá¯ááºáá«áááºá áá±á¬ááºáá±á¬ááºážáá«ážááœáẠáá»áœááºá¯ááºááŒá±á¬áá«áááºá
- áááááá¬ážááŸááºáž ("áá¯ááºáá±ážáá±á¬ááºáž") ááœáẠá¡ááŒá±áá¶áááºážááœáŸááºááŒá
áºáááºá
/etc/puppet
. áááºáááºážáá»ááºááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠá áááºááŒáá¯ááºááœá±ážáá»ááºááá¯ááºááẠ- á¥ááá¬á áá»áœááºá¯ááºááá¯á·ááẠáááºážááá¯á·ááᯠáá¯ááºáá±ážá¡áá±á¬ááºážááŒáá·áº ááá¯á¶ážáá«á áááºáááºážáá»ááºááᯠá¡áá¯á¶ážááŒá¯áá«áá áááºážááá¯á·ááᯠáá»á¬ážáá±á¬á¡á¬ážááŒáá·áº ááááºážáááºážáá¬ážáááºá/etc/puppet/environments
root directory ááẠenvironment directory ááŒá áºáááá·áºáááºá áááºáááºážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážáááŒá¯áá«áá root directory ááẠbase directory ááŒá áºáááá·áºáááºá - á
áá¯áá¹ááá¬ážááŸááºáž ("áá¯ááºáá±ážá¡áá
áº") ááŸá
áááºá áááºáááºážáá»ááºá¡áá¯á¶ážááŒá¯ááŸá¯ááẠáááŒá
áºááá±ááŒá
áºáá¬ááŒá®áž á¡ááŒá±áá¶áááºážááœáŸááºááá¯á· ááŒá±á¬ááºážááœáŸá±á·áá²á·áááºá
/etc/puppetlabs/code
. ááá¯á·ááŒá±á¬áá·áº áááºáááºážáá»ááºááœáẠááááºážáááºážáá¬ážáááºá/etc/puppetlabs/code/environments
á root directory ááẠáááºáááºážáá»ááºáááºážááœáŸááºááŒá áºáááºá
root directory ááœáẠáááºážááŒá±á¬ááºážááœá²áá
áºáᯠááŸáááá«áááºá manifests
node áá»á¬ážááá¯áá±á¬áºááŒááá·áº áá
áºáᯠááá¯á·ááá¯áẠáá
áºáá¯áááºááá¯áá±á¬ manifest áá»á¬ážáá«ááŸááááºá ááá¯á·á¡ááŒááºá áááºážááŒá±á¬ááºážááœá²áá
áºáá¯ááŸáááá·áºáááºá modules
module áá»á¬ážáá«ááŸááááºá ááẠModule ááœá±ááᯠáá±á¬ááºá០ááŒá±á¬ááŒáá«áááºá ááá¯á·á¡ááŒáẠáá¯ááºáá±ážáá±á¬ááºážááœáẠáááºážááŒá±á¬ááºážááœá²áá
áºáá¯áááºáž ááŸáááá¯ááºáááºá files
áá»áœááºá¯ááºááá¯á·ááẠnode áá»á¬ážááá¯á·áá°ážáá°áá±á¬ááá¯ááºá¡áá»áá¯ážáá»áá¯ážáá« á ááºáá±á¬á áá¯ááºáá±ážá¡áá
áºááœááºá ááá¯ááºá¡á¬ážáá¯á¶ážááᯠmodules ááœááºááá·áºáá¬ážáááºá
Manifest ááá¯ááºáá»á¬ážááœáẠextension ááŸááááºá .pp
.
ááá¯ááºááá¯ááºáá±ážá¥ááá¬ááŸá áºáá¯
áááºážááœáẠnode ááŸáá·áº á¡áááºážá¡ááŒá áºá¡ááŒá±á¬ááºáž áá±á¬áºááŒáá»ááº
node áá±á«áºááŸá¬ server1.testdomain
ááá¯ááºáá
áºáá¯áááºáá®ážááá«áááºá /etc/issue
á¡ááŒá±á¬ááºážá¡áá¬ááŸáá·áºá¡áá° Debian GNU/Linux n l
. ááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá°ááŸáá·áº á¡ááœá²á·á០ááá¯ááºááá¯ááºááá«áááºá root
ááá°ááá¯ááºááœáá·áºááŸáááááºá 644
.
áááºáá®ážáááºá áºááá¯ááᯠáá»áœááºá¯ááºááá¯á·áá±ážáááº-
node 'server1.testdomain' { # блПк кПМÑОгÑÑаÑОО, ПÑМПÑÑÑОйÑÑ Ðº МПЎе server1.testdomain
file { '/etc/issue': # ПпОÑÑваеЌ Ñайл /etc/issue
ensure => present, # ÑÑÐŸÑ Ñайл ЎПлжеМ ÑÑÑеÑÑвПваÑÑ
content => 'Debian GNU/Linux n l', # Ñ ÐœÐµÐ³ÐŸ ЎПлжМП бÑÑÑ ÑакПе ÑПЎеÑжОЌПе
owner => root, # пПлÑзПваÑелÑ-влаЎелеÑ
group => root, # гÑÑппа-влаЎелеÑ
mode => '0644', # пÑава Ма Ñайл. ÐМО Ð·Ð°ÐŽÐ°ÐœÑ Ð² вОЎе ÑÑÑПкО (в кавÑÑкаÑ
), пПÑÐŸÐŒÑ ÑÑП ОМаÑе ÑОÑлП Ñ 0 в МаÑале бÑÐŽÐµÑ Ð²ÐŸÑпÑОМÑÑП как запОÑаММПе в вПÑÑЌеÑОÑМПй ÑОÑÑеЌе, О вÑÑ Ð¿ÐŸÐ¹ÐŽÑÑ ÐœÐµ Ñак, как заЎÑЌаМП
}
}
node áá áºáá¯ááŸá á¡áááºážá¡ááŒá áºáá»á¬ážááŒá¬áž áááºáá¶áá±áž
node áá±á«áºááŸá¬ server2.testdomain
nginx ááẠááááºááŒááºáááºáá¬ážáá±á¬ ááœá²á·á
ááºážááŸá¯á
áá
áºááŒáá·áº áá¯ááºáá±á¬ááºáá±ááá«áááºá
ááŒá¿áá¬ááᯠáá»á±áá»ááºááŒáá«á áá¯á·á
- áááºáá±á·ááºá»ááᯠááá·áºááœááºážááẠááá¯á¡ááºáááºá
nginx
. - configuration ááá¯ááºáá»á¬ážááᯠáá¬áá¬á០áá°ážáá°ááẠááá¯á¡ááºáá«áááºá
- áááºáá±á¬ááºááŸá¯ááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáá«áááºá
nginx
. - ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠá¡ááºááááºáá¯ááºáá«á áááºáá±á¬ááºááŸá¯ááᯠááŒááºáááºá áááºááá«áááºá
áááºáá®ážáááºá áºááá¯ááᯠáá»áœááºá¯ááºááá¯á·áá±ážáááº-
node 'server2.testdomain' { # блПк кПМÑОгÑÑаÑОО, ПÑМПÑÑÑОйÑÑ Ðº МПЎе server2.testdomain
package { 'nginx': # ПпОÑÑваеЌ Ð¿Ð°ÐºÐµÑ nginx
ensure => installed, # ПМ ЎПлжеМ бÑÑÑ ÑÑÑаМПвлеМ
}
# ÐÑÑÐŒÐ°Ñ ÑÑÑелка (->) гПвПÑÐžÑ ÐŸ ÑПЌ, ÑÑП ÑеÑÑÑÑ ÐœÐžÐ¶Ðµ ЎПлжеМ
# ÑПзЎаваÑÑÑÑ Ð¿ÐŸÑле ÑеÑÑÑÑа, ПпОÑаММПгП вÑÑе.
# ТакОе завОÑОЌПÑÑО ÑÑаМзОÑОвМÑ.
-> file { '/etc/nginx': # ПпОÑÑваеЌ Ñайл /etc/nginx
ensure => directory, # ÑÑП ЎПлжМа бÑÑÑ ÐŽÐžÑекÑПÑОÑ
source => 'puppet:///modules/example/nginx-conf', # ÐµÑ ÑПЎеÑжОЌПе ÐœÑжМП бÑаÑÑ Ñ Ð¿Ð°Ð¿Ð¿ÐµÑ-ÑеÑвеÑа пП ÑÐºÐ°Ð·Ð°ÐœÐœÐŸÐŒÑ Ð°ÐŽÑеÑÑ
recurse => true, # кПпОÑПваÑÑ ÑÐ°Ð¹Ð»Ñ ÑекÑÑÑОвМП
purge => true, # ÐœÑжМП ÑЎалÑÑÑ Ð»ÐžÑМОе ÑÐ°Ð¹Ð»Ñ (Ñе, кПÑПÑÑÑ
ÐœÐµÑ Ð² ОÑÑПÑМОке)
force => true, # ÑЎалÑÑÑ Ð»ÐžÑМОе ЎОÑекÑПÑОО
}
# ÐПлМОÑÑÐ°Ñ ÑÑÑелка (~>) гПвПÑÐžÑ ÐŸ ÑПЌ, ÑÑП ÑеÑÑÑÑ ÐœÐžÐ¶Ðµ ЎПлжеМ
# пПЎпОÑаÑÑÑÑ ÐœÐ° ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑ ÑеÑÑÑÑа, ПпОÑаММПгП вÑÑе.
# ÐПлМОÑÑÐ°Ñ ÑÑÑелка вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ Ð¿ÑÑÐŒÑÑ (->).
~> service { 'nginx': # ПпОÑÑваеЌ ÑеÑÐ²ÐžÑ nginx
ensure => running, # ПМ ЎПлжеМ бÑÑÑ Ð·Ð°Ð¿ÑÑеМ
enable => true, # егП ÐœÑжМП запÑÑкаÑÑ Ð°Ð²ÑПЌаÑОÑеÑкО пÑО ÑÑаÑÑе ÑОÑÑеЌÑ
}
# ÐПгЎа ÑеÑÑÑÑ ÑОпа service пПлÑÑÐ°ÐµÑ ÑвеЎПЌлеМОе,
# ÑППÑвеÑÑÑвÑÑÑОй ÑеÑÐ²ÐžÑ Ð¿ÐµÑезапÑÑкаеÑÑÑ.
}
áááºážááá¯áá¯ááºáá±á¬ááºáááºá áá¯ááºáá±ážáá¬áá¬ááœáẠá¡á±á¬ááºáá«ááá¯ááºáááºáá±áá¬ááᯠááá·áºááŸááºážááŒá± ááá¯á¡ááºáááº-
/etc/puppetlabs/code/environments/production/ # (ÑÑП ÐŽÐ»Ñ ÐœÐŸÐ²ÐŸÐ³ÐŸ ÐаппеÑа, ÐŽÐ»Ñ ÑÑаÑПгП кПÑМевПй ЎОÑекÑПÑОей бÑÐŽÐµÑ /etc/puppet)
âââ manifests/
â âââ site.pp
âââ modules/
âââ example/
âââ files/
âââ nginx-conf/
âââ nginx.conf
âââ mime.types
âââ conf.d/
âââ some.conf
á¡áááºážá¡ááŒá áºá¡áá»áá¯ážá¡á á¬ážáá»á¬áž
áá¶á·ááá¯ážáá±ážáá¬ážáá±á¬ á¡áááºážá¡ááŒá
áºá¡áá»áá¯ážá¡á
á¬ážáá»á¬ážá á
á¬áááºážá¡ááŒáá·áºá¡á
á¯á¶ááᯠá€áá±áá¬ááœáẠááœá±á·ááá¯ááºáá«áááºá
ááá¯ááº
ááá¯ááºáá»á¬ážá áááºážááœáŸááºáá»á¬ážá áááºá¹áá±áááá·áºááºáá»á¬ážá áááºážááá¯á·á á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááŸáá·áº áááºáá±á¬ááºááŒáá·áºááŸá¯ááœáá·áºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²áá«á
options ááá¯:
- á¡áááºážá¡ááŒá áºá¡ááẠ- ááá¯ááºááá¯á·áááºážááŒá±á¬ááºáž (áá»ááºááŸááºáá¬ážááá¯ááºáááº)
- áááºážááŒá±á¬ááºáž - ááá¯ááºááá¯á·ááœá¬ážáá¬áááºážááŒá±á¬ááºáž (á¡áááºááœááºááá±á¬áºááŒáá¬ážáá«á)
- áá±áá»á¬á
á±áá - ááá¯ááºá¡áá»áá¯ážá¡á
á¬áž:
absent
- ááá¯ááºáá áºáá¯ááá¯áá»ááºáá«ápresent
- áááºááá·áºááá¯ááºá¡áá»áá¯ážá¡á á¬ážáááá¯ááŸááááẠ(ááá¯ááºáááŸááá«á áá¯á¶ááŸááºááá¯ááºáá áºáá¯áááºáá®ážáá«áááº)file
- áá¯á¶ááŸááºááá¯ááºdirectory
- áááºážááœáŸááºlink
- áááºá¹áá±á
- á¡ááŒá±á¬ááºážá¡áᬠâ ááá¯ááºá¡ááŒá±á¬ááºážá¡áá¬áá»á¬áž (áá¯á¶ááŸááºááá¯ááºáá»á¬ážá¡ááœááºáá¬ááá·áºáá»á±á¬áºáááºá ááŸáá·áºááœá²áá¯á¶ážááááá«á á¡áááºážá¡ááŒá Ạááá¯á·ááá¯áẠáá áºááŸááº)
- á¡áááºážá¡ááŒá
Ạâ ááẠááá¯ááºá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáá°ážáá°ááá¯áá±á¬ áááºážááŒá±á¬ááºážááá¯á· ááá·áºááºáá
áºáᯠ(ááŸáá·áºá¡áá° ááœá²áá¯á¶ážááááá«á á¡ááŒá±á¬ááºážá¡áᬠááá¯á·ááá¯áẠáá
áºááŸááº) á¡á
á®á¡á
á¥áºáá
áºáá¯ááŒáá·áº URI áá
áºáá¯á¡ááŒá
ẠáááºááŸááºááá¯ááºáááºá
puppet:
(ááá¯á·áá±á¬áẠáá¯ááºáá±ážáá¬áá¬á០ááá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááº) ááŸáá·áº á¡á á®á¡á ááºááŒáá·áºhttp:
(áá®ááá á¹á ááŸá¬ áá¬ááŒá áºáááºááá¯áᬠááŸááºážááŸááºážáááºážáááºáž áá»áŸá±á¬áºááá·áºáá«áááº) áá²á· áá¯á¶ááŒááºážáá²á·áá±á¬ááºfile:
ááá¯á·ááá¯áẠschema ááá«áá² á¡ááŒáœááºážáá²á·áááºážááŒá±á¬ááºážá¡ááŒá Ạ(ááá¯á·áá±á¬áẠnode áá±á«áºááŸá local FS ááŸááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá«áááº) - áá áºááŸáẠ- áááºá¹áá±áááá·áºááºááᯠááœáŸááºááŒáááá·áºáá±áᬠ(áááºážááŸáá·áº ááœá²áá¯á¶ážááááá«á á¡ááŒá±á¬ááºážá¡áᬠááá¯á·ááá¯áẠá¡áááºážá¡ááŒá áº)
- ááá¯ááºááá¯ááºáá° - ááá¯ááºááá¯ááá¯ááºááá¯ááºááá·áºáá±á¬á¡áá¯á¶ážááŒá¯áá°
- á¡á¯ááºá ᯠ- ááá¯ááºááá¯ááºááá¯ááºááá·áºáá±á¬á¡á¯ááºá á¯
- mode ááᯠ- ááá¯ááºááœáá·áºááŒá¯áá»ááºáá»á¬áž (á á¬ááŒá±á¬ááºážá¡ááŒá áº)
- ááŒááºáᬠ- recursive directory processing ááᯠááœáá·áºáá±ážáááºá
- áá¯ááºáááºááŸááºážáááºáž - Puppet ááœááºáá±á¬áºááŒáá¬ážááŒááºážáááŸááá±á¬ááá¯ááºáá»á¬ážááá¯áá»ááºááŒááºážá¡á¬ážááœáá·áºááá¯ááºáááºá
- á¡ááºá¡á¬áž - Puppet ááœááºáá±á¬áºááŒáá¬ážááŒááºážáááŸááá±á¬áááºážááŒá±á¬ááºážáá»á¬ážááá¯áá»ááºááŒááºážá¡á¬ážááœáá·áºááá¯ááºáááºá
á¡áá¯ááº
áááºáá±á·áá»áºáá»á¬ážááᯠááá·áºááœááºážááŒá®áž áááºááŸá¬ážáááºá á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬ážááᯠááá¯ááºááœááºááá¯ááºááẠ- ááá·áºáááºáá±á¬ááºááᯠáááºááŸááºáá¬ážáá«á á¡áá¯ááºááᯠááŒááºáááºááá·áºááœááºážáá«á reinstall_on_refresh.
options ááá¯:
- á¡áááºážá¡ááŒá áºá¡ááẠ- á¡áá¯ááºá¡ááẠ(áá»ááºááŸááºáá¬ážááá¯ááºáááº)
- áá¬ááá»á±á¬ááᯠ- á¡áá¯ááºá¡ááẠ(á¡áááºááœááºááá±á¬áºááŒáá¬ážáá«á)
- áá¶á·ááá¯ážáá±ážáá° - á¡áá¯á¶ážááŒá¯ááẠáááºáá±á·áá»áºáááºáá±áá»á¬
- áá±áá»á¬á
á±áá - á¡áá¯ááºáá¡ááá¯ááŸááá±á¬á¡ááŒá±á¡áá±
present
,installed
- áááºááá·áºáá¬ážááŸááºážááá¯áááá¯ááá·áºááœááºážáá«álatest
- áá±á¬ááºáá¯á¶ážáá¬ážááŸááºážááᯠinstall áá¯ááºáá«áabsent
- áá»ááºááá¯ááºááẠ(apt-get remove
)purged
â configuration ááá¯ááºáá»á¬ážááŸáá·áºá¡áá° áá»ááºááá¯ááºááẠ(apt-get purge
)held
- á¡áá¯ááºáá¬ážááŸááºážááᯠáá±á¬á·áááºáá¬ážááẠ(apt-mark hold
)лÑÐ±Ð°Ñ ÐŽÑÑÐ³Ð°Ñ ÑÑÑПка
- áááºááŸááºáá¬ážáá±á¬áá¬ážááŸááºážááᯠááá·áºááœááºážáá¬ážáááºá
- reinstall_on_refresh - á¡á²á·ááá¯
true
á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºááᯠáááºáá¶áááŸááá±á¬á¡áá«ááœáẠáááºáá±á·ááºá»ááᯠááŒááºáááºááá·áºááœááºážáá«áááºá áááºáá±á¬ááºááŸá¯áá±á¬ááºáá»á¬ážááᯠááŒá±á¬ááºážáá²ááá·áºá¡áá« áááºáá±á·áá»áºáá»á¬áž ááŒááºáááºáááºáá±á¬ááºááẠááá¯á¡ááºááá¯ááºáá±á¬áºáááºáž á¡áááºážá¡ááŒá áºá¡ááŒá±áᶠááŒáá·áºáá±ááŸá¯áá»á¬ážá¡ááœáẠá¡áá¯á¶ážáááºáá«áááºá áá¯á¶áá±false
.
áááºáá±á¬ááºááŸá¯
áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá á®áá¶ááá·áºááœá²áááºá á¡áááá±ážáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºááẠ- áááºáá±á¬ááºááŸá¯ááᯠááŒááºáááºá áááºáááºá
options ááá¯:
- á¡áááºážá¡ááŒá áºá¡ááẠ- á á®áá¶ááá·áºááœá²áááá·áºáááºáá±á¬ááºááŸá¯ (áá»ááºááŸááºáá¬ážááá¯ááºáááº)
- áá¬ááá»á±á¬ááᯠ- á á®áá¶ááá·áºááœá²áááºááá¯á¡ááºáá±á¬áááºáá±á¬ááºááŸá¯ (á¡áááºááœááºááá±á¬áºááŒáá¬ážáá«á)
- áá±áá»á¬á
á±áá - áááºáá±á¬ááºááŸá¯áá¡ááá¯ááŸááá±á¬á¡ááŒá±á¡áá±
running
- áá±á¬ááºáá¯ááºstopped
- áááºááœá¬ážáááºá
- enable â áááºáá±á¬ááºááŸá¯ááᯠá
áááºááá¯ááºááŸá¯ááᯠááááºážáá»á¯ááºáááº-
true
â autorun ááá¯ááœáá·áºáá¬ážááẠ(systemctl enable
)mask
- áá¯ááºáá»ááºáá¬ážááẠ(systemctl mask
)false
- autorun ááá¯ááááºáá¬ážááẠ(systemctl disable
)
- ááŒááºá áááºááẠ- áááºáá±á¬ááºááŸá¯ááá¯ááŒááºáááºá áááºáááºá¡áááá·áº
- á¡áááºá·á¡áááºáž - áááºáá±á¬ááºááŸá¯á¡ááŒá±á¡áá±ááá¯á á áºáá±ážáááºá¡áááá·áº
- ááŒááºá
áá«ááŒá®á â áááºáá±á¬ááºááŸá¯ initscript ááẠááŒááºáááºá
áááºááŒááºážá¡á¬áž áá¶á·ááá¯ážááŸá¯ááŸááááŸá áá±á¬áºááŒáá«á ááŸááááº
false
ááŸáá·áº parameter ááá¯áááºááŸááºáá¬ážáááºá ááŒááºá áááºááẠ- á€ááá·áºáááºáá»ááºááááºááá¯ážááá¯á¡áá¯á¶ážááŒá¯áááºá ááŸááááºfalse
ááŸáá·áº parameter ááŒááºá áááºááẠááá±á¬áºááŒáá¬ážáá« - áááºáá±á¬ááºááŸá¯ááá¯áááºááá·áºááŒá®áž ááŒááºáááºá áááºááẠá áááºáá²á·ááẠ(ááá¯á·áá±á¬áº systemd ááẠá¡áááá·áºááᯠá¡áá¯á¶ážááŒá¯áááºásystemctl restart
). - hasstatus â áááºáá±á¬ááºááŸá¯ initscript ááẠcommand ááᯠáá¶á·ááá¯ážááŒááºážááŸááááŸá áá±á¬áºááŒáá«á
status
á áá»áŸááºfalse
ááá¯á·áá±á¬áẠparameter value ááá¯á¡áá¯á¶ážááŒá¯áááºá á¡áááºá·á¡áááºáž. áá¯á¶áá±true
.
á¡ááŸá¯áá±á¬ááºá¡áá¬ááŸá
ááŒááºáá¡áááá·áºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá á¡áááºá áááºááẠáááºááŸááºáá»ááºáá»á¬ážááᯠááááºááŸááºáá«á áááºáá®áž, áá¬áá»áŸááº, ááá¯ááºáá»áŸáẠááá¯á·ááá¯áẠááŒááºáááºáááºážáá áºááŒááºážPuppet ááᯠrun ááá¯ááºáž command ááᯠrun áá«áááá·áºáááºá á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºááẠ- á¡áááá·áºááᯠáá¯ááºáá±á¬ááºáááºá
options ááá¯:
- á¡áááºážá¡ááŒá áºá¡ááẠ- áá¯ááºáá±á¬ááºáááá·áºá¡áááá·áº (áá»ááºááŸááºáá¬ážááá¯ááºáááº)
- á¡áááá·áº - áá¯ááºáá±á¬ááºáááá·áº command (á¡áááºááœáẠááá±á¬áºááŒáá¬ážáá«á)
- áááºážááŒá±á¬ááºáž â executable file ááá¯ááŸá¬áááºáááºážááŒá±á¬ááºážáá»á¬áž
- áá¬áá»áŸáẠâ áá¯áááŒááºáá¯ááºááŒáá·áº á€áá«áá¬áá®áá¬ááœáẠáááºááŸááºáá¬ážáá±á¬ á¡áááá·áºááᯠááŒá®ážáá¯á¶ážáá«áá áááºáá¡áááá·áºááᯠáá¯ááºáá±á¬ááºáááºááŒá áºáááºá
- ááá¯ááºáá»áŸáẠâ á¡áááºá á€ááá·áºáááºáá»ááºááœááºáá±á¬áºááŒáá¬ážáá±á¬á¡áááá·áºááẠáá¯áááá¯ááºáá±á¬ááŒááºáá¯ááºááŒáá·áº ááŒá®ážáá«áá áááºáá¡áááá·áºááᯠáá¯ááºáá±á¬ááºáááá·áºáááº
- áááºáá®áž â á€ááá·áºáááºáá»ááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ááá¯ááºáááŸááá«áá áááºáá¡áááá·áºááá¯áá¯ááºáá±á¬ááºáááºááŒá áºáááºá
- ááŒááºáááºáááºážáá
áºááŒááºáž - á¡á²á·ááá¯
true
ááá¯á·áá±á¬áẠဠexec ááẠá¡ááŒá¬ážá¡áááºážá¡ááŒá áºáá»á¬ážáá¶á០á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáááŸááá±á¬á¡áá«ááŸáᬠá¡áááá·áºáá±ážáááºááŒá áºáááºá - cwd - command ááᯠrun áááá·áºáááºážááŒá±á¬ááºáž
- á¡áá¯á¶ážááŒá¯áá°ááᯠ- command ááᯠrun áááºá¡áá¯á¶ážááŒá¯áá°
- áá¶á·ááá¯ážáá±ážáá° - command ááá¯áááºááᯠrun áááá²á
- posix - ááá±ážáá¯ááºáááºážá ááºááᯠááá¯ážááŸááºážá áœá¬áááºáá®ážáá¬ážáá«áááºá áááºááŸááºáááºáá±áá»á¬áá«á á±á áááºážááŒá±á¬ááºáž
- á¡ááœá¶ - command ááᯠshell ááœááºá
áááºáááºá
/bin/sh
á áááºááŸááºááá¬ážáá«á áááºážááŒá±á¬ááºážglobbingá ááá¯ááºáá»á¬ážááŸáá·áº á¡ááŒá¬áž shell features áá»á¬ážááᯠáááºáá¯á¶ážááá¯ááºáááºá á¡áá°ážáá¬ááºáá±á¬ááºáá»á¬ážááŸááá«á á¡ááá¯á¡áá»á±á¬áẠááááŸáááá¯ááºááẠ(|
,;
,&&
,||
etc)á
cron
cronjobs ááááºážáá»á¯ááºáááºá
options ááá¯:
- á¡áááºážá¡ááŒá áºá¡ááẠ- áá áºáá»áá¯ážáá»áá¯áž ááœá²ááŒá¬ážáááºááŸááºáá«á
- áá±áá»á¬á
á±áá - áááá°á¡ááŒá±á¡áá±-
present
- áááŸááá»áŸááºáááºáá®ážáá«áabsent
- ááŸááá»áŸáẠáá»ááºáá«á
- á¡áááá·áº - ááẠcommand ááᯠrun áááá²
- áááºáááºážáá»áẠâ command ááᯠrun ááẠáááºááá·áºáááºáááºážáá»ááºááœáẠ(áááºáááºážáá»ááºááŒá±á¬ááºážááœá²áá»ááºáá»á¬ážááŸáá·áº áááºážááá¯á·ááááºááá¯ážáá»á¬ážááŸáááá·áº
=
) - á¡áá¯á¶ážááŒá¯áá°ááᯠ- áááºááá·áº user á០command ááᯠrun áááº
- áááá
áº, áá¬áá®, áá®ááá°ááá¬áá±á¬áº, á, áá
áẠ- áááºá¡áá»áááºááŸá¬ cron ááᯠrun áááá²á á€á¡ááºá¹áá«áááºáá»á¬ážáá²á០áá
áºá
á¯á¶áá
áºáá¬ááᯠááááºááŸááºáá¬ážáá«áá crontab ááŸá áááºážááááºááá¯ážááẠááŒá
áºáááá·áºáááºá
*
.
áá¯ááºáá±áž 6.0 ááœáẠcron áá²á·ááá¯á·
áá±áá¯áá»á¡á¬ážááŒáá·áº á¡áááºážá¡ááŒá áºáá»á¬ážá¡ááŒá±á¬ááºáž
á¡áááºážá¡ááŒá áºáá°ážááŒá¬ážááŸá¯áá»á¬ážá¡ááœáẠááá¯á¡ááºáá»ááºáá»á¬áž
á¡ááŒá áºáá»á¬ážáá¯á¶ážá¡ááŸá¬ážááá±á¬á· ááŒá±ááŒá¬áá»ááºááœá¬áž. á¡áá»áá¯ážá¡á á¬ážáá° á¡áááºáá° á¡áááºážá¡ááŒá áºááŸá áºáᯠááá¯á·ááá¯áẠááŸá áºáá¯áááºááá¯áá±á¬ áááºážááŒá áºáá»á¬áž áááºážááœáŸááºááœáẠáá±á«áºáá¬áá±á¬á¡áá« á€á¡ááŸá¬ážááŒá áºáá±á«áºáá«áááºá
ááá¯á·ááŒá±á¬áá·áº áááºáá¶áá±ážáá¬ážáá«áááºá áá°áá®áá±á¬ node á¡ááœáẠáá±á¬áºááŒáá»ááºáá»á¬ážááœáẠáá°áá®áá±á¬ á¡áá»áá¯ážá¡á á¬ážá á¡áááºážá¡ááŒá áºáá»á¬áž ááá«áááºááá·áºáá«á
áá
áºáá«áá
áºáá¶ááœáẠá¡áááºáá° áááºáá±á·áá»áºáá»á¬ážááᯠááá·áºááœááºážááẠááá¯á¡ááºáá±á¬áºáááºáž ááá°áá®áá±á¬ áááºáá±á·áá»áºáááºáá±áá»á¬áá»á¬ážááŒáá·áº áááºáááºááẠááá¯á¡ááºáááºá á€ááá
á¹á
ááœááºá áááºááẠparameter ááá¯á¡áá¯á¶ážááŒá¯áááºááá¯á¡ááºáááºá name
á¡ááŸá¬ážááá¯ááŸá±á¬ááºááŸá¬ážáááº:
package { 'ruby-mysql':
ensure => installed,
name => 'mysql',
provider => 'gem',
}
package { 'python-mysql':
ensure => installed,
name => 'mysql',
provider => 'pip',
}
ááœá¬ážááŒááºážááᯠááŸá±á¬ááºááŸá¬ážááẠá¡ááŒá¬ážá¡áááºážá¡ááŒá
áºá¡áá»áá¯ážá¡á
á¬ážáá»á¬áž â á¡áá¬ážáá°ááœá±ážáá»ááºááŸá¯áá»á¬ážááŸááááºá name
Ñ áááºáá±á¬ááºááŸá¯, command
Ñ á¡ááŸá¯áá±á¬ááºá¡áá¬ááŸá, áá±á¬áẠ... ááŒá®ážáá±á¬á·á
Metaparameters
á¡áááºážá¡ááŒá áºá¡áá»áá¯ážá¡á á¬ážáá áºáá¯á á®ááœáẠáááºážáááá±á¬ááá¬áááááºááá¯ááºáá² á¡áá°ážááá·áºáááºáá»ááºáá»á¬ážááŸááááºá
áááºáá¬áá±á¬ááºáá»á¬ážá
á¬áááºáž á¡ááŒáá·áºá¡á
á¯á¶
á¡ááá¯áá»á¯á¶ážá á¬áááºáž-
- áá±á¬ááºážááᯠâ á€ááá·áºáááºáá»ááºááẠáááºááá·áºá¡áááºážá¡ááŒá áºáá»á¬áž á€á¡áááºážá¡ááŒá áºá¡áá±á«áº áá°áááºáááºááᯠáá±á¬áºááŒáááºá
- ááŸá±á·ááŸá¬ - á€ááá·áºáááºáá»ááºááẠá€á¡áááºážá¡ááŒá áºá¡áá±á«áº áá°áááºáá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºááŸááºáááºá
- subscribe â á€ááá·áºáááºáá»ááºááẠá€á¡áááºážá¡ááŒá áºáá»á¬ážá០á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬ážááᯠáááºáá¶áááŸáááá·áº á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºááŸááºáááºá
- ááŒá¬ážááá á± â á€ááá·áºáááºáá»ááºááẠá€á¡áááºážá¡ááŒá áºá០á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬ážááᯠáááºáá¶áááŸáááá·áº á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºááŸááºáá±ážáááºá
á á¬áááºážááœááºážáá¬ážáá±á¬ áááºáá¬áá«áá¬áá®áá¬áá»á¬ážá¡á¬ážáá¯á¶ážááẠá¡áááºážá¡ááŒá áºááá·áºááºáá áºáᯠááá¯á·ááá¯áẠá áá¯áááºážááœááºážá ááœááºáá»á¬ážááœáẠááá·áºááºáá áºáá¯á¡á¬áž áááºáá¶áááºá
á¡áááºážá¡ááŒá áºáá»á¬ážááá¯á· ááá·áºááºáá»á¬áž
á¡áááºážá¡ááŒá áºááá·áºááºááẠá¡áááºážá¡ááŒá áºááᯠáá±á¬áºááŒááŒááºážáá¬ááŒá áºáááºá áááºážááá¯á·ááᯠááŸá®ááá¯ááŸá¯ááᯠááœáŸááºááŒááẠá¡áááá¡áá¯á¶ážááŒá¯áááºá áááŸááá±á¬ á¡áááºážá¡ááŒá áºááᯠááá¯ážáá¬ážááŒááºážááẠá á¯á ááºážááŸá¯ á¡ááŸá¬ážá¡ááœááºáž ááŒá áºá á±áááºá
ááá·áºááºá syntax ááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºáááº- á¡áááºážá¡ááŸá®ážááŒáá·áº á á¬áá¯á¶ážá¡ááŒá®áž (á¡áá»áá¯ážá¡á á¬ážá¡áááºááœáẠáá±á¬áºáá¶ááŸá áºáááºáá«áá»áŸááºá áá±á¬áºáá¶áá»á¬ážááŒá¬ážááŸá á¡áááºá á¡á áááºá¡ááá¯ááºážáá áºáá¯á á®ááᯠá á¬áá¯á¶ážááŒá®ážááŒáá·áº áá±ážáá¬ážáááº)á ááá¯á·áá±á¬áẠá áá¯áááºážááœááºážá áœááºááŸá á¡áááºážá¡ááŒá áºá¡ááẠ(á¡áááºáááŒá áºáááºááŸááºá áááŒá±á¬ááºážáá²áá°áž!) áá±áá¬ááœááºáá»á¬ážáááŸáááá·áºáá«á á¡áá»áá¯ážá¡á á¬ážá¡áááºááŒá®ážáá±á¬áẠáá±ážáá±á¬áá·áºááœááºážá ááœááºáá»á¬ážááᯠáá»ááºáá»ááºážáá±ážáá«á
á¥ááá¬:
file { '/file1': ensure => present }
file { '/file2':
ensure => directory,
before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']
ááŸá®ááá¯ááŸá¯ááŸáá·áº á¡áááá±ážáá»ááºáá»á¬áž
á¡á á±á¬ááá¯ááºážááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºážá á¡áááºážá¡ááŒá áºáá»á¬ážá¡ááŒá¬áž ááá¯ážááŸááºážáá±á¬ááŸá®ááá¯ááŸá¯áá»á¬ážááẠá¡áá°ážá¡ááŒá±á¬ááºážááŒá áºáááºá á áá¬ážáá ááºá ááŸá®ááá¯ááŸá¯áá±á«ááºážááá·áºááá·áºá¡áá« ááááá¬ážáá« - á á¯á ááºážááŸá¯á¡ááŸá¬ážá¡ááœááºážááŒá áºá á±ááá·áº cyclic ááŸá®ááá¯ááŸá¯ááᯠáááºáá®ážááá¯ááºáááºá
ááŸá®ááá¯ááŸá¯áá»á¬ážááŸáá·áºááá°áá²á á¡áááá±ážáá»ááºáá»á¬ážááẠá¡áá°ážá¡ááŒá±á¬ááºážááá¯ááºáá«á á¡áááá±ážáá»ááºáá»á¬ážá¡ááœáẠá¡á±á¬ááºáá«á ááºážáá»ááºážáá»á¬áž áááºáá±á¬ááºáááº-
- á¡áááºážá¡ááŒá áºá០á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáááŸááá«áá áááºážááᯠá¡ááºááááºáá¯ááºáá¬ážáááºá á¡ááºááááºáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠá¡áááºážá¡ááŒá áºá¡áá»áá¯ážá¡á á¬áž â áá±á«áºááœááºáá°áááºáááºá á¡ááŸá¯áá±á¬ááºá¡áá¬ááŸá command ááᯠrun ááŒá®ážá áááºáá±á¬ááºááŸá¯ áááºáá±á¬ááºááŸá¯ááᯠááŒááºáááºá áááºááẠá¡áá¯áẠá¡áá¯ááºááᯠááŒááºáááºááá·áºááœááºážáááºá á¡áááºážá¡ááŒá áºááœáẠá¡ááºááááºáá¯ááºáá±á¬ááºáá»ááºááᯠáááºááŸááºáá¬ážááŒááºážáááŸááá«áá áá¬ááŸáááŒá áºáá«á
- áá¯ááºáá±ážáááºáááºááŸá¯áá áºáá¯á¡ááœááºážá á¡áááºážá¡ááŒá áºááᯠáá áºááŒáááºáááºááá¯á ááœááºážáá¶áá¬ážáááºá á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬ážááœáẠááŸá®ááá¯ááŸá¯áá»á¬ážáá«áááºááŒá®áž ááŸá®ááá¯ááŸá¯ááááºááœáẠáá¶ááá¬áá»á¬ážááá«áááºáá±á¬ááŒá±á¬áá·áº ááŒá áºááá¯ááºáááºá
- Puppet ááẠá¡áááºážá¡ááŒá áºáá áºáá¯á á¡ááŒá±á¡áá±á¡á¬áž ááŒá±á¬ááºážáá²áá«áá áááºážááŒá áºááẠáááºážááœáẠá á¬áááºážááœááºážáá¬ážááá·áº á¡áááºážá¡ááŒá áºáá»á¬ážá¡á¬ážáá¯á¶ážáᶠá¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬áž áá±ážááá¯á·áááºá
- á¡áááºážá¡ááŒá áºáá áºáá¯á¡á¬áž á¡ááºááááºáá¯ááºáá«áá áááºážááẠá á¬áááºážááœááºážáá¬ážááá·áº á¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠá¡ááŒá±á¬ááºážááŒá¬ážáá»áẠáá±ážááá¯á·áááºá
áááºááŸááºáá¬ážáá±á¬ ááá·áºáááºáá±á¬ááºáá»á¬ážááᯠááá¯ááºááœááºááŒááºážá
á
ááºážáá»ááºážá¡áá á¡áá»áá¯á·áá±á¬á¡áááºážá¡ááŒá
áºáá±á¬ááºááẠáá¯á¶áá±áááºááá¯ážáááŸááá«á áááºáá®ážáááºá
áºááœáẠá€ááá·áºáááºáá»ááºááááºááŸááºáá¬ážáá«áá Puppet ááẠnode áá±á«áºááŸá áááºááá¯ááºáá¬á¡áááºážá¡ááŒá
áºá¡ááœáẠá€ááá¯ááºááá¯ááºááŸá¯ááᯠááŒá±á¬ááºážáá²áááºááá¯ááºáá«á á¥ááá¬- áááºážááŒá
áºáá
áºáá¯ááá¯áá»áŸáẠáá
áºáá»áá¯áž ááá¯áẠááá·áºáááºáá»áẠááááºááŸááºáá¬ážáá±á owner
ááá¯á·áá±á¬áẠáá¯ááºáá±ážááẠáááºááá¯ááºáá¬ááá¯ááºááá¯ááºááŸááºááᯠááŒá±á¬ááºážáá²áááºááá¯ááºáá«á
á¡áááºážáá»á¬ážá ááááºážááŸááºáá»á¬ážááŸáá·áº á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážááᯠááááºáááºááŒááºážá
áá»áœááºá¯ááºááá¯á·ááœáẠconfiguration ááá°áá®áá±á¬á¡á
áááºá¡ááá¯ááºážáá
áºáá¯áá«ááŸááá±á¬ node á¡áá»á¬ážá¡ááŒá¬ážááŸááááºááá¯áá«á
áá¯á·á ááá¯á·áá±á¬áº ááœá²ááŒá¬ážááŸá¯áá»á¬ážáááºážááŸáááẠ- ááá¯á·ááá¯ááºáá«á áááºážááá¯á·á¡á¬ážáá¯á¶ážááᯠáá
áºáá¯á¶ážáááºážááœáẠáá±á¬áºááŒááá¯ááºáááºá node {}
. áá¯ááºáá«áááºá áááºááẠconfiguration ááá°áá®áá±á¬á¡á
áááºá¡ááá¯ááºážáá»á¬ážááá¯ááá¯ážááŸááºážá
áœá¬áá°ážáá°ááá¯ááºáááºá ááá¯á·áá±á¬áºáá±áá¯áá»á¡á¬ážááŒáá·áºáááºážáááºááá¯ážááœá¬ážáá±á¬ááŒá±ááŸááºážáá»ááºááŒá
áºááẠ- ááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶áááºááŒá®ážááœá¬ážáá¬áááºááŸáá·áº configuration áá¡ááœá±ááœá±á¡á
áááºá¡ááá¯ááºážááá¯áááºááŒá±á¬ááºážáá«áá áá±áá¬áá»á¬ážá
áœá¬ááœááºáá°áá®áá±á¬á¡áá¬ááá¯áááºážááŒááºááááá·áºáááºá áá
áºáá»áááºáááºážááŸá¬áááºá á¡ááŸá¬ážáá
áºáá¯áá¯ááºááẠááœááºáá°áááºá áá±áá¯áá»á¡á¬ážááŒáá·áºá DRY (ááá¯áá·áºááá¯ááºááᯠáááºáá«ááá²áá² ááá¯ááºáá«ááŸáá·áº) áááá¬áááᯠá¡ááŒá±á¬ááºážááŒáá»ááºáá
áºáá¯ááŒáá·áº áá®ááœááºáá²á·áááºá
á€ááŒá¿áá¬ááá¯ááŒá±ááŸááºážáááºá€áá²á·ááá¯á·áá±á¬áá®ááá¯ááºážááŸááá«áááºá клаÑÑ.
á¡áááºáž
ááááŠážá áœá¬ á¡áááºážááᯠáá±á¬áºááŒááá¯áá«áááºá áá±á¬áºááŒáá»ááºááá¯ááºááá¯ááºá áááºááá·áºáá±áá¬ááœááºáááᯠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠááá·áºááá¬ážáá«á á¡áááºážááᯠáááºáá®ážáááºá áºáá»á¬ážááœáẠáá±á¬áºááŒáá¬ážáá«áááºá
# ÐпОÑаМОе клаÑÑа МаÑОМаеÑÑÑ Ñ ÐºÐ»ÑÑевПгП ÑлПва class О егП МазваМОÑ.
# ÐалÑÑе ОЎÑÑ ÑелП клаÑÑа в ÑОгÑÑÐœÑÑ
ÑкПбкаÑ
.
class example_class {
...
}
á¡á²áá«ááŒá®ážááẠá¡áááºážááᯠáá¯á¶ážááá¯ááºáá«áááºá
# пеÑвÑй ваÑÐžÐ°ÐœÑ ÐžÑпПлÑÐ·ÐŸÐ²Ð°ÐœÐžÑ â в ÑÑОле ÑеÑÑÑÑа Ñ ÑОпПЌ class
class { 'example_class': }
# вÑПÑПй ваÑÐžÐ°ÐœÑ ÐžÑпПлÑÐ·ÐŸÐ²Ð°ÐœÐžÑ â Ñ Ð¿ÐŸÐŒÐŸÑÑÑ ÑÑМкÑОО include
include example_class
# пÑП ПÑлОÑОе ÑÑОÑ
ЎвÑÑ
ваÑОаМÑПв бÑÐŽÐµÑ ÑаÑÑказаМП ЎалÑÑе
ááááºáá¯ááºáá±á¬ááºá áá¬á០á¥ááá¬áá áºáᯠ- nginx á áááºáááºááŸá¯ááŸáá·áº ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠá¡áááºážáá áºáá¯ááá¯á· ááœáŸá±á·ááŒáá«á áá¯á·á
class nginx_example {
package { 'nginx':
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => 'puppet:///modules/example/nginx-conf',
recure => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
include nginx_example
}
ááááºážááŸááºáá»á¬áž
ááááºááá°áá¬á០á¡áááºážááẠáá°áá®áá±á¬ nginx configuration ááᯠá¡ááŒá²áá°áá±á¬ááºáá¬áá±á¬ááŒá±á¬áá·áº áá¯á¶ážáááŒá±á¬ááºážááœááºáááºááá¯ááºáá±á configuration variable áá®ááá¯á· áááºážááŒá±á¬ááºážááᯠáá¯ááºááŒáá·áºáá¡á±á¬ááºá ááá¯á·áá±á¬áẠáááºááá·áº configuration ááŒáá·áº nginx ááá¯áááᯠááá·áºááœááºážááẠá€á¡áááºážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
áá¯ááºáá±á¬ááºááá¯ááºáááº
áááááŒá¯áááº- áá¯ááºáá±ážááŸá ááááºážááŸááºáá»á¬ážááẠáááŒá±á¬ááºážáá²ááá¯ááºáá«á
ááá¯á·á¡ááŒááºá variable ááá¯ááŒá±ááŒá¬ááŒá®ážááŸáá¬áááºáá±á¬ááºááá¯ááºáááºá ááá¯á·ááá¯ááºáá«á variable ááááºááá¯ážáááºááŒá
áºáááá·áºáááºá undef
.
variable áá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºááŒááºáž á¥ááá¬
# ÑПзЎаМОе пеÑеЌеММÑÑ
$variable = 'value'
$var2 = 1
$var3 = true
$var4 = undef
# ОÑпПлÑзПваМОе пеÑеЌеММÑÑ
$var5 = $var6
file { '/tmp/text': content => $variable }
# ОМÑеÑпПлÑÑÐžÑ Ð¿ÐµÑеЌеММÑÑ
â ÑаÑкÑÑÑОе зМаÑÐµÐœÐžÑ Ð¿ÐµÑеЌеММÑÑ
в ÑÑÑПкаÑ
. РабПÑÐ°ÐµÑ ÑПлÑкП в ЎвПйМÑÑ
кавÑÑкаÑ
!
$var6 = "Variable with name variable has value ${variable}"
áá¯ááºáá±ážááŸááááºá á¡áááºáá±áá¬áá»á¬áž, ááŸáá·áº variables, áá»á±á¬áºáá®á áœá¬, ááŸáááẠááŒááºááá¯ááºá áœááºážá§áááá¬: á¡áááºáá° ááááºážááŸááºáá áºáá¯ááᯠááá°áá®áá±á¬ namespace áá»á¬ážááœáẠáááºááŸááºááá¯ááºáá«áááºá variable ááááºááá¯ážááᯠááŒá±ááŸááºážáá±á¬á¡áá«á variable ááᯠáááºááŸá namespace ááœáẠááŸá¬ááœá±áááºá ááá¯á·áá±á¬áẠenclosing namespace ááœááºá á¡á ááŸááááºááá¯á·ááᯠááŸá¬ááœá±áááºá
Namespace á¥ááá¬áá»á¬áž-
- global - class ááá¯á·ááá¯áẠnode áá±á¬áºááŒáá»ááºá¡ááŒááºáááºááœáẠvariable áá»á¬ážááẠááá¯áá±áá¬ááá¯á·ááœá¬ážáá«á
- node áá±á¬áºááŒáá»ááºááŸá node namespace;
- class áá±á¬áºááŒáá»ááºááŸá class namespaceá
variable ááá¯áááºáá±á¬ááºááá·áºá¡áá« ááŸá¯ááºááœá±ážááŸá¯áááŸáá á±áááºá variable name ááœáẠnamespace ááᯠáááºáááºááŸááºááá¯ááºáááº-
# пеÑÐµÐŒÐµÐœÐœÐ°Ñ Ð±ÐµÐ· пÑПÑÑÑаМÑÑва ОЌÑÐœ
$var
# пеÑÐµÐŒÐµÐœÐœÐ°Ñ Ð² глПбалÑМПЌ пÑПÑÑÑаМÑÑве ОЌÑÐœ
$::var
# пеÑÐµÐŒÐµÐœÐœÐ°Ñ Ð² пÑПÑÑÑаМÑÑве ОЌÑÐœ клаÑÑа
$classname::var
$::classname::var
nginx configuration ááá¯á·áááºážááŒá±á¬ááºážááẠvariable ááœááºáááºááŸáááŒá±á¬ááºážááá±á¬áá°ááŒáá«á
áá¯á· $nginx_conf_source
. ááá¯á·áá±á¬áẠá¡áááºážááẠá€áá²á·ááá¯á· ááŒá
áºáááá·áºáááºá
class nginx_example {
package { 'nginx':
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => $nginx_conf_source, # зЎеÑÑ ÐžÑпПлÑзÑеЌ пеÑеЌеММÑÑ Ð²ÐŒÐµÑÑП ÑОкÑОÑПваММПй ÑÑÑПкО
recure => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
$nginx_conf_source = 'puppet:///modules/example/nginx-conf'
include nginx_example
}
ááá¯á·áá±á¬áºá á¡áááºážá¡ááœááºážá á¡áá»áá¯á·áá±á¬ âáá»áŸáá¯á·ááŸááºá¡ááááá¬â ááŸááá±á¬ááŒá±á¬áá·áº á¥ááá¬áá±ážááááºááŸá¬ ááá±á¬ááºážáá«á á€á¡ááááá¬ááᯠáá±áá°áá»ááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºááŒááºážááẠááá¯ááŸááºááẠ- á¡áááºážáá»á¬ážááœáẠááá·áºáááºáá»ááºáá»á¬áž ááŸáááá¯ááºáááºá
á¡áááºážáááºááŸááºáá»ááºáá»á¬áž class namespace ááœáẠvariable áá»á¬ážááŒá áºáááºá áááºážááá¯á·ááᯠclass header ááœááºáááºááŸááºáá¬ážááŒá®áž class body ááŸá áá¯á¶ááŸáẠvariable áá»á¬ážáá²á·ááá¯á·á¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá áááºáá®ážáááºá áºááŸá á¡áááºážááᯠá¡áá¯á¶ážááŒá¯áá±á¬á¡áá« áá«áá¬áá®áá¬áááºááá¯ážáá»á¬ážááᯠáááºááŸááºáá±ážáááºá
áá«áá¬áá®áá¬ááᯠáá°áááºážáááºááá¯ážá¡ááŒá ẠáááºááŸááºááá¯ááºáááºá ááá·áºáááºáá±á¬ááºáá áºáá¯ááœáẠáá¯á¶áá±áááºááá¯ážáááŸáá á¡áá¯á¶ážááŒá¯ááá·áºá¡áá« áááºááá¯ážááᯠááááºááŸááºáá«áá áááºážááẠá á¯á ááºážááŸá¯á¡ááŸá¬ážááᯠááŒá áºá á±áááºá
á¡áááºáá±á¬áºááŒáá« á¥ááá¬á០á¡áááºážááᯠááá·áºáááºáááºááŸááºááŒá®áž ááá·áºáááºáá»ááºááŸá
áºáá¯ááᯠáá±á«ááºážááá·áºááŒáá«á
áá¯á·- áááá ááá¯á¡ááºáá±á¬á ááœá²á·á
ááºážááŸá¯ááá¯á·ááœá¬ážááá·áº áááºážááŒá±á¬ááºážááŒá
áºááŒá®ážá áá¯áááá ááœá±ážáá»ááºááá¯ááºáááºááŸá¬ nginx ááŒáá·áº áááºáá±á·áá»áºáá¡áááºááŒá
áºááẠ(á¥ááá¬á Debian ááœáẠáááºáá±á·áá»áºáá»á¬áž ááŸááááºá nginx
, nginx-light
, nginx-full
).
# пеÑеЌеММÑе ПпОÑÑваÑÑÑÑ ÑÑÐ°Ð·Ñ Ð¿ÐŸÑле ОЌеМО клаÑÑа в кÑÑглÑÑ
ÑкПбкаÑ
class nginx_example (
$conf_source,
$package_name = 'nginx-light', # паÑаЌеÑÑ ÑП зМаÑеМОеЌ пП ÑЌПлÑаМОÑ
) {
package { $package_name:
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => $conf_source,
recurse => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
# еÑлО ÐŒÑ Ñ
ПÑОЌ заЎаÑÑ Ð¿Ð°ÑаЌеÑÑÑ ÐºÐ»Ð°ÑÑа, ÑÑМкÑÐžÑ include Ме пПЎПйЎÑÑ* â ÐœÑжМП ОÑпПлÑзПваÑÑ resource-style declaration
# *Ма ÑаЌПЌ Ўеле пПЎПйЎÑÑ, МП пÑП ÑÑП ÑаÑÑÐºÐ°Ð¶Ñ Ð² ÑлеЎÑÑÑей ÑеÑОО. ÐлÑÑевПе ÑлПвП "Hiera".
class { 'nginx_example':
conf_source => 'puppet:///modules/example/nginx-conf', # заЎаÑÐŒ паÑаЌеÑÑÑ ÐºÐ»Ð°ÑÑа ÑПÑМП Ñак же, как паÑаЌеÑÑÑ ÐŽÐ»Ñ ÐŽÑÑгОÑ
ÑеÑÑÑÑПв
}
}
áá¯ááºáá±ážááœááºá variable áá»á¬ážááá¯ááá¯ááºááá·áºáááºá á
á¬ážáááº
á¡áá»áá¯ážá¡á á¬ážááᯠáá«áá¬áá®áá¬á¡áááºááŸá±á·ááœáẠáá»ááºáá»ááºážáá±ážáá¬ážáááº-
class example (
String $param1,
Integer $param2,
Array $param3,
Hash $param4,
Hash[String, String] $param5,
) {
...
}
á¡áááºážáá»á¬áž- á¡áááºážá¡áááºááŸáá·áº á¡áááºážá¡á á¬áž{'á¡áááºážá¡áááº':} áá«áááºáááºá
á¡áááºážááá¯ááºážááẠá¡áááºážá¡ááŒá áºá¡áá»áá¯ážá¡á á¬ážááŒá áºáááºá á¡áááºážá¡á á¬áž. á¡ááŒá¬ážáá±á¬ á¡áááºážá¡ááŒá áºá¡áá»áá¯ážá¡á á¬ážáá»á¬ážáá²á·ááá¯á·á áá°áá®áá±á¬ node ááœáẠáá°áá®áá±á¬ class ááŸá áºáá¯ááŸáááááá«á
class áá
áºáá¯ááᯠáá°áá®áá²á· node áá²ááᯠááŸá
áºááŒáááºááá·áºááá¯á· ááŒáá¯ážá
á¬ážááẠclass { 'classname':}
(ááœá²ááŒá¬ážááŸá¯áááŸááá«á ááá°áá®áá±á¬ ááá¯á·ááá¯áẠáááºáá°áá«ááŸááá±á¬ áá±á¬ááºáá»á¬ážááŒáá·áº) á
á¯á
ááºážááŸá¯ á¡ááŸá¬ážá¡ááœááºážáá
áºáᯠááŸááááá·áºáááºá ááá¯á·áá±á¬áº áááºááẠá¡áááºážá¡ááŒá
áºá
ááá¯ááºááœáẠá¡áááºážáá
áºáá¯ááᯠá¡áá¯á¶ážááŒá¯áá«áá áááºáá®ážáááºá
áºááœáẠáááºážá áá±á¬ááºá¡á¬ážáá¯á¶ážááᯠááŒááºáá¬ážá
áœá¬ áááºááŸááºááá¯ááºáááºá
ááá¯á·áá±á¬áº áááºá¡áá¯á¶ážááŒá¯áá»áŸáẠinclude
ááá¯á·áá±á¬áẠá¡áááºážááᯠááŸá
áºáááºáááᯠá¡ááŒáááºáá»á¬ážá
áœá¬ ááá·áºááá¯ááºáááºá á¡ááŸááºá á¡á²áá« include
class áá
áºáá¯ááᯠdirectory ááœááºááá·áºáá¬ážááŒááºážááŸááááŸá á
á
áºáá±ážáá±ážááá·áº á¡á
áœááºážáááºáá±á¬áá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯ááŒá
áºáááºá class ááẠdirectory ááœááºáááŸááá«áá áááºážááá¯áá±á«ááºážááá·áºáááºááŒá
áºááŒá®ážáááºážáááºááŸáááŒá®ážáá¬ážááŒá
áºáá«ááááºážáááºáá¬ááŸááá¯ááºáá«á áá«áá±ááá·áº áá¯á¶ážáá²á·ááá
á¹á
ááŸá¬ include
á¡áááºážááŒá±ááŒá¬áá±á
ááºá¡ááœááºáž á¡áááºážáá»áááºáááºááŸááºáá»ááºáá»á¬ážááᯠáááºááááºááŸááºááá¯ááºáá« - ááá¯á¡ááºáá±á¬áá±á¬ááºáá»á¬ážááᯠááŒááºááá±áá¬á¡áááºážá¡ááŒá
Ạ- Hiera ááá¯á·ááá¯áẠENC ááœáẠáááºááŸááºááá«áááºá áá±á¬ááºáá±á¬ááºážáá«ážááŸá¬ áá°ááá¯á·á¡ááŒá±á¬ááºáž ááŒá±á¬ááŒáá«áááºá
áááºááŸááºáá«áááºá
áááẠblock ááœááºááŒá±á¬áá²á·ááá·áºá¡ááá¯ááºážá áá°áá®áá±á¬ class ááẠnode áá áºáá¯ááœáẠáá áºááŒáááºáááºááá¯ááááŒá áºááá¯ááºáá«á ááá¯á·áá±á¬áºáááºážá á¡áá»áá¯á·ááá á¹á áá»á¬ážááœáẠáááºááẠáá°áá®áá±á¬ node áá±á«áºááœáẠááá°áá®áá±á¬ áá±á¬ááºáá»á¬ážáá«ááá·áº áá¯ááºáá áºáá¯áááºážááᯠá¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáááºá áá áºáááºážááá¯ááá±á¬áº áááºážáááá¯ááºááá¯ááºá¡áááºážá¡ááŒá Ạá¡áá»áá¯ážá¡á á¬ážáá áºáᯠááá¯á¡ááºáá«áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá PHP module ááá¯ááá·áºááœááºážáááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡á±á¬ááºáá«ááá¯á·ááᯠAvito ááœááºáá¯ááºáá±á¬ááºáááº-
- ဠmodule ááŸáá·áºá¡áá° package ááᯠinstall áá¯ááºáá«á
- ဠmodule á¡ááœáẠconfiguration file áá áºáá¯áááºáá®ážááŒáá«á áá¯á·á
- áá»áœááºá¯ááºááá¯á·ááẠphp-fpm á¡ááœáẠconfig ááá¯á· symlink áá áºáá¯áááºáá®ážáááºá
- áá»áœááºá¯ááºááá¯á·ááẠphp cli á¡ááœáẠconfig á¡ááœáẠsymlink áá áºáá¯ááᯠáááºáá®ážáá«áááºá
áá®ááá¯á¡ááŒá±á¡áá±áá»áá¯ážááŸá¬ áá®ááá¯ááºážááá¯áá»áá¯ážáá±á«á·á $title
á¡áááºážá¡ááŒá
áºá¡áááºááẠáááºážááá¯ááŒá±ááŒá¬ááá·áºá¡áá« áááºááá·áºáá±áá¬ááá¯á·ááœá¬ážááẠá á¡áááºážááá
á¹á
áá²á·ááá¯á·áááºá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºááᯠáŠážá
áœá¬áá±á¬áºááŒááááºááŒá
áºááŒá®ážá ááá¯á·áá±á¬áẠáááºážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
PHP á¡ááœáẠmodule áá áºáá¯áá«áá±á¬ ááá¯ážááŸááºážáá±á¬ á¥ááá¬-
define php74::module (
$php_module_name = $title,
$php_package_name = "php7.4-${title}",
$version = 'installed',
$priority = '20',
$data = "extension=${title}.son",
$php_module_path = '/etc/php/7.4/mods-available',
) {
package { $php_package_name:
ensure => $version,
install_options => ['-o', 'DPkg::NoTriggers=true'], # ÑÑОггеÑÑ ÐŽÐµÐ±ÐžÐ°ÐœÐŸÐ²ÑкОÑ
php-пакеÑПв ÑаЌО ÑПзЎаÑÑ ÑОЌлОМкО О пеÑезапÑÑкаÑÑ ÑеÑÐ²ÐžÑ php-fpm - МаЌ ÑÑП Ме ÐœÑжМП, Ñак как О ÑОЌлОМкаЌО, О ÑеÑвОÑПЌ ÐŒÑ ÑпÑавлÑеЌ Ñ Ð¿ÐŸÐŒÐŸÑÑÑ Puppet
}
-> file { "${php_module_path}/${php_module_name}.ini":
ensure => $ensure,
content => $data,
}
file { "/etc/php/7.4/cli/conf.d/${priority}-${php_module_name}.ini":
ensure => link,
target => "${php_module_path}/${php_module_name}.ini",
}
file { "/etc/php/7.4/fpm/conf.d/${priority}-${php_module_name}.ini":
ensure => link,
target => "${php_module_path}/${php_module_name}.ini",
}
}
node server3.testdomain {
php74::module { 'sqlite3': }
php74::module { 'amqp': php_package_name => 'php-amqp' }
php74::module { 'msgpack': priority => '10' }
}
Duplicate declaration error ááá¯áááºážááẠá¡ááœááºáá¯á¶ážáááºážáááºážááŸá¬ Define ááœááºááŒá áºáááºá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá áºáá¯ááœáẠááááºážáá±á¡áááºáá áºáá¯áá«áá±á¬ áááºážááŒá áºáá áºáá¯ááŸáááŒá®ážá á¡áá»áá¯á·áá±á¬ node áá»á¬ážááœáẠá€á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºááŸá áºáᯠááá¯á·ááá¯áẠááá¯á·áááºááá¯áá±á¬ á¥ááá¬áá»á¬ážááŸááá±áá«á áááºážááẠááŒá áºáá±á«áºáá¬áááºá
á€á¡áá¬á០ááá·áºááá¯ááºááẠáá¬ááœááºááẠááœááºáá°áááº- á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºá¡ááœááºážááŸá á¡áááºážá¡ááŒá
áºáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠá¡áááºáá
áºáá¯ááŸáááá«áááºá $title
. á¡ááŒá¬ážááœá±ážáá»ááºá
áá¬áá
áºáá¯ááẠá¡áááºážá¡ááŒá
áºáá»á¬ážá á¡á
áœááºážáááºááŒááºáá±á¬ áá±á«ááºážá
ááºážááŸá¯ááŒá
áºáááºá á¡ááá¯ážááŸááºážáá¯á¶ážá¡ááŒá±á¡áá±ááœááºá áááºážááẠá¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºá¡á¬ážáá¯á¶ážá¡ááœáẠáá°áá®áá±á¬á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠáá®ážááŒá¬ážá¡áááºážáá
áºáá¯ááá¯á· ááœáŸá±á·áᬠá€á¡áááºážááᯠá¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºááœáẠááá·áºááœááºážááẠáá¯á¶áá±á¬ááºáá«áááºá include
ááááºá
áœááºážá
á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠáá±á«ááºážááá·áºááá·áºá¡áá«ááœáẠáá»áá¯á·áá²á·ááŸá¯áááŸáááẠá¡ááŒá¬ážáááºážáááºážáá»á¬áž ááŸááááºá ááá¯ááá¯áááºááŸá¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá defined
О ensure_resources
áá«áá±ááá·áº áá±á¬ááºá¡ááá¯ááºážááœá±ááŸá¬ ááŒá±á¬ááŒáá«á·áááºá
á¡áááºážáá»á¬ážááŸáá·áº á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážá¡ááœáẠááŸá®ááá¯ááŸá¯ááŸáá·áº á¡áááá±ážáá»ááºáá»á¬áž
á¡áááºážáá»á¬ážááŸáá·áº á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážááẠááŸá®ááá¯ááŸá¯ááŸáá·áº á¡áááá±ážáá»ááºáá»á¬ážááᯠááá¯ááºááœááºáá¬ááœáẠá¡á±á¬ááºáá«á ááºážáá»ááºážáá»á¬ážááᯠáá±á«ááºážááá·áºáááº-
- class/define áá±á«áºááœáẠááŸá®ááá¯ááŸá¯ ááẠclass/define á á¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážá¡áá±á«áº ááŸá®ááá¯ááŸá¯ áá±á«ááºážááá·áºáááºá
- á¡áááºáž/áááºááŸáẠááŸá®ááá¯ááŸá¯áá áºáá¯ááẠáá°áááºážá á¬áž/áááºááŸáẠá¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠááŸá®ááá¯á¡á¬ážááŒáá·áºáá±ážáááºá
- class/define notification ááẠclass/define á á¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠá¡áááá±ážáááºá
- class/define subscription ááẠclass/define á á¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠá á¬áááºážááœááºážáááºá
á¡ááŒá±á¡áá±ááá¯ááºáᬠáá¯ááºááŒááºáá»ááºáá»á¬ážááŸáá·áº ááœá±ážáá»ááºááŸá¯áá»á¬áž
if
áá®ááŸá¬ ááá¯ážááŸááºážáá«áááº
if ÐЫРÐÐÐÐÐÐ1 {
...
} elsif ÐЫРÐÐÐÐÐÐ2 {
...
} else {
...
}
ááá¯ááºáá»áŸááº
if inverse ááá¯ááºáá«áá expression ááẠááŸá¬ážááœááºážáá«á code ááááºááá¯á·ááŒááºážááᯠáá¯ááºáá±á¬ááºáá«áááºá
unless ÐЫРÐÐÐÐÐÐ {
...
}
á¡ááŸá¯
áá®ááŸá¬áááºáž áá¬á០ááŸá¯ááºááœá±ážáᬠáááŸááá«áá°ážá áá¯á¶ááŸááºáááºááá¯ážáá»á¬áž (á á¬áááºážáá»á¬ážá áá¶áá«ááºáá»á¬ážá á áááº)á áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááŸáá·áº áá±áá¬á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááᯠáááºááá¯ážáá»á¬ážá¡ááŒá Ạáááºáá¯á¶ážááá¯ááºáááºá
case ÐЫРÐÐÐÐÐÐ {
ÐÐÐЧÐÐÐÐ1: { ... }
ÐÐÐЧÐÐÐÐ2, ÐÐÐЧÐÐÐÐ3: { ... }
default: { ... }
}
ááœá±ážáá»ááºááŸá¯áá»á¬áž
Selector ááẠáá¬áá¬á
áá¬ážáááºáá±á¬ááºáá¯á¶ááŸáá·áº áááºáá°áááºá case
áá«áá±ááá·áº áá¯ááºáá¯á¶ážáá
áºáá¯ááᯠáá¯ááºáá±á¬ááºááá·áºá¡á
á¬ážá áááºááá¯ážáá
áºáᯠááŒááºáá±ážáááºá
$var = $othervar ? { 'val1' => 1, 'val2' => 2, default => 3 }
module ááœá±
ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááẠáá±ážáááºáá±á¬á¡áá«á áááºážááᯠáááºáá®ážáááºá áºáá áºáá¯ááœáẠá¡ááœááºááá° ááááºážáááºážááá¯ááºáááºá ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·áá±á¬áºááŒáá±áá±á ááá¯ááºáá±á¬áºááŸá¯ááœáẠá¡áááºážáá»á¬ážááŸáá·áº áá¯á¶ááŸááºáá»á¬áž áá»á¬ážáá±áá±á áááºážááẠááŒá®ážááœá¬ážáá¬áᬠááœá²áááºáá¯ááºáá±á¬ááºááẠá¡áááºáááŒá±ááŒá áºáá¬áááºá
ááá¯á·á¡ááŒááºá áá¯ááºááᯠááŒááºáááºá¡áá¯á¶ážááŒá¯ááŒááºáž ááŒá¿áá¬ááŸááá«ááẠ- áá¯ááºá¡á¬ážáá¯á¶ážááẠáááºáá®ážáááºá áºáá áºáá¯ááœáẠááŸááá±áá±á¬á¡áá«á á€áá¯ááºááᯠá¡ááŒá¬ážáá°áá»á¬ážááŸáá·áº áá»áŸáá±ááẠáááºáá²áááºá á€ááŒá¿áá¬ááŸá áºáá¯ááá¯ááŒá±ááŸááºážááẠPuppet ááœáẠmodules áá¯áá±á«áºáá±á¬á¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯ááŸááááºá
module ááœá± - áááºážááá¯á·ááẠá¡áááºážáá»á¬ážá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážááŸáá·áº áá®ážááŒá¬ážáááºážááœáŸááºáá áºáá¯ááœáẠááá·áºáá¬ážáá±á¬ á¡ááŒá¬ážáá¯ááºáá±ážáá á¹á ááºážáá»á¬ážááŒá áºáááºá áá áºáááºážááá¯ááá±á¬áº áááºáááºážá á¬áá áºáá¯ááẠáá¯ááºáá±ážáá¯áá¹áááá±áá áá®ážááŒá¬ážá¡á áááºá¡ááá¯ááºážáá áºáá¯ááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá nginx ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡ááœáẠmodule áá áºáá¯ááŸáááá¯ááºáááºá áááºážááœáẠnginx ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡ááœááºááá¯á¡ááºáá±á¬á¡áá¬áá»á¬ážáá« á ááºáááá·áºáááºá ááá¯á·ááá¯áẠPHP ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡ááœáẠmodule áá áºáá¯ááŸáááá¯ááºáááºá áááºááá¯á·ááŒá áºáááºá
Modules áá»á¬ážááᯠáá¬ážááŸááºážáá¯ááºáá¬ážááŒá®áž áá
áºáá¯ááŸáá·áºáá
áºáá¯á¡áá±á«áºááœáẠáá±á¬áºáá»á°ážáá»á¬ážá ááŸá®ááá¯ááŸá¯ááá¯áááºáž áá¶á·ááá¯ážáá±ážáá¬ážáááºá modules áá»á¬ážá open repository áá
áºáá¯ááŸáááẠ-
áá¯ááºáá±ážáá¬áá¬ááœááºá áá±á¬áºáá»á°ážáá»á¬ážááẠroot directory á modules ááœá²áááºážááœáŸááºááœááºáááºááŸááááºá áá±á¬áºáá»á°ážáá áºáá¯á á®ááœáẠá á¶áááºážááœáŸááºá¡á á®á¡á ááºáá áºáá¯ááŸáááẠ- áááºáá®ážáááºá áºáá»á¬ážá ááá¯ááºáá»á¬ážá áááºážáááááºáá»á¬ážá lib ááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážááŸááááºá
module áá áºáá¯ááŸá ááá¯ááºáááºáá±á¬ááºáá¯á¶
áá±á¬áºáá»á°ážá á¡ááŒá áºááœáẠáá±á¬áºááŒáá»ááºá¡áááºáá»á¬ážááŒáá·áº á¡á±á¬ááºáá« áááºážááœáŸááºáá»á¬áž áá«áááºááá¯ááºáááº-
manifests
- áááºážááœáẠmanifestos áá«ááŸááááºáfiles
- áááºážááœááºááá¯ááºáá»á¬ážáá«ááŸááááºátemplates
- áááºážááœáẠtemplate áá»á¬ážáá«ááŸááááºálib
- áááºážááœáẠRuby áá¯ááºáá«ááŸááááºá
áááºážááẠáááºážááœáŸááºáá»á¬ážááŸáá·áº ááá¯ááºáá»á¬ážá á¬áááºáž á¡ááŒáá·áºá¡á á¯á¶ááá¯ááºáá±á¬áºáááºáž ááá¯áá±á¬ááºážáá«ážá¡ááœáẠáá¯á¶áá±á¬ááºáá«áááºá
áá±á¬áºáá»á°ážááŸá á¡áááºážá¡ááŒá áºá¡áááºáá»á¬ážááŸáá·áº ááá¯ááºáá»á¬ážáá¡áááºáá»á¬áž
áá±á¬áºáá»á°ážáá áºáá¯ááŸáá¡áááºážá¡ááŒá áºáá»á¬áž (á¡áááºážáá»á¬ážá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬áž) ááᯠáááºááŸá áºáááºááá·áºá¡ááá¯ááºáž á¡áááºáá±ážááááá«á ááá¯á·á¡ááŒááºá á¡áááºážá¡ááŒá áºáá áºáá¯áá¡áááºááŸáá·áº Puppet ááẠááá¯á¡áááºážá¡ááŒá áºááá±á¬áºááŒáá»ááºááá¯ááŸá¬ááœá±ááá·áº ááá¯ááºá¡áááºááŒá¬ážááœáẠááá¯ááºááá¯ááºá á¬áá±ážá á¬áá°áá áºáá¯ááŸááááºá á¡áááºá áááºááẠá¡áááºáááºááŸááºááŒááºáž á ááºážáá»ááºážáá»á¬ážááᯠáá»áá¯ážáá±á¬ááºáá«á Puppet ááẠá¡áááºážá¡ááŒá áºáá±á¬áºááŒáá»ááºááᯠááá¯ážááŸááºážá áœá¬ ááŸá¬ááœá±á·áááá·áºáááºááá¯ááºáá²á á á¯á ááºážááŸá¯ error áá áºáá¯áááŸááááºááŒá áºáááºá
á ááºážáá»ááºážáá»á¬ážááẠááá¯ážááŸááºážáááº-
- module áá
áºáá¯ááŸáá¡áááºážá¡ááŒá
áºáá»á¬ážá¡á¬ážáá¯á¶ážááẠmodule namespace ááœááºááŸáááá«áááºá Module ááá¯á· áá±á«áºáá«áááºá
foo
ááá¯á·áá±á¬áẠáááºážááŸáá¡áááºážá¡ááŒá áºá¡á¬ážáá¯á¶ážááᯠá¡áááºáá±ážááá«áááºáfoo::<anything>
, ááá¯á·ááá¯ááºfoo
. - áá±á¬áºáá»á°ážá¡áááºááŒáá·áº áááºážááŒá
áºááẠááá¯ááºáá²ááœáẠááŸáááá«áááºá
init.pp
. - á¡ááŒá¬ážá¡áááºážá¡ááŒá
áºáá»á¬ážá¡ááœááºá ááá¯ááºá¡áááºáá±ážááŒááºážá¡á
á®á¡á
ááºááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá
áºáááº-
- áá±á¬áºáá»á°ážá¡áááºáá«áá±á¬ ááŸá±á·áááºááᯠá áœáá·áºáá áºáá¬ážáááºá
- á¡áááºá double colon á¡á¬ážáá¯á¶ážááᯠáá»á¥áºážá á±á¬ááºážáá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážáá¬ážáááºá
- ááá¯ážáá»á²á·ááŸá¯ááᯠááá·áºááœááºážáá¬ážáááºá
.pp
á¥ááá¬áá
áºáá¯áá²á· ááá¯ááºááŒáááºá module áá
áºáá¯áá±ážáá±áááºááá¯áá«á
áá¯á· nginx
. áááºážááœáẠá¡á±á¬ááºáá«á¡áááºážá¡ááŒá
áºáá»á¬áž áá«áááºáááº-
- клаÑÑ
nginx
manifest ááœááºáá±á¬áºááŒáá¬ážáááºáinit.pp
; - клаÑÑ
nginx::service
manifest ááœááºáá±á¬áºááŒáá¬ážáááºáservice.pp
; - áááºááŸááºáááºá
nginx::server
manifest ááœááºáá±á¬áºááŒáá¬ážáááºáserver.pp
; - áááºááŸááºáááºá
nginx::server::location
manifest ááœááºáá±á¬áºááŒáá¬ážáááºáserver/location.pp
.
áá¯á¶á á¶áá»á¬áž
ááá°áá¬áá¯á¶á
á¶áá»á¬ážááᯠáááºááá¯ááºááá¯ááºáááá«áááºá áááºážááá¯á·ááᯠá€áá±áá¬ááœáẠá¡áá±ážá
áááºáá±á¬áºááŒáááºááá¯ááºáá«á áá«áá±ááá·áº ááá
á¹á
ááŸáááá¯á· áá¬ážáá²á·áááºá
áááºážáááááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºáž- áá¯á¶á
á¶ááœááºáá
áºáá¯á á¡áááá¹áá¬ááºááᯠáá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯ááŒáá·áº áá»á²á·ááœááºááá¯ááºáááºá template
áá¯á¶á
á¶ááœááºááá¯á· áááºážááŒá±á¬ááºážááŒááºááœá¬ážáá±á¬á á¡áá»áá¯ážá¡á
á¬ážá¡áááºážá¡ááŒá
áºáá»á¬ážá¡ááœáẠááá¯áẠparameter áá²á·ááœá²áá¯á¶ážáá«áááºá content
. á¥ááá¬á á€áá²á·ááá¯á·áá±á¬á
file { '/tmp/example': content => template('modulename/templatename.erb')
áááºážááŒá±á¬ááºážááá¯ááŒáá·áºáá«á <modulename>/<filename>
ááá¯ááºááᯠááá¯ááá¯áááºá <rootdir>/modules/<modulename>/templates/<filename>
.
áá«á·á¡ááŒáẠfunction áá
áºáá¯ááŸáááẠinline_template
â áááºážááẠááá¯ááºá¡áááºááá¯ááºáá² ááá·áºááœááºážááŸá¯á¡ááŒá
Ạááá°áá¬áá¯á¶á
á¶á
á¬áá¬ážááᯠáááºáá¶áááŸááááºááŒá
áºáááºá
áááºážáááááºáá»á¬ážá¡ááœááºážá áááºááẠáááºááŸááááºáááºááŸá áá¯ááºáá±ážááŒá±á¬ááºážáá²ááŸá¯á¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
áá¯ááºáá±ážááẠERB ááŸáá·áº EPP áá±á¬áºáááºááŒáá·áº ááá°áá¬áá»á¬ážááᯠáá¶á·ááá¯ážáááº-
ERB á¡ááŒá±á¬ááºáž á¡ááá¯áá»á¯ááº
ááááºážáá»á¯ááºááœá²á·á ááºážáá¯á¶áá»á¬áž-
<%= ÐЫРÐÐÐÐÐÐ %>
- á áá¬ážáááºááááºááá¯ážááá¯ááá·áºáá«á<% ÐЫРÐÐÐÐÐÐ %>
- á áá¬ážáááºáá áºáá¯ááááºááá¯ážááᯠááœááºáá»ááºáá« (ááá·áºááœááºážááŒááºážáááŒá¯áá²)á Conditional statements (if) ááŸáá·áº loops (áá áºáá¯á á®) ááẠá€áá±áá¬ááœáẠááœá¬ážáá±á·ááŸááá«áááºá<%# ÐÐÐÐÐÐТÐÐ ÐÐ %>
ERB ááœáẠáá±á¬áºááŒáá»ááºáá»á¬ážááᯠRuby ááŒáá·áº áá±ážáá¬ážáá¬ážáá«ááẠ(ERB ááẠááááºáá±á¬á· Embedded Ruby) ááŒá áºáááºá
áááºáá®ážáááºá
áºá០ááááºážááŸááºáá»á¬ážááᯠáááºáá±á¬ááºáááºá áááºááá·áºááẠááá¯á¡ááºáááºá @
ááŒá±á¬ááºážáá²ááá¯ááºáá±á¬á¡áááºááá¯á·á ááááºážáá»á¯ááºááŸá¯áááºáá±á¬ááºááŸá¯á¡ááŒá®ážááœáẠáá±á«áºáá¬ááá·áº áá»ááºážááŒá±á¬ááºážááᯠáááºááŸá¬ážáááºá á¡ááááºá¡ááŸááºá¡áá¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáááºá -%>
.
ááá°áá¬áá¯á¶á á¶ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá
ZooKeeper ááááºážáá»á¯ááºááẠmodule áá áºáá¯áá±ážáá±áááºááá¯áá«á áá¯á·á config áááºáá®ážááẠáá¬áááºááŸááá±á¬ á¡áááºážááẠá€áá²á·ááá¯á· ááŒá áºáááº-
class zookeeper::configure (
Array[String] $nodes,
Integer $port_client,
Integer $port_quorum,
Integer $port_leader,
Hash[String, Any] $properties,
String $datadir,
) {
file { '/etc/zookeeper/conf/zoo.cfg':
ensure => present,
content => template('zookeeper/zoo.cfg.erb'),
}
}
ááŸáá·áºáááºááá¯ááºáá¬áá¯á¶á
á¶áá¯á¶á
ᶠzoo.cfg.erb
- áá«ááá¯-
<% if @nodes.length > 0 -%>
<% @nodes.each do |node, id| -%>
server.<%= id %>=<%= node %>:<%= @port_leader %>:<%= @port_quorum %>;<%= @port_client %>
<% end -%>
<% end -%>
dataDir=<%= @datadir %>
<% @properties.each do |k, v| -%>
<%= k %>=<%= v %>
<% end -%>
á¡áá»ááºá¡áááºáá»á¬ážááŸáá·áº Built-in Variables
áááŒá¬ááááá¯áááᯠconfiguration á áá®ážááŒá¬ážá¡á áááºá¡ááá¯ááºážááẠnode áá±á«áºááœáẠáááºááŸáááŒá áºáá»ááºáá±ááá·áºá¡áá±á«áºáá°áááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá Debian áá¯ááºáá±ááŸá¯á¡áá±á«áº áá°áááºááŒá®áž áááºááẠá¡áá¯ááºá áá¬ážááŸááºážáá áºáᯠááá¯á·ááá¯áẠá¡ááŒá¬ážáá¬ážááŸááºážáá áºáá¯ááᯠááá·áºááœááºážááẠááá¯á¡ááºáááºá node áá»á¬áž ááŒá±á¬ááºážáá²áá«á á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºááá¯ááºááá¯áẠá á±á¬áá·áºááŒáá·áºááá¯ááºááŒá®ážá áááºáá®ážáááºá áºáá»á¬ážááᯠááŒááºáááºáá±ážáá¬ážááá¯ááºáááºá áá«áá±ááá·áº áá«á áá±ážáááºáá²á· áá»ááºážáááºááŸá¯ ááá¯ááºáá«áá°ážá á¡ááá¯á¡áá»á±á¬ááºá áá áºá ááá¯áá±á¬ááºážáá«áááºá
node áá»á¬ážá¡ááŒá±á¬ááºáž á¡áá»ááºá¡áááºááá°áááºá Puppet ááœáẠá¡áá»ááºá¡áááºáá»á¬ážáá¯áá±á«áºáá±á¬ ááá¹ááá¬ážáá áºáá¯ááŸááááºá ááŒá áºáááºááŸááºáá»á¬áž - á€áááºááŸá¬ ááá¹áá¬áá¯á¶ážááá¯ááºáᬠnamespace ááŸá áá¬áááºááááºážááŸááºáá»á¬ážáá¯á¶á á¶ááŒáá·áº manifests ááœááºáááŸáááá¯ááºááá·áº node ááŸáá·áºáááºáááºáá±á¬á¡áá»ááºá¡áááºáá»á¬ážááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºáá¶áá°á¡áááºá áááºáááºááŸá¯á áá áºáá¬ážááŸááºážá áááá¯áááºáá¬áááá¯áá¬á á¡áá¯á¶ážááŒá¯áá°áá»á¬ážá á¬áááºážá ááœááºáááºáá»áááºáááºááŸá¯áá»á¬ážá á¬áááºážááŸáá·áº áááºážááá¯á·á ááááºá á¬áá»á¬ážá ááŸáá·áº áá»á¬ážá áœá¬áá±á¬ á¡ááŒá¬ážá¡áá¬áá»á¬ážá á¡áá»ááºá¡áááºáá»á¬ážááᯠáá¯á¶ááŸááºááááºážááŸááºáá»á¬ážá¡ááŒá Ạmanifests ááŸáá·áº template áá»á¬ážááœáẠáááŸáááá¯ááºáá«áááºá
á¡áá»ááºá¡áááºáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºáž á¥ááá¬
notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ÑеÑÑÑÑ ÑОпа notify пÑПÑÑП вÑÐ²ÐŸÐŽÐžÑ ÑППбÑеМОе в лПг
ááá¬ážááẠááŒá±á¬ááá»áŸáẠá¡áá»ááºá¡áááºáá
áºáá¯ááœáẠá¡ááẠ(string) ááŸáá·áº áááºááá¯ážáá
áºáᯠááŸáááẠ(á¡áá»áá¯ážáá»áá¯ážáá±á¬ á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážááᯠáááá¯ááºáááº- stringsá arraysá á¡áááá¬ááº)á á
á¬ážáááº
áááºáááºáá±á ááºá¡ááœááºážá áá¯ááºáá±ážá¡á±ážáá»áá·áºááẠáááŸáááá¯ááºáá±á¬ á¡áá»ááºá¡áááºá á¯áá±á¬ááºážáá°áá»á¬ážá¡á¬ážáá¯á¶ážááᯠpappetserver á០node ááá¯á· áŠážá áœá¬áá°ážáá°ááŒá®ážá ááá¯á·áá±á¬áẠáááºážááá¯á·ááá¯ááœáá·áºááŒá®áž á á¯áá±á¬ááºážáá¬ážáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáá¬áá¬ááá¯á· áá±ážááá¯á·áááºá áááºážáá±á¬ááºá áá¬áá¬ááẠáááºááá±á¬ááºááᯠá áááºááŒá¯á á¯áááºá
á¡ááŒá áºááŸááºáá»á¬ážááᯠexecutable ááá¯ááºáá»á¬ážáá¯á¶á á¶ááŒáá·áº
ááá¯áá²á·ááá¯á·áá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáááºážááœáŸááºááŸá áá±á¬áºáá»á°ážáá»á¬ážááœáẠááá·áºááœááºážáá¬ážáááºá facts.d
. áá¯ááºáá«áááº, ááá¯ááºáá»á¬ážááᯠexecutable ááŒá
áºááá«áááºá run áá±á¬á¡áá«á áááºážááá¯á·ááẠYAML ááá¯á·ááá¯áẠkey=value áá±á¬áºáááºááŒáá·áº á
á¶ááœááºááŸáááá·áº á¡áá»ááºá¡áááºááᯠáá¯ááºáá±ážááá«áááºá
ááá·áº module ááá¯ááŒáá·áºáá»ááºáá¬ážááá·áº poppet áá¬áá¬á០ááááºážáá»á¯ááºáá¬ážáá±á¬ node áá»á¬ážá¡á¬ážáá¯á¶ážááŸáá·áº áááºááá¯ááºááŒá±á¬ááºáž ááá±á·áá«ááŸáá·áºá ááá¯á·ááŒá±á¬áá·áºá script ááœááºá á áá áºááœáẠááá·áºá¡ááŸááºááááºá¡áá¯ááºáá¯ááºááẠááá¯á¡ááºáá±á¬ áááá¯ááááºáá»á¬ážááŸáá·áº ááá¯ááºáá»á¬áž á¡á¬ážáá¯á¶ážááᯠá á áºáá±ážááẠááá¯á áá¯ááºáá«á
#!/bin/sh
echo "testfact=success"
#!/bin/sh
echo '{"testyamlfact":"success"}'
ááá¹áááŒá¬ážáá±á²
ááá¯áá²á·ááá¯á·áá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáááºážááœáŸááºááŸá áá±á¬áºáá»á°ážáá»á¬ážááœáẠááá·áºááœááºážáá¬ážáááºá lib/facter
.
# вÑÑ ÐœÐ°ÑОМаеÑÑÑ Ñ Ð²ÑзПва ÑÑМкÑОО Facter.add Ñ ÐžÐŒÐµÐœÐµÐŒ ÑакÑа О блПкПЌ кПЎа
Facter.add('ladvd') do
# в блПкаÑ
confine ПпОÑÑваÑÑÑÑ ÑÑÐ»ÐŸÐ²ÐžÑ Ð¿ÑОЌеМОЌПÑÑО ÑакÑа â кПЎ вМÑÑÑО блПка ЎПлжеМ веÑÐœÑÑÑ true, ОМаÑе зМаÑеМОе ÑакÑа Ме вÑÑОÑлÑеÑÑÑ Ðž Ме вПзвÑаÑаеÑÑÑ
confine do
Facter::Core::Execution.which('ladvdc') # пÑПвеÑОЌ, ÑÑП в PATH еÑÑÑ ÑакПй ОÑпПлМÑеЌÑй Ñайл
end
confine do
File.socket?('/var/run/ladvd.sock') # пÑПвеÑОЌ, ÑÑП еÑÑÑ ÑакПй UNIX-domain socket
end
# в блПке setcode пÑПОÑÑ
ÐŸÐŽÐžÑ ÑПбÑÑвеММП вÑÑОÑлеМОе зМаÑÐµÐœÐžÑ ÑакÑа
setcode do
hash = {}
if (out = Facter::Core::Execution.execute('ladvdc -b'))
out.split.each do |l|
line = l.split('=')
next if line.length != 2
name, value = line
hash[name.strip.downcase.tr(' ', '_')] = value.strip.chomp(''').reverse.chomp(''').reverse
end
end
hash # зМаÑеМОе пПÑлеЎМегП вÑÑÐ°Ð¶ÐµÐœÐžÑ Ð² блПке setcode ÑвлÑеÑÑÑ Ð·ÐœÐ°ÑеМОеЌ ÑакÑа
end
end
á¡áá»ááºá¡áááºááœá±ááᯠá á¬ááá¯á·áá«á
ááá¯áá²á·ááá¯á·áá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáááºážááœáŸááºááŸá node áá»á¬ážáá±á«áºááœáẠáááºáá¬ážáááºá /etc/facter/facts.d
áá¯ááºáá±ážáá¯ááºáá±á¬ááºáž ááá¯á·ááá¯áẠ/etc/puppetlabs/facts.d
áá¯ááºáá±ážá¡áá
áºáá
examplefact=examplevalue
---
examplefact2: examplevalue2
anotherfact: anothervalue
á¡ááŒá áºááŸááºáá»á¬ážáá®ááá¯á·
á¡ááŒá áºááŸááºááá¯áá»ááºážáááºááẠáááºážáááºážááŸá áºáá¯ááŸááááºá
- á¡áááá¬ááºááŸáááá·áº
$facts
:$facts['fqdn']
; - ááááºážááŸááºá¡áááºá¡ááŒá
Ạá¡ááŸááºá¡áááºááᯠá¡áá¯á¶ážááŒá¯ááŒááºáž-
$fqdn
.
á¡áááá¬ááºáá¯á¶ážáᬠá¡áá±á¬ááºážáá¯á¶ážáá«á $facts
áá«ááŸááá¯áẠááá¯áá±á¬ááºážáá¬á ááá¹áá¬áá¯á¶ážááá¯ááºáᬠnamespace ááá¯ááœáŸááºááŒáá« ($::facts
).
Built-in Variables áá»á¬áž
á¡ááŒá
áºááŸááºááœá±á¡ááŒááºá
- áá¯á¶ááŒááºááá±á¬á¡áá»ááºáá»á¬áž â áá±á¬ááºáááºá áááºááŸááºá០áá°áá¬ážáá±á¬ ááááºážááŸááºáá»á¬áž (áááºááŸááºááᯠpoppet áá¬áá¬ááœáẠá¡áá»á¬ážá¡á¬ážááŒáá·áº áá¯ááºáá±ážáá±á¬ááŒá±á¬áá·áºá á¡á±ážáá»áá·áºááẠáááºážá áááºááŸááºááᯠáá¯ááºáá°áá¯á¶áá»áŸáá ááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ááŒá±á¬áá·áº ááááºážááŸááºáá»á¬ážááẠâáá¯á¶ááŒááºáááºâ ááŒá áºáááº): áááºááŸááºá á¡áááºá á¡áááºá host ááŸáá·áº domainá áááºááŸááºá០extension áá»á¬ážá
- server á¡áá»ááºá¡ááẠâáá¬áá¬âáá¬ážááŸááºážá á¡áááºá áá¬áᬠIP ááááºá á¬á áááºáááºážáá»ááºááŸáá·áº áááºáááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááŸáá·áº áááºá ááºáá±á¬ ááááºážááŸááºáá»á¬ážá
- á¡á±ážáá»áá·áºá¡áá»ááºá¡ááẠâ áá¯ááºáá±áž-á¡á±ážáá»áá·áºá០ááá¯ááºááá¯ááºááá·áºááœááºážááá·áº ááááºážááŸááºáá»á¬ážááᯠá¡áá»ááºá¡á¬ážááŒáá·áºááá¯ááºáá² â áááºááŸááºá¡áááºá á¡á±ážáá»áá·áºáá¬ážááŸááºážá áá¯ááºáá±ážáá¬ážááŸááºážá
- áá¬á áá¬ááááºážááŸááºáá»á¬áž - Pappetmaster variables (sic!)á á¡áá²ááŸá¬ á¡áá°áá°áá«áá²á server á¡áá»ááºá¡áááºá áá±á«ááºážá ááºážááŸá¯ááá¯ááºáᬠááá·áºáááºáá±á¬ááºáááºááá¯ážáá»á¬ážááᯠáááŸáááá¯ááºáááºá
- compiler ááááºážááŸááºáá»á¬áž â áááºáááºáá áºáá¯á á®ááœáẠááá°áá®áá±á¬ compiler variable áá»á¬áž- áááºááŸá module áá¡áááºááŸáá·áº áááºááŸá object ááá¯áááºáá±á¬ááºáá¬ážááá·áº module áá¡áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºáááá¯ááºááá¯ááºá¡áááºážáá»á¬ážááᯠá¡ááŒá¬áž module áá»á¬ážá០ááá¯ááºááá¯ááºá¡áá¯á¶ážáááŒá¯ááŒá±á¬ááºáž á á áºáá±ážááẠáááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
áááºáá±á¬ááºáž 1- á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºááá¯á·áá¯ááºáá±á¬ááºááŒá®áž á¡ááŸá¬ážááŸá¬ááááºáááºážá
áá±á¬ááºážáá«ážááœáẠáá¯ááºáá±ážáá¯ááºáááá°áá¬áá»á¬ážá áœá¬áá«ááŸááá±á¬áºáááºáž á€áá¯ááºááᯠáááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠáá»áœááºá¯ááºááá¯á·á¡á¬áž áá¯á¶ážáá¯á¶ážááŒá±á¬ááŒááŒááºážáááŸááá«á áá±á¬ááºážááŒá®á áá«ááá¯ááºááá¯ááºááŒááºáá±áááºá
á¡á±ážáá»áá·áºáá áºáŠážááẠáá¯ááºáá±ážááá¯áááºáááºááẠáá¯á¶áá±á¬ááºáá±á¬áºáááºáž ááá á¹á á¡áá»á¬ážá á¯á¡ááœáẠáááºááẠáá¬áá¬áá áºáá¯áááºáž ááá¯á¡ááºáááºááŒá áºáááºá
ááá¯ááºá á¬ážááŸááº
á¡áááºážáá¯á¶áž áá¬ážááŸááºáž XNUMX á០á
á áá¯ááºáá±áž-á¡á±ážáá»áá·áº áááºáá±á·ááºá»áá»á¬áž
á¡ááá¯ážááŸááºážáá¯á¶ážá¡ááŒá±á¡áá±ááœááºá áá¯ááºáá±ážááœá²á·á
ááºážáá¯á¶áá¯á¶á
á¶ááá¯á¡áá¯á¶ážááŒá¯áááºá áá¬áá¬áá²á·áá¯ááºááœáẠá¡á±ážáá»áá·áºááá¯ááœáá·áºááẠáá¯á¶áá±á¬ááºáááº- áá¯ááºáá±ážáá¯ááºááᯠnode ááá¯á·áá°ážáá°ááŒá®ážá á
áááºáááºá puppet apply <пÑÑÑ Ðº ЌаМОÑеÑÑÑ>
:
atikhonov@atikhonov ~/puppet-test $ cat helloworld.pp
node default {
notify { 'Hello world!': }
}
atikhonov@atikhonov ~/puppet-test $ puppet apply helloworld.pp
Notice: Compiled catalog for atikhonov.localdomain in environment production in 0.01 seconds
Notice: Hello world!
Notice: /Stage[main]/Main/Node[default]/Notify[Hello world!]/message: defined 'message' as 'Hello world!'
Notice: Applied catalog in 0.01 seconds
áá¬áá¬ááá¯áááºáá±á¬ááºááŒá®áž daemon áá¯ááºááœáẠnode áá»á¬ážáá±á«áºááœáẠá¡á±ážáá»áá·áºáá»á¬ážááá¯ááœáá·áºááŒááºážááẠááá¯áá±á¬ááºážááẠ- ááá¯á·áá±á¬áẠáá¬áá®áááºááá¯ááºáž áá¬áá¬ááŸáá±á«ááºážáá¯ááºáá¯ááºáá¬ážáá±á¬ configuration ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
á¡áá¯ááºáááœááºážá¡á¬ážáá±ážááŸá¯áá¯á¶á
á¶ááᯠáá¯áááá¯ááºááẠ- áááºá
áááºáááºá
á¬ážáá±á¬ node ááá¯á·ááœá¬ážá á
áááºáá«á sudo puppet agent -t
. áá±á¬á· -t
(--test
) á¡ááŸááºááááºááœáẠáá
áºáŠážáá»ááºážááœáá·áºááá¯ááºááá·áº ááœá±ážáá»ááºá
áá¬áá»á¬ážá
áœá¬ áá«áááºáááºá á€ááœá±ážáá»ááºááŸá¯áá»á¬ážááœáẠá¡á±á¬ááºáá«ááá¯á· áá«áááºáááº-
- daemon áá¯ááºááœáẠááááºáááºáá«ááŸáá·áº (áá¯á¶ááŸááºá¡á¬ážááŒáá·áº á¡á±ážáá»áá·áºááẠdaemon áá¯ááºááœáẠá áááºáááº)á
- áááºááá±á¬ááºááá¯á¡áá¯á¶ážááŒá¯ááŒá®ážáá±á¬áẠááááºááœá¬ážááẠ(áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá á¡á±ážáá»áá·áºááẠáááºáááºá¡áá¯ááºáá¯ááºááŒá®áž áá¬áá®áááºááá¯ááºáž áá áºááŒáááºááœá²á·á ááºážááŸá¯á áá áºááᯠá¡áá¯á¶ážááŒá¯áá«áááº)á
- á¡áá±ážá áááºá¡áá¯ááºááŸááºáááºážáá±ážáá«á
- ááá¯ááºáá»á¬ážááœááºááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááá¯ááŒááá«á
á¡á±ážáá»áá·áºááœáẠááŒá±á¬ááºážáá²ááŒááºážáááŸááá² áááºáááºááŸá¯áá¯ááºáá
áºáᯠááŸáááẠ- áááºááŸááºáááºáá±á¬ááœá²á·á
ááºážáá¯á¶áá¯á¶á
á¶ááᯠáá±ážáá¬ážáá¬ážááŒá±á¬ááºáž ááá±áá»á¬áá«á áááºáááºáá±á
ááºá¡ááœááºáž á¡á±ážáá»áá·áºá á¡ááá¡áá»ááŒá±á¬ááºážáá²áááºááᯠá
á
áºáá±ážááá¯ááá·áºá¡áá« áááºážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá á€áá¯ááºááᯠááá·áºáááºáá»ááºááŒáá·áº ááœáá·áºáá¬ážáááºá --noop
command line ááœááº- sudo puppet agent -t --noop
.
ááá¯á·á¡ááŒááºá áááºááẠá¡áá¯ááºá á¡ááŸá¬ážááŸá¬ááŒááºááŒááºáž ááŸááºáááºážááᯠááœáá·áºááá¯ááºááẠ- áááºážááœááºá áá¯ááºáá±ážááẠáááºážáá¯ááºáá±á¬ááºááá·áº áá¯ááºáá±á¬ááºááŸá¯áá»á¬áž á¡á¬ážáá¯á¶ážá¡ááŒá±á¬ááºáž áá±ážáá¬ážáááº- áááºážááẠáááºááŸá áá¯ááºáá±á¬ááºáá±ááá·áº á¡áááºážá¡ááŒá
áºáá»á¬ážá¡ááŒá±á¬ááºážá á€á¡áááºážá¡ááŒá
áºá ááá·áºáááºáá»ááºáá»á¬ážá¡ááŒá±á¬ááºážá áááºážááœáẠáááºááá·áºáááá¯ááááºáá»á¬ážá¡ááŒá±á¬ááºáž áá±ážáá¬ážáá¬ážáááºá áá¯ááºáá«ááẠáá«á parameter áá
áºáá¯áá«á --debug
.
áá¬áá¬á
pappetserver áá¡ááŒáá·áºá¡ááááºáááºááŸá¯ááŸáá·áºáááºážááá¯á€áá±á¬ááºážáá«ážááœááºááá·áºááœááºážá ááºážá á¬ážáááºááá¯ááºáá«á á¡áá±á¡ááœááºá¡áááºážáááºááŸáá·áºá¡áá¯ááºáá¯ááºáááºáá±á¬ááºáááºááœá²á·á ááºážááŸá¯áááá¯á¡ááºáá±á¬áá¬áá¬áá¡ááŒáá·áºá¡ááá¯ááºáá±á¬ááºááá¯ááºáá±á¬áá¬ážááŸááºážáá áºáá¯ááŸááááºáá¯áá¬ááŒá±á¬áá«áááºá nodes (áá áºáá¬á¡áá)á ááá¯ááŒá®ážáá±á¬ node á¡áá»á¬ážá¡ááŒá¬ážááẠáá»áááºááŸáááẠááá¯á¡ááºáááá·áºááẠ- áá°áááºážá¡á¬ážááŒáá·áºá puppetserver ááẠá¡áá¯ááºááá¬ážáá±ážáŠážááẠáááá¯á á±áá² á áœááºážáá±á¬ááºáááºááá¯áá±á¬ááºážáááºá¡ááœáẠáááºážááá¯á·á á¡áá±á¡ááœááºááᯠááá¯ážááŒáŸáá·áºáááºááŸáá·áº ááŸááºáá¬ááºááá·áºáááºáá»ááºáá»á¬ážááᯠááá¯ážááŒáŸáá·áºááẠááá±á·áá«ááŸáá·áºá ááá¯á·ááá¯ááºáá«á áá¬áá¬ááẠá¡áá»áááºá¡áá»á¬ážá á¯ááᯠá¡ááŸáá¯ááºááááºážáááºááŒá áºáááºá
áá¯ááºááŒáá·áºáá»ááºááŒááºáž - áááºááá¯á¡ááºáá«á ááŒááºááŒááºáááºáááºá ááá¯á·áá±á¬áẠ(r10k ááœááºááŒáá·áºáá«)[
áá±á¬ááºáááºááœá² 2- Coding áááºážááœáŸááºáá»ááºáá»á¬áž
- áá¯áá¹áááá±áá¡á¬ážáá¯á¶ážááᯠá¡áááºážáá»á¬ážááŸáá·áº á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážááœáẠááá·áºááœááºážáá«á
- node áá»á¬ážááá¯áá±á¬áºááŒááá·áº manifests áá»á¬ážááœááºááá¯ááºáá² á¡áááºážáá»á¬ážááŸáá·áº á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážááᯠmodule áá»á¬ážááœáẠáá¬ážáá«á
- á¡ááŒá áºááŸááºááá¯áá¯á¶ážáá«á
- á¡áááºááŸááºá¡áááºáá»á¬ážááᯠá¡ááŒá±áá¶á ifs áááŒá¯áá¯ááºáá«ááŸáá·áºá
- á¡áááºážáá»á¬ážááŸáá·áº á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážá¡ááœáẠááá·áºáááºáá±á¬ááºáá»á¬ážááᯠááœááºáááºá áœá¬ááá·áºááá¯ááºááẠ- áááºážááẠá¡áááºáž/áááºááŸááºáááá¯ááºáááºááœáẠááŸááºáá¬ážáá±á¬ ááœááºááá¯ááºáá±á¬áá¯áá¹ááááẠááá¯áá±á¬ááºážáááºá
áá¬ááŒá±á¬áá·áº áá®ááá¯áá¯ááºááá¯á· á¡ááŒá¶ááŒá¯áá¬áá² áá±á¬ááºáá±á¬ááºážáá«ážááŸá¬ ááŸááºážááŒáá«áááºá
áá±á¬ááºáá»ááº
áááá«ááºážáá²á· ááŒá®ážááá¯ááºáá¡á±á¬ááºá áá±á¬ááºáá±á¬ááºážáá«ážááœáẠHieraá ENC ááŸáá·áº PuppetDB á¡ááŒá±á¬ááºáž ááŒá±á¬ááŒáá«áááºá
á
á¬áááºážááœááºážá¡áá¯á¶ážááŒá¯áá°áá»á¬ážáᬠá
á
áºáááºážááœáẠáá«áááºááá¯ááºáá«áááºá
á¡ááŸááºáá±á¬á·á áá±á¬ááºááẠá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážá áœá¬ ááŸááá«ááẠ- áá»áœááºá¯ááºááẠá¡á±á¬ááºáá« á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážá¡ááœáẠáá±á¬ááºážáá«ážáá»á¬áž áá±ážááá¯ááºáááºá áááºáááºááẠá áááºáááºá á¬ážááá·áºá¡áá¬ááᯠáá²áá±ážáá«-
- 59,1%á¡ááá·áºááŒáá·áºáá¯ááºáá±ážáááºáá±á¬ááºáá¯á¶áá»á¬áž - á¡áá»áá¯á·áá±á¬áá±á¬ááºáááºá¡ááá·áº shit- loopsá mapping ááŸáá·áº lambda á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážá á¡áááºážá¡ááŒá áºá á¯áá±á¬ááºážáá°áá»á¬ážá áá¯ááºáá°áá¬ážáá±á¬á¡áááºážá¡ááŒá áºáá»á¬ážááŸáá·áº Puppet ááŸáááá·áº host á¡ááŒááºá¡ááŸááºáááºááœááºááŸá¯á áááºáá»á¬ážá áá¶á·ááá¯ážáá±ážáá°áá»á¬ážá abstract data á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá13
- 31,8%"áá»áœááºá¯ááºááẠáá»áœááºá¯ááºááááááºá á á®áá¶ááá·áºááœá²áá°ááŒá áºáááº" ááá¯á·ááá¯áẠAvito ááœáẠáá»áœááºá¯ááºááá¯á·ááẠááá°áá®áá±á¬áá¬ážááŸááºážáá»á¬ážá áœá¬ááŸááá±á¬ poppet áá¬áá¬áá»á¬ážááŒáá·áº ááááºááœá±ááœá²á·áá¯á¶á á¡ááŒá±áá¶á¡á¬ážááŒáá·áºá poppet áá¬áá¬ááᯠá á®áá¶ááá·áºááœá²ááŒááºážá¡ááá¯ááºážá7
- 81,8%áá¯ááºáá±ážáá¯ááºááᯠáááºááá¯áá±ážáááá²- áááááá¬áááºáá¬ááá¬á á á¬ááœááºá á¬áááºážá á ááºážáááºááŸá¯á CI/CD.18
á¡áá¯á¶ážááŒá¯áá° 22 áŠáž áá²áá±ážáá²á·áááºá áá¯á¶ážá áœá²áá° áá áŠáž ááŸá±á¬ááºáá±áá²á·áá«áááºá
source: www.habr.com