á áťááááľ á¨áá á á áľá°áłá°á áľáááľ ááᢠá áľá°áááá˝á áá° á°áááá áááľ ááááŁáľ áĽá áá áá áááł ááá á á áĽá á áá áááá.
á áá á¨á ááľáľ áááłáľ á áá á¨á áťááááľ áá áĽá¨á áŤá ááᢠáá á˝áá á¨áŚáá´ááá á°ááľ á¨á°á°á¨áá áĽá áĽáá°áá á¨áłáá á¨ááá ááĽáŚá˝ áľáĽáľáĽ ááᣠáá á áááŞáá˝ á¨á áťááááľá ááááľ á ááĽááľ áĽáá˛á¨áą áŤáľá˝áá¸ááá˘
áá°á¨áłá áá¨á
á¨á áťááááľ áŚááŹá˛áá á˛áľá°á á°áá á-á áááá ááᣠááá áĽááłá á áááá á áᣠá á°áŤáá á¨á°áá°á á°ááŁá áá áá°áááá˘
á¨áááľáľ áŚááŹá˝á áá´á áĽá á áá ááááᥠá ááŁáŞááľáŁ á á¨ááá˝ á°ááą á ááľ ááᣠá°áá áá˝ ááááá á ááááŠá áŤáááአáĽá áá°ááĽáŠáľá˘ ᨠAnsible áá á°áá°á á¨áá, á¨á፠á¨á°áᨠá¨áá áá´á áá ááá: á áľá°áłáłáŞá á ááááŠá á¨áá°áá á áá°áľ ááááŤá, á°áá ááš áĽáŤáłá¸á ááá ááá á áá°áá áŠá.
á á ááłá¨ áá¨áĽ áááááľ áá áľáŁ áŁááááľ ááááľ TLS ááľá ፠áĽá á áá ááááᥠá áááአáĽá á°áá áá á¨áŤáłá¸á á¨áá áááá˝ áĽá á°ááłá á¨ááľáá áá¨ááśá˝ á áá¸áᢠá á°áááś á áááአáá°áá áá˝ á¨ááľáá áá¨ááśá˝á áá°áŁá, ááá áá á ááá á°á¨á ááŤá CA áá áá ááťáá.
á¨ááááľáśáá˝ ááá˘áŤ
á á áťááááľ áááľ áá° á áťááááľ á áááá áááááľ á áááá˝ (á áááá˝). áá áááá˝ áá á á°á˝áá á ááááľáśáá˝ ááľáĽ á áአá¨ááŽááŤá á ááŁáĽ ááá - á áťááááľ DSL.
á áťááááľ DSL ááá ááá ááᢠáĽáą á¨áááááá á¨ááľááá ááááľ áááł á ááá°áĽ ááĽáśá˝ ááá፠ááá ááááťáᣠáááłááĄ-
- ááá á á áĽá á¨á°áá°á áááľ á ááá˘
- áĽá á á°áááá˘
- á áááááą á°áááŻáá˘
ááĽááśá˝ áĽááľ á ááľ áá°áłá°áŠ áá˝áááĄ-
- áĽááá˝ á á, ááĽáśá˝ áĽá
á áá á áááá áľ á
á°á á°á¨á°á áá á°á˝áá áŤáłáľáŤá.
áááłáᣠâááááŞáŤ áĽá áá áŤáᣠá ááá á á¨ááááŞáŤ áááá á ááľáᣠá ááá á á áááááąá áááᢠ- ááłáááŤáá˝ á á - á ááľ ááĽááľ á¨á°áá¨á¨ ááĽáą áá°áááᥠááĽáśá˝ ááłáááŤáá˝á áááŤáá˘
áááłá, á¨ááááŞáŤá ááá á¨á°áá¨á¨, á áááááąá á áŤáľ-á°á áĽáá°áá ááľááá áá˝áá.
á á°á¨ááŞáᣠá áťááááľ DSL á°ááŁáŤáľ áĽá á°ááááŽá˝áŁ áĽáá˛áá áááłá ááááŤáá˝ áĽá ááŤáŽá˝ á ááľá˘ á¨á°ááŤáŠ á¨ááľá°áŤá¨áŤ áá´áá˝á áá°ááá - EPP áĽá ERB.
á áťááááľ á áŠá˘ ááľáĽ á°á˝áá, áľááá áĽáááš áááŁáłáá˝ áĽá ááá˝ á¨á፠á¨á°áá°áą áá¸á. Ruby á áťááááľá áááľááľ ááá áľáááłá - ááľáĽáľáĽ á ááááŽ, á á˛áľ á áááľ ááĽáśá˝, á°ááŁáŤáľ áá¨ááŠ.
á áťááááľ áĽá¨áá° áĽáŤá á á áááአáá ááá áĽáŤááłááą áአááľááá ááááľ ááááŤáá˝ áá° áá፠áá°áŁá°áŁáᢠáá፠á¨á°ááŁáŽá˝, á°ááááŽá˝ áĽá áááłá ááááŤáá˝á ááľáááľ áá áŤá°á á áá á¨ááĽáśá˝ áááá áĽá áááááłá¸á áá.
á ááŁáĽ áĽá codestyle
á¨áá¨áĄáľ ááłááá˝ á á áŤááá á ááŁáĄá ááá¨áłáľ á¨áá¨áąááľ áŚáá´áá á°ááśá˝ áááá˝ áĽáá á áá˘
á¨á°ááŤáŠ á¨ááá áááŁáłáá˝ á ááŁáĽá˘ á¨ááĽá¨áľ á ááŁáĽá˘ á áááá˝á ááááá á ááŁáĽá˘
á áá¸áŁáŤáá áá áĽáá°áááľá á¨ááŤáłá ááłá áá¸áááĄ-
# ĐОППонŃĐ°Ńии пиŃŃŃŃŃ, как и ПнОгО гдо, пОŃНо ŃĐľŃŃŃки.
#
# ĐпиŃанио кОнŃигŃŃĐ°Ńии Đ˝ĐžĐ´Ń Đ˝Đ°ŃинаоŃŃŃ Ń ĐşĐťŃŃовОгО ŃНОва node,
# Са кОŃĐžŃŃĐź ŃНодŃĐľŃ ŃоНокŃĐžŃ Đ˝ĐžĐ´Ń â Ń
ĐžŃŃноКП (Ń Đ´ĐžĐźĐľĐ˝ĐžĐź иНи йоС)
# иНи ŃогŃĐťŃŃнОо вŃŃаМонио Đ´ĐťŃ Ń
ĐžŃŃноКПОв, иНи кНŃŃовОо ŃНОвО default.
#
# ĐĐžŃНо ŃŃОгО в ŃигŃŃĐ˝ŃŃ
ŃкОйкаŃ
ОпиŃŃваоŃŃŃ ŃОйŃŃвоннО кОнŃигŃŃĐ°ŃĐ¸Ń Đ˝ĐžĐ´Ń.
#
# Đдна и ŃĐ° Мо нОда ĐźĐžĐśĐľŃ ĐżĐžĐżĐ°ŃŃŃ ĐżĐžĐ´ ноŃкОНŃкО ŃоНокŃĐžŃОв. ĐŃĐž ĐżŃиОŃиŃĐľŃ
# ŃоНокŃĐžŃОв напиŃанО в ŃŃĐ°ŃŃĐľ ĐżŃĐž ŃинŃĐ°ĐşŃĐ¸Ń ĐžĐżĐ¸ŃĐ°Đ˝Đ¸Ń Đ˝ĐžĐ´.
node 'hostname', 'f.q.d.n', /regexp/ {
# ĐОнŃигŃŃĐ°ŃĐ¸Ń ĐżĐž ŃŃŃи ŃвНŃĐľŃŃŃ ĐżĐľŃĐľŃиŃНониоП ŃĐľŃŃŃŃОв и иŃ
паŃаПоŃŃОв.
#
# ĐŁ каМдОгО ŃĐľŃŃŃŃĐ° ĐľŃŃŃ Ńип и наСванио.
#
# ĐниПанио: но ĐźĐžĐśĐľŃ ĐąŃŃŃ Đ´Đ˛ŃŃ
ŃĐľŃŃŃŃОв ОднОгО Ńипа Ń ĐžĐ´Đ¸Đ˝Đ°ĐşĐžĐ˛ŃПи наСваниŃПи!
#
# ĐпиŃанио ŃĐľŃŃŃŃĐ° наŃинаоŃŃŃ Ń ĐľĐłĐž Ńипа. Тип пиŃĐľŃŃŃ Đ˛ ниМноП ŃогиŃŃŃĐľ.
# ĐŃĐž ŃаСнŃĐľ ŃĐ¸ĐżŃ ŃĐľŃŃŃŃОв напиŃанО ниМо.
#
# ĐĐžŃНо Ńипа в ŃигŃŃĐ˝ŃŃ
ŃкОйкаŃ
пиŃĐľŃŃŃ Đ˝Đ°ĐˇĐ˛Đ°Đ˝Đ¸Đľ ŃĐľŃŃŃŃĐ°, пОŃОП двОоŃĐžŃио,
# Đ´Đ°ĐťŃŃĐľ идŃŃ ĐžĐżŃиОнаНŃнОо поŃĐľŃиŃНонио паŃаПоŃŃОв ŃĐľŃŃŃŃĐ° и иŃ
СнаŃониК.
# ĐнаŃĐľĐ˝Đ¸Ń ĐżĐ°ŃаПоŃŃОв ŃкаСŃваŃŃŃŃ ŃĐľŃоС Ń.Đ˝. hash rocket (=>).
resource { 'title':
param1 => value1,
param2 => value2,
param3 => value3,
}
}
á¨ááá˘áŤ áĽá á¨ááľáá áááťáá˝ á¨á áá¸áŁáŤáá á áľááá á áŤá á áá°ááᣠááá áá á¨ááá¨á á áá˘
- áŁá áááľ áŚáł ááŁáá˝áŁ áľáŽá˝ áĽá á áá á ááááá˘
- á¨á°á ááá áá°áŞáŤáá˝ á áŚáł áááŤáŤáᤠáŽááá˝ á áŚáł á áááŤáŠáá˘
- á¨áá¨á¨áťáá á¨áᎠá¨áĽáŤááłááą áá¤áľ á áá áŽááá˝á˘ áĽáŤááłááą áá¤áľ á á°áᨠááľáá áá áá. áá¨áľ áŤá áááł áááłáŠ áŤá áá¤áśá˝ áĽá á ááľ áá¤áľ á°ááá
áˇá-á á ááľ ááľáá áá áĽá áŤá á°á¨á (áááľá.
resource { 'title': }
иresource { 'title': param => value }
). - á áááŞáŤááš áá áŤááľ ááľáśá˝ á á°ááłáłá á°á¨á ááá á ááŁá¸á.
- á¨ááĽá¨áľ áááááľ ááľáśá˝ á ááłá¸á á°á˝ááá.
á pappetserver áá á¨áááá˝ ááá
áá áá ááĽáŤáŞáŤ ᨠ"root directory" á˝áá°-ááłáĽ á áľá°ááááá. á¨áľá áááŤá áá°áá°á ááľááá ááááľ á¨á áťááááľ áá áá á¨áŤá áá፠ááá˘
á¨áľá áááŤá áĽáá° á¨á áťááááľ áľáŞáľ áĽá áĽá á áá áĽáá°áá áááŤáŤáᢠá á¨áŁá˘áá˝ á á°áᨠáááŤáá˝ ááľáĽ á¨á°á¨ááš áááá°á á¨áááá áľáĽáľáŚá˝ áá¸áᢠáĽááá áá á¨ááľ áá á ááŁáá áĽá á áá áááá, á áá áááł á á¨áŁá˘áá˝ á¨ááľ á áááŤáá˝ ááá áŤá. á áá áá á¨áľ áĽáŤááłááą ááľááá ááááľ á á ááľ á áŤáŁá˘ ááá á áá ááľáĽ áááá. áá á áŤáą ááľááá ááááľ áá áááá áá˝áá, ááá á ENC ááľáĽ, á áááĽáá áááľ ááľáĽ áľááááá¨á.
- á áśáľá°áá áľáŞáľ ("á áŽá á áťááááľ") á¨áá á¨áľ áááŤá áá á
/etc/puppet
. á á¨áŁá˘áá˝á áá áá á ááŤá áá - áááłá á¨áľáŽá á áťááááľ áá á áá áááŁá¸áá. á á¨áŁá˘áá˝ áĽá á áá á¨áá, á á áĽááá á¨ááááĄáľ á ááľáĽ áá/etc/puppet/environments
, á¨áľá áááŤá á¨á áŤáŁá˘ áááἠáááá. á áŤáŁá˘áá˝ áĽá á áá áŤááá á¨áľá áááŤá á¨áá á¨áľ áá፠ááááᢠ- á¨á áŤá°áá áľáŞáľ ("á á˛áľ á áťááááľ") ááᎠá¨á áŤáŁá˘á á á ááá á áľááłá
áá áĽá á¨áá á¨áľ áááŤá áá° á°ááá¨.
/etc/puppetlabs/code
. á áá áá á¨áľ á á¨áŁá˘áá˝ á°á¨áá˝á°áá/etc/puppetlabs/code/environments
, root directory á¨á áŤáŁá˘ áááἠáá.
á áľá áá፠ááľáĽ áááľ áá፠ááá á áá áľá˘ manifests
á áááá˝á á¨ááááš á ááľ ááá á¨á፠á áá ááááŤáá˝á á¨áŤáᢠá á°á¨ááŞá, áááľ áá፠ááá á áá áľ modules
áááá˝á á¨áŤáá. áá á áááľ áááá˝ áľáá˝ ááá°á áĽáááŤá˝áááᢠá á°á¨ááŞá ᣠá¨áľáŽá á áťááááľ áĽáá˛á áááľ áá፠ááá¨á áá˝ááᢠfiles
áá° ááľááá ááááľ á¨ááááłáŁá¸á á¨á°ááŤáŠ áááá˝á á¨áŤáᢠá á á˛áą á áťááááľ, ááá áááá˝ á áááá˝ ááľáĽ ááááŁá.
á áá¸áŁáŤá áááá˝ á
áĽáŤ á áá¸áᢠ.pp
.
áĽááľ á¨áá፠ááłááá˝
á áአáá á¨ááľááá ááááľ áĽá áááá፠ááááŤ
á ááľááá ááááľ áá 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 в наŃаНо ĐąŃĐ´ĐľŃ Đ˛ĐžŃĐżŃинŃŃĐž как СапиŃаннОо в вОŃŃПоŃиŃнОК ŃиŃŃоПо, и вŃŃ ĐżĐžĐšĐ´ŃŃ Đ˝Đľ ŃĐ°Đş, как СадŃПанО
}
}
á ááľááá ááááľ áá áŁá ááĽáśá˝ ááŤá¨á áŤá áááááśá˝
á ááľááá ááááľ áá server2.testdomain
nginx ááŽáĽ á áá áľ, á¨áá
áá°á á¨á°áááá áá
á áá á ááľáŤáľ áá.
á˝ááŠá áĽáá á°áĽá°ááĄ-
- áĽá
áá ááŤá áŤáľááááá
nginx
. - á¨áá á¨áľ áááá˝á á¨á áááአáá áłáľ á áľááá áá.
- á áááááą ááŽáĽ á áá áľá˘
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
á¨ááá ááááśá˝
á¨áá°áá á¨ááĽá¨áľ ááááśá˝ áá áááá áĽáá
áááá
ááá
áááá˝áᣠáááŤáá˝áᣠá˛ááááŽá˝áᣠáááśáťá¸áá áĽá á¨ááłá¨áť ááĽáśá˝á áŤáľá°áłáľáŤáá˘
áááŞáŤáá˝
- á¨ááĽá¨áľ áľá - áá° ááá ááááľ (á ááŤá)
- áąáŤ - áá° ááá á¨áááľá°á ááááľ (á áľá ááľáĽ áŤáá°ááá¸)
- ááá¨ááἠ- á¨ááá ááááľ;
absent
- ááá á°áápresent
- ááááá á áááľ ááá ááá á áá áľ (ááá á¨áá áá°á á ááá ááá áŤá)file
- áá°á á ááádirectory
- áááŤlink
- á˛áááá
- áááľ - á¨ááá áááśá˝ (ááá°á á áááá˝ áĽáť á°áľáá ᣠᨠáá á áĽáŽ áá áá á ááťáá) ááá ááá ááá)
- ááá - á¨áááá áááľ ááá
áłáľ áá°áááááľ ááááľ á¨áááľáľ á ááá (á¨áá
áá á áĽáŽ áá áá á ááťáá áááľ ááá ááá). áĽá
áľ áŤáá áĽáá° URI áá áááá˝ áá˝ááá˘
puppet:
(á¨ááŤá á¨á áťááááľ á áááአá¨á°áá áááá˝ áĽá á áá áááá), áĽá á¨áĽá áą ááhttp:
(á áá ááłá áá áá áĽáá°ááá ááá˝ áĽáá°áá á°áľá á á°áááá), áĽá á áľááá ááááŤá áĽááłáfile:
ááá áĽáá° ááá ááááľ áŤá ááľá (á¨ááŤá á¨á áŤáŁá˘á FS á ááľ áá áŤáá ááá áĽá á áá áááá) - ááá - á˛áááአá¨áá ááá áľ áŚáł (á¨áá áá áá á ááťáá áááľ ááá ááá)
- áŁáá¤áľ - á¨ááá áŁáá¤áľ ááá áŤáá áľ á°á áá
- áĄáľá - ááá ááá áŤáá áľ áĄáľá
- ááľ - á¨ááá áááśá˝ (áĽáá° ááĽá¨ááá)
- áĽáá°áá ááááľ - á°á°ááá áááŤá áááá á áŤáľá˝áá
- áľááľáłá - á á áťááááľ ááľáĽ áŤáá°áááš áááá˝á áá°á¨áá áŤáľá˝áá
- ááá - á á áťááááľ ááľáĽ áŤáá°áááš áááŤáá˝á áá°á¨á áŤáľá˝áá
áĽá˝á
áĽá áá˝á áááá áĽá áŤáľáááłáᢠááłáááŤáá˝á ááľá°áááľ á¨áá˝á - áááŞáŤá á¨á°ááḠáĽá áá áĽáá°áá áááá áĽáá°áá áŤá_á á áľáľ.
áááŞáŤáá˝
- á¨ááĽá¨áľ áľá - á¨áĽá á áľá (á ááŤá)
- áľá - á¨áĽá á áľá (á áľá ááľáĽ áŤáá°ááá¸)
- á á áŤá˘ - áĽá á á áľá°áłáłáŞ ááá áá
- ááá¨ááἠ- á¨ááááá á¨áĽá
á áááł;
present
,installed
- ááááá á¨á°áŤá áľáŞáľlatest
- á¨á áἠáá áľáŞáľ á°áááabsent
- á°á°ááá (apt-get remove
)purged
- á¨áá á¨áľ áááá˝ áá á°á°ááá (apt-get purge
)held
- á¨áĽá á áľáŞáľ á°áááá (apt-mark hold
)ĐťŃĐąĐ°Ń Đ´ŃŃĐłĐ°Ń ŃŃŃОка
- á¨á°ááá¸á áľáŞáľ á°ááá
- áĽáá°áá áŤá_á á áľáľ - á¨áá
true
, á¨ááŤá ááłáááŤá áĽáá°á°á¨á°á áĽá á áĽáá°áá ááŤáá. á¨áááŁáł áááŞáŤáá˝á á ááááŠá áľ áá áĽá áá˝á áĽáá°áá ááááŁáľ á áľááá á áááá áľ ááá áá áá°áá°á¨áą áľáááśá˝ á ááᢠááŁáŞfalse
.
á áááááľ
á áááááśá˝á áŤáľá°áłáľáŤáᢠááłáááŤáá˝á ááŤááľ á¨áá˝á - á áááááąá áĽáá°áá áŤáľáááŤá.
áááŞáŤáá˝
- á¨ááĽá¨áľ áľá - á¨áá°áłá°á á áááááľ (á ááŤá)
- áľá - ááľá°áłá°á áŤáá áľ á áááááľ (á áľá ááľáĽ áŤáá°ááá¸)
- ááá¨ááἠ- á¨ááááá á¨á áááááą áááł;
running
- á°ááá¨stopped
- ááá
- á áá - á áááááąá ááááá á˝ááłá áááŁá áŤá;
true
- autorun áá áˇá (systemctl enable
)mask
- á¨á°á°á á (systemctl mask
)false
- autorun á°á°áááá (systemctl disable
)
- áĽáá°áá ááá - á áááááąá áĽáá°áá áááľááá áľáĽáá ááľáĄ
- ááá´ - á¨á áááááľ áááłá ááá¨ááἠáľáĽáá
- áĽáá°áá á°áááŻáᢠ- á¨á áááááą á˘ááľááŞááľ áĽáá°áá ááááá á¨áá°áá áááá áŤááááąá˘ á¨áá
false
áĽá áááŞáŤá á°áááˇá áĽáá°áá ááá - á¨áá áá¤áľ áá áĽá á áá áááá. á¨ááfalse
áĽá áááŞáŤ áĽáá°áá ááá á áá°ááá¸á - á áááááą ááá áĽá áĽáá°áá áááá áááŻá (ááá áá systemd áľáááá áá ááásystemctl restart
). - á˝áŽá - á¨á áááááą á˘ááľááŞááľ áľáááá á¨áá°áá áááá áŤááááą
status
. á¨ááfalse
, á¨á፠á¨áááŞáŤ áĽá´áą áĽá á áá áááá ááá´. ááŁáŞtrue
.
exec
ááŤá áľáááá˝á áŤáľáŹáłá. áááŞáŤáá˝á áŤááááš áááĽáŤá, á˘áá áĽáť, á áľá°áá ááá ááááľá á¨ááŤáľáľ, áľááá á áťááááľ á áá áŤá áľ áá áá áá áŤá. ááłáááŤáá˝á ááľáŹáľ á¨áá˝á - áľááá áŤáľáŹáłáá˘
áááŞáŤáá˝
- á¨ááĽá¨áľ áľá - áĽáá˛ááá áľáĽáá (á ááŤá)
- áľáĽáá - á¨ááá¸áá áľááá (á áľá ááľáĽ áŤáá°ááá¸)
- áąáŤ - á°ááťááá ááá á¨áááááŁá¸á ááááśá˝
- á˘áá áĽáť - á áá áá¤áľ ááľáĽ á¨á°ááá¸á áľááá á áᎠááááť áŽáľ á¨á°á ááá ááá áľááá ááá¸áá
- á áľá°áá - á áá áá¤áľ ááľáĽ á¨á°ááá¸á áľááá áᎠáŁááá á¨ááááť áŽáľ á¨á°á ááá ááá áľááá ááá¸áá
- áááĽáŤá - á áá áá¤áľ ááľáĽ á¨á°ááá¸á ááá á¨áá ááá áľááá ááá¸áá
- ááááľá á¨ááŤáľáľ - á¨áá
true
, á¨á፠áľááá á¨áá°áŤá áá á¤áá°ááľ á¨ááá˝ áááŽá˝ ááłáá፠á˛á°áá°á áĽáť áá - cwd - áľáááá á¨áá áŤá áľ áááŤ
- á°á áá - áľáááá á¨ááŤáľáŹáľ á°á áá
- á á
áŤá˘ - áľáááá áĽáá´áľ ááľáŹáľ áĽáá°ááťá;
- áá´áľ - á¨ááá áá°áľ á ááá á°ááĽáŻá ᣠáááá áá áŤá¨ááᥠáąáŤ
- ááá
- áľááá á áźá ááľáĽ á°áááŻá
/bin/sh
ᣠááááá˝ áá˝ááᢠáąáŤ, ááá˘áá, á§áá§áá˝á áĽá ááá˝ á¨áźá áŁá áŞáŤáľá áá áá áá˝áá. áአááááá˝ áŤá (áĽááá áá á áŤáľ-á°á á°áááˇá)|
,;
,&&
,||
ááá°)á˘
á áááááĽáŠ
ááŽáááá˝á áááŁá áŤá.
áááŞáŤáá˝
- á¨ááĽá¨áľ áľá - áá á ááľ ááááľ áááŤ
- ááá¨ááἠ- á¨áááľ áááł;
present
- á¨áá ááá áŠabsent
- áŤá áá°áá
- áľáĽáá - á¨áľááá áľáĽáá ááááľ
- á áŤáŁá˘ - áľáááá á á¨áľáá á áŤáŁá˘ áĽáá°áá°áŤ (á¨á áŤáŁá˘ á°ááááŽá˝ áááá áĽá áĽá´áśáťá¸á á
=
) - á°á áá - á¨á¨áľáá á°á áá áľáááá áááľáŹáľ
- á°áá, á°á áľ, á¨áľáŤ áá, áá, áááá - ááŽá á˛á°áŤ. á¨áĽááá
áŁá
áŞáŤáľ ááľáĽ á ááłá¸áá áŤáá°ááášáŁ á crontab ááľáĽ áŤáá áá ááááá˘
*
.
á á áťááááľ 6.0 á áááááĽáŠ á
áľá ááĽáśá˝ á á á ááá
áááĽáľ ááŠááľ ááľáááśá˝
á¨ááŤááĽáá á áŁá á¨á°ááá°á áľá á°áľ ááᢠá¨á°áŁá ááááŤ. áá áľá á°áľ áááľ ááá á¨á፠á áá á°ááłáłá á°ááłáłá áľá áŤáá¸á á°ááłáłá ááĽáśá˝ á áááŤá ááľáĽ á˛áłáŠ áá¨á°áłáá˘
áľááᥠá°áá áĽá˝ááááĄ- áá°ááłáłá ááľááá ááááľ ááááŤáá˝ á ááľ ááááľ áááľ áŤáá¸á á°ááłáłá ááĽáśá˝á ááŤá á¨ááŁá¸áá!
á ááłááľ áá á°ááłáłá áľá áŤáá¸áᣠáá á¨á°ááŤáŠ á¨áĽá
á á áľá°áłáłáŞáá˝ áá ááŹáá˝á ááŤá áŤáľááááᢠá áá
áááł, áááŞáŤáá áá áá áŤáľáááááłá name
áľá
á°áąá áááľáááľ;
package { 'ruby-mysql':
ensure => installed,
name => 'mysql',
provider => 'gem',
}
package { 'python-mysql':
ensure => installed,
name => 'mysql',
provider => 'pip',
}
ááŁááľá áááľáááľ ááá˝ á¨ááá ááááśá˝ á°ááłáłá á ááŤáŽá˝ á áá¸á - name
Ń á áááááľ, command
Ń exec, áĽáá áááĽáá.
Metaparameters
á°ááĽáŽá ááá ááá áá áĽáŤááłááą á¨ááĽá¨áľ á áááľ á ááłááľ áአáááŞáŤáá˝ á ááľ.
á¨ááł áááŞáŤáá˝ áá áááá
á áá áááááĄ-
- áá áá - áá áá¤áľ áá áááá፠á á¨áľááš ááĽáśá˝ áá áĽáá°ááá¨áŽá áŤáłáŤáá˘
- á¨áá á ááľ - áá áá¤áľ á¨áľááš ááĽáśá˝ á áá ááĽáľ áá áĽáá°ááá°á¨áą ááááťá.
- áá°áá áááľ - áá áá¤áľ áá ááá á¨á¨áľááš áááŽá˝ ááłáááŤáá˝á áĽáá°ááá á ááááťáá˘
- á áłáá - áá áá¤áľ á¨áľááš ááĽáśá˝ á¨áá ááá ááłáááŤáá˝á áĽáá°ááá á ááááťáá˘
ááá á¨á°áá¨áአááłááŤááľáŽá˝ á ááľ áá á á¨ááĽá¨áľ ááááá ááá á áŤáŹ á ááá˝ ááľáĽ áŤá á áááá˝á áľááľá ááá ááá˘
áá° ááĽáśá˝ á áááá˝
á¨ááĽá¨áľ áááá á ááá á¨ááĽáąá áá ááľ ááᢠá ááááľ áĽááááľá ááááá¨áľ áŤáááááᢠá¨áá ááĽáľá ááĽááľ á¨áá ááá áľá á°áľá áŤáľá¨áľááá˘
á¨á ááá á ááŁáĽ á¨áá¨á°áá áá-á¨ááĽáľ á áááľ á áŤááłá áá°á (á¨á áááą áľá áľáἠáŽááá˝á á¨áŤá á áŽááá˝ ááŤá¨á áŤáá áĽáŤááłááą á¨áľá ááá áľáá áá) á¨ááŤá á¨áááá áľá á áŤáŹ á ááá˝ (á¨áľá ááłá) á ááááĽá!) ááá°áśá˝ ááአá áááŁáᤠá¨áŤáŹ á ááá˝ á¨ááťááľ á¨áľá á áá áá˛áŤáá ááá˘
áááłá:
file { '/file1': ensure => present }
file { '/file2':
ensure => directory,
before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']
áĽááá˝ áĽá ááłáááŤáá˝
áá°á á˛á áĽáá°á°áááá á ááĽáśá˝ ááŤá¨á ááá áĽááá˝ á°áťá᪠áá¸á. á áááŤá˝á áá áĽááá˝á á˛á¨áአáá ááá - áłáááá áĽááá˝á ááá á áá˝áá, áá á á¨áá ááá áľá á°áľá áŤáľá¨áľáá.
áĽáá° áĽááá˝ áłááá ááłáááŤáá˝ á°áťá᪠á áá°ááᢠá¨áá¨á°ááľ á°ááŚá˝ áááłáááŤáá˝ á°ááťá áááááĄ
- ááĽáą ááłáá፠á¨á°á¨á°á á°ááááᢠá¨ááťáťáŤ áĽááááá˝ á ááĽá¨áľ á áááľ - exec áľáááá áŤáŤááłá ᣠá áááááľ á áááááąá áĽáá°áá ááááŤá ᣠáĽá˝á áĽá áá áĽáá°áá áááá. ááĽáą á¨áááá áĽááá á¨ááá ááá ááá á áá¨á°áľáá˘
- á á ááľ á¨á áťááááľ áŠáŤ áá áľ ááĽáą á¨á ááľ áá á áá á áááááᢠáá ááá á¨áťáá ááłáááŤáá˝ áĽááá˝á áľáááŤáŤáľáą áĽá á¨áĽáá ááŤá áá°áśá˝á áľáááá ááá˘
- á áťááááľ á¨ááĽáľ áááłá á¨ááá ááĽáą ááĽáą áá°ááááĄáľ ááá áááŽá˝ ááłáááŤáá˝á áááŤáá˘
- á ááľ áááá፠á¨á°áááᣠááĽáą áá°ááááĄáľ ááá áááŽá˝ ááłáááŤáá˝á áááŤáá˘
áŤáá°áááš áááŞáŤáá˝ á áŤáŤá
áĽáá° á°áᥠᣠá ááłááľ á¨ááĽá¨áľ áá¤áľ ááŁáŞ áĽá´áľ á¨ááá áĽá áá
áá¤áľ á á áááŁáŤáá ááľáĽ áŤáá°ááḠᣠá¨á፠á áťááááľ áá
áá ááĽá¨áľ á ááľááá ááááą áá ááá á°ááá
ááĽáśá˝ á áááá ááᢠáááłá, á¨ááááľ ááá á¨áá ááá áááŞáŤ á áá°ááá¸á owner
, á¨á፠á áťááááľ á¨á°áááá ááá áŁáá¤áľ á ááááĽá.
ááááὠᣠá°ááááŽá˝ áĽá áľááááá˝ ááá˘áŤ
á¨áá
አá°ááłáłá ááá áŤáá¸á á ááŤáł á áááá˝ á áá áĽáá á ááá áá ááŠááśá˝á á á - áŤáá áá፠áááá á á ááľ áĽáá áááá
áĽáá˝áááᢠnode {}
. áĽááἠáá, á¨áá
á¨áľ á°ááłáłá áááá˝á á ááá áá
áłáľ áá˝áá, ááá áá á á á ááá áá
ááĽá áááľá áá - á áááአáŤáľáá, áĽá á¨á ááááĄá á á ááá ááá á¨áá¨áŠ, á°ááłáłá ááá á áĽá áŚáłáá˝ áá ááľá°áŤá¨á á ááĽááľ. á á°ááłáłá áá, áľá
á°áľ áááĽáŤáľ ááá áá, áĽá á á á ááá, 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 áá á áŤááŁáᢠáá° áá á¨áą á°áááá ááááąá áĽááľááá ᣠá¨á፠áá ááá nginx á á¨ááááá áá á áá áááŤá ááŤáááá áá˝ááá˘
áá°á¨á áá˝áá
áľáŠá¨áľ: á á áťááááľ ááľáĽ áŤá á°ááááŽá˝ á¨ááááᥠáá¸á!
á á°á¨ááŞá, á°áááá áá°á¨áľá áľ á¨áá˝áá á¨á°ááḠá áá áĽáť áá, á áá áá፠á¨á°áááá áá áááá undef
.
á¨á°ááááŽá˝ áá á¨ááĽáŤáľ ááłááĄ-
# ŃОСданио поŃоПоннŃŃ
$variable = 'value'
$var2 = 1
$var3 = true
$var4 = undef
# иŃпОНŃСОванио поŃоПоннŃŃ
$var5 = $var6
file { '/tmp/text': content => $variable }
# инŃĐľŃпОНŃŃĐ¸Ń ĐżĐľŃоПоннŃŃ
â ŃĐ°ŃĐşŃŃŃио СнаŃĐľĐ˝Đ¸Ń ĐżĐľŃоПоннŃŃ
в ŃŃŃОкаŃ
. РайОŃĐ°ĐľŃ ŃОНŃкО в двОКнŃŃ
кавŃŃкаŃ
!
$var6 = "Variable with name variable has value ${variable}"
á áťááááľ á áá á¨áľá áŚáłáá˝, áĽá á°ááááŽá˝, á áá áá á¨áľ, á áá¸á á¨áłáááľ á áŤáŁá˘: á°ááłáłá áľá áŤáá á°áááá á á°ááŤáŠ á¨áľá áŚáłáá˝ áááá˝ áá˝áá. á¨á°áááá áĽá´áľá á áááłá áľ áá, á°ááááá á áá áŁáá á¨áľá áŚáł, á¨ááŤá á á°ááá á¨áľá áŚáł, ááá°.
á¨áľá áŚáł ááłááá˝áĄ-
- ááá á ááá - á¨ááá áá áŤá á°ááááŽá˝ ááá á¨ááľááá ááá ááá፠áá°á፠áááłá;
- á ááľááá ááá ááľáĽ á¨ááľááá áľá áŚáł;
- á ááá ááá፠ááľáĽ á¨ááá áľá áŚáł.
á°áááá á˛á°ááą á áťáááľá áááľáááľáŁ á á°áááá áľá ááľáĽ á¨áľá áŚáłáá áááá˝ áá˝áááĄ
# поŃĐľĐźĐľĐ˝Đ˝Đ°Ń ĐąĐľĐˇ ĐżŃĐžŃŃŃĐ°Đ˝ŃŃва иПŃĐ˝
$var
# поŃĐľĐźĐľĐ˝Đ˝Đ°Ń Đ˛ гНОйаНŃнОП ĐżŃĐžŃŃŃĐ°Đ˝ŃŃво иПŃĐ˝
$::var
# поŃĐľĐźĐľĐ˝Đ˝Đ°Ń Đ˛ ĐżŃĐžŃŃŃĐ°Đ˝ŃŃво иПŃĐ˝ кНаŃŃĐ°
$classname::var
$::classname::var
áá° nginx áá
á á¨áááľá°á ááááľ á á°áááá ááľáĽ áĽááłá áĽááľáá $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
}
ááá áá, á¨á°á°á á ááłá ááĽá áá, ááááŤáąá á ááłááľ "ááľáĽáŤá áĽáááľ" á ááá ááľáĽ á¨áá áŚáł áá áĽáá°áá áŤá áľá áŤáá á°áááá áĽá á áá áááá. áá áá áĽáááľ á á ááá ááľá¨á á¨á áá áľááá áá - áááá˝ áá¤áśá˝ áááŤá¸á áá˝ááá˘
á¨ááá áááŞáŤáá˝ á ááá á¨áľá áŚáł ááľáĽ á°ááááŽá˝ áá¸áᣠáĽááą á ááá áŤáľá ááľáĽ á¨á°áááš áĽá á ááá á áŤá ááľáĽ áĽáá° áá°á á á°ááááŽá˝ áĽá á áá ááá áá˝ááᢠá á áááŁáŤáá ááľáĽ áááá á˛á áá á¨áááŞáŤ áĽá´áśá˝ áááááá˘
áááŞáŤá áá° ááŁáŞ áĽá´áľ áááá áá˝ááᢠáááŞáŤá ááŁáŞ áĽá´áľ á¨ááá áĽá áĽá´áą áĽá á áá á˛áá áŤáá°ááᨠá¨áá ááá áľá á°áľá áŤáľá¨áľááá˘
áááá á¨áá áŤáá ááłá áĽááĽááľ áĽá áááľ áá¤áśá˝á áĽáá¨áá-á¨ááááŞáŤá ᣠá¨ááááá ᣠáá° áá
á á¨áááľá°á ááááľ áá ᣠáĽá ááá°áá ᣠá ááŤá ᣠá¨áĽá
á áľá ᨠnginx áá áá (á á´á˘áŤá ᣠáááłá ᣠáĽá
áá˝ á áᢠ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', # СадаŃĐź паŃаПоŃŃŃ ĐşĐťĐ°ŃŃĐ° ŃĐžŃнО ŃĐ°Đş Мо, как паŃаПоŃŃŃ Đ´ĐťŃ Đ´ŃŃгиŃ
ŃĐľŃŃŃŃОв
}
}
á á áťááááľ ááľáĽ, á°ááááŽá˝ ááťáá. áĽá
á áááą á¨áááŞáŤá áľá á ááľ áá˛áŤáá áááááĄ-
class example (
String $param1,
Integer $param2,
Array $param3,
Hash $param4,
Hash[String, String] $param5,
) {
...
}
áááá˝áĄ á¨ááá áľá á¨ááá áá áŤáŤáľáłá{'á¨ááá áľá'áĄ}
áĽáŤááłááą ááá á¨ááááľ ááá áá áá°áĽ. áĽáá°ááá á¨ááĽáľ á áááľáŁ á á ááľ ááľááá ááááľ áá á¨á ááľ ááá áááľ á ááŁááá˝ ááአá áá˝ááá˘
áááľ áá á°á á
áá á ááľ ááá áá° á°ááłáłá ááľááá ááááľ ááá¨áá á¨áá¨áŠ class { 'classname':}
(ááá ááŠááľ á¨áá, á¨á°ááŤáŠ ááá á°ááłáłá áááŞáŤáá˝ áá), á¨áá ááá áľá
á°áľ áááŤá. ááá áá á ááĽá¨áľ ááᤠááľáĽ áááá á¨á°á áá áá˛áŤáá áááá áááááášá á á áááŁáŤáá ááľáĽ á áľááá áááááľ áá˝ááá˘
ááá áá, á¨á°á áá include
, á¨ááŤá áááá á á°áááá áá á áĽá áá áá¨áá ááťáá. áĽáááłá áá
ááᢠinclude
á ááľ ááá áá° áááŤá áá¨ááŠá á¨áááľá˝ á˘-á áľáŤááľ á°ááŁá ááᢠááá á áááŤá ááľáĽ áŤááá, áá¨áá¨áá, áĽá ááľááá áŤá, ááá á áŤá°ááá. ááá áá á á á ááá áááł include
á ááá ááá፠áá á¨ááá áááŞáŤáá˝á áááááľ á áá˝áá - ááá á áľááá áááŞáŤáá˝ á ááŤá á¨ááἠááá - Hiera ááá ENC ááľáĽ áááἠá ááŁá¸á. á áááĽáá áááľ ááľáĽ áľá áĽáááą áĽáááááŤáá.
áááááá˘
á áá°áá áĽáá áá áĽáá°á°ááá¨á á ááľ á áááľ ááá á¨á ááľ áá á áá á ááľááá ááááľ áá ááá á áá˝ááᢠááá ááᣠá á ááłááľ á ááŁááá˝ á á°ááłáłá ááľááá ááááľ áá á¨á°ááŤáŠ áááááá˝ áá á ááľ á áááľ á¨ááá áŽáľ áá áá ááťá á ááĽááľá˘ á áá á áááá, á¨áŤáą á¨áá á¨ááĽá¨áľ á áááľ áŤáľáááá.
áááłáᣠᨠPHP áááá áááŤá á á áŞáś ááľáĽ á¨áá¨á°ááľá áĽáá°ááááá˘
- áĽá áá á áá ááá ááŤá.
- ááá ááá á¨ááááŞáŤ ááá áĽááá áá˘
- á php-fpm áá á¨áľ á˛áááá áĽáááĽáŤááá˘
- á php cli áá á¨áľ á˛áááá áĽáááĽáŤááá˘
á áĽáá°áá
ááááľ áááłáá˝ ááľáĽ áĽáá° ááľá $title
, á ááłáá
á áľ áá á¨áááá áľá á¨áááľá áľ. áá á áááá˝ áááł ááľáĽ, ááş á ááááŞáŤ áááá˝ á áá áľ, á¨á፠á áá áĽá
á áá ááá áá˝áá.
á PHP ááá áŤáá ááá áŤá ááłááĄ-
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' }
}
á¨á°áŁá ááá፠áľá á°áľá áááŤá ááá ááááľ á Define ááľáĽ ááᢠáá á¨áááá ááş áá áľá áŤáá ááá áŤáá áĽá á á ááłááľ ááľááá ááááľ áá á¨áá ááş áááľ ááá á¨á፠á áá á ááŁááá˝ áŤá ááá˘
áĽáŤáľáá á¨áá
áá á á
ááá ááᥠá áľááá ááľáĽ áŤááľ ááá ááĽáśá˝ á áá
áá á áááľá¨áľ áľá áááŤá¸á áááŁáᢠ$title
. á ááľ á ááŤá á¨ááĽáľ áá¨áá á á
á áŤáá áá ᣠá ááá áá᳠ᣠá ááá á¨áľááá áááłáá˝ ááľáĽ áŤááľá ááĽáśá˝ áá° á¨á°áᨠááá áááá áĽá áá
áá ááá á áľááá ááľáĽ ááŤá°áľ á á áá - á°ááŁá include
ááááá˘
ááĽáśá˝á á áá¨ááŠá áľ áá á áŤáá áĽááŤáŹá áááááľ ááá˝ ááááśá˝ á á ᣠáááľá á°ááŁáŤáľ defined
и ensure_resources
áá á áááĽáá ááá áľá ááłáŠ áĽáááŤá˝ááá.
ááááá˝ áĽá ááľáááá˝ áĽááá˝ áĽá ááłáááŤáá˝
áááá˝ áĽá áľááááá˝ áĽááááśá˝á áĽá ááłáááŤáá˝á áááľá°áááľ á¨áá¨á°ááľá á áá˝ áá¨ááŤáá˘
- á ááá/ááá፠áá áĽááááľ á ááá á¨ááá/á¨ááá፠ááĽáśá˝ áá áĽááááľá áá¨ááŤáá˘
- á¨áá°áĽ/á¨ááá°á áĽááááľ á ááá ááá áá áĽááááľá áá¨ááŤá/ááĽá¨áśá˝á áááá ;
- ááá/áááá˝ ááľáłáá፠á¨ááá/áááá˝ áááá ááĽáśá˝ áŤáłááá;
- á¨ááá/ááá፠á¨á°áá áááľ áááᣠáááá á¨ááá áááŽá˝ áááááŁá/áááááá˘
áááłá ááááŤáá˝ áĽá ááŤáŽá˝
if
áĽáá ááá áááĄ-
if ĐĐŤĐ ĐĐĐĐĐĐ1 {
...
} elsif ĐĐŤĐ ĐĐĐĐĐĐ2 {
...
} else {
...
}
á áľá°áá
á á°ááŤáá áŤááá á áľá°ááᥠá ááááš áá°áľ á¨áá á¨áŽáą áĽááł ááá¸ááá˘
unless ĐĐŤĐ ĐĐĐĐĐĐ {
...
}
ááľ
áĽáá á ááá á¨á°ááłá°á ááá á¨áá. áá°á á áĽá´áśá˝á (ááĽá¨ááááὠᣠááĽáŽá˝ ᣠááá°) ᣠáá°á á ááááŤáá˝á áĽá á¨ááἠááááśá˝á áĽáá° áĽá´áśá˝ áá áá áá˝ááá˘
case ĐĐŤĐ ĐĐĐĐĐĐ {
ĐĐĐЧĐĐĐĐ1: { ... }
ĐĐĐЧĐĐĐĐ2, ĐĐĐЧĐĐĐĐ3: { ... }
default: { ... }
}
ááŤáŽá˝
ááŤá á¨áááľáá á¨ááá áááŁáł ááᢠcase
ááá áá á¨áŽáľ áĽááá á¨ááľáá¸á ááá
áĽá´áľá ááááłáá˘
$var = $othervar ? { 'val1' => 1, 'val2' => 2, default => 3 }
ĐОдŃНи
á áááአáľáá˝ á˛áá, á ááá á á ááľ á áá¸áŁáŤá ááľáĽ áááἠáá˝áá. áá áĽá á ááááŽá˝á á ááá á ááĽá á á áá¸áŁáŤáá ááľáĽ áĽá áááá˝ áĽá á áááá˝ á á ᣠáŤáľáá ᣠáĽá á¨áĽáą áá áááľáŤáľ á¨áááá˝ ááááá˘
á á°á¨ááŞá, áŽáľ áĽáá°áá áĽá á áá ááá á˝áá á á - ááá áŽáśá˝ á á ááľ á áá¸áŁáŤá ááľáĽ á˛áá, áá á áŽáľ áááá˝ áááŤáľ á áľá¸á᪠áá. áĽááá á áááľ á˝ááŽá˝ ááááłáľáŁ á áťááááą áááá˝ á¨ááŁá á áŤá á ááá˘
ĐОдŃНи - áĽááá á á°áᨠáá፠ááľáĽ á¨á°ááᥠá¨áááá˝áŁ áľááááá˝ áĽá ááá˝ á¨á áťááááľ á áŤááľ áľáĽáľáŚá˝ áá¸áᢠá áá á áááá ááá áŤáąá á¨áťá á¨á áťááááľ ááá ááᢠáááłá, ᨠnginx áá áááľáŤáľ ááá ááá áá˝áá, áĽá ᨠnginx áá áááľáŤáľ á¨ááŤáľááááá áĽá áá áĽáť áááá, ááá ᨠPHP áá áááľáŤáľ ááá, ááá°.
áááá˝ á¨á°áľá°áŤá¨á áá¸áᣠáĽá á¨áááá˝ áĽááá˝ áĽááľ á áĽááľ áá°áááᢠá¨áááá˝ áááľ áá¨ááť á á -
á á áťááááľ á áááá áá ᣠáááá˝ á áľá áááŤá áááá˝ áááľ áá፠ááľáĽ áááá ᢠá áĽáŤááłááą ááá ááľáĽ áá°á á á¨áá፠áĽá áľ á á - ááááŤáὠᣠáááὠᣠá áĽááśá˝ ᣠáἠᣠááá°.
á á ááľ ááá ááľáĽ á¨ááá ááá á
á¨ááá áĽá á¨áá¨á°ááľá ááá áľáá˝ á¨áŤá áá፠ááá áá˝ááá˘
manifests
- ááááľáśáá˝á áááfiles
- áááá˝á ááátemplates
- á áĽááśá˝á ááálib
- ᨠRuby áŽáľ ááá
áá á¨á°áá á¨áá፠áĽá á¨áááá˝ áááá á áá°áá, áá ááá á˝áá á áá á á áá.
á ááá ááľáĽ á¨ááĽá¨áśá˝ áĽá á¨áááá˝ áľáá˝
á á ááľ ááá ááľáĽ áŤá ááĽáśá˝ (áááá˝áŁ áľááááá˝) á¨ááááľá áľá áá አá áá˝ááᢠá á°á¨ááŞáᣠá ááĽá¨áľ áľá áĽá á ááá áľá ááŤá¨á ááĽá°á á¨á°áĽáłá¤ áááἠá áᢠá¨áľáŤá á áášá á¨áŁáąáŁ á áťááááą á ááá á¨ááĽá¨áľ ááááŤáá á áŤááá áĽá á¨áá ááá áľá á°áľ áá°ááľáĽááłáá˘
á°ááŚáš ááá áá¸ááĄ-
- á á ááľ ááá ááľáĽ áŤá ááá ááĽáśá˝ á ááá á¨áľá áŚáł ááľáĽ ááá á ááŁá¸áᢠááá á¨á°á áŤ
foo
, á¨ááŤá á ááľáĄ áŤááľ ááá ááĽáśá˝ áá°á¨á á ááŁá¸áfoo::<anything>
ᣠááá áĽáťfoo
. - á¨ááá áľá áŤáá ááá á ááá ááľáĽ ááá á áá áľ
init.pp
. - áááá˝ ááĽááśá˝áŁ á¨ááá á ááŁáĽ áá´á áĽáá°áá¨á°áá ááá˘
- á¨ááá áľá áŤáá á áľá á áĽáŤ á°áĽááá˘
- ááá áľáἠáŽáá, áŤá, á ááááŽáá˝ áá°áŤá
- á
áĽáŤ áłááá
.pp
á ááłá á áłááťááᢠááá áĽá¨áťáአáá áĽáá á nginx
. á ááľáĄá á¨áá¨á°ááľá ááĽáśá˝ ááá.
- кНаŃŃ
nginx
á á áá¸áŁáŤáá ááľáĽ á°áááżáinit.pp
; - кНаŃŃ
nginx::service
á á áá¸áŁáŤáá ááľáĽ á°áááżáservice.pp
; - áááá
nginx::server
á á áá¸áŁáŤáá ááľáĽ á°áááżáserver.pp
; - áááá
nginx::server::location
á á áá¸áŁáŤáá ááľáĽ á°áááżáserver/location.pp
.
á áĽááśá˝
á áĽááśá˝ áá áĽáá°áá á áá° áŤáľá
áłáááá
ᤠáĽáá
á áááá á ááááťá¸ááᢠáá áĽáá° á ááŁá áĽáť áĽá°áááá
á áĽááśá˝á áĽáá´áľ áá áá áĽáá°ááťáᥠá¨á áĽááľ áľááá á°ááŁáá á áá áá áá°á áá˝ááᢠtemplate
áá° á áĽááľ á¨áááľá°áá ááááľ á¨ááŤááᢠáááááľ ááĽáśá˝ ááá á¨áááŞáŤá áá á ááľ áá áĽá
á áá áááá content
. áááłáᣠáĽáá°áá
áĄ-
file { '/tmp/example': content => template('modulename/templatename.erb')
á¨áĽááł ááááľ <modulename>/<filename>
áááá áŤááááłá <rootdir>/modules/<modulename>/templates/<filename>
.
á á°á¨ááŞá, á ááľ á°ááŁá á á inline_template
- á¨á áĽááľ á˝áá á¨ááá áá áĽáá° ááĽá áľ áĽáá á¨ááá áľá á áá°ááá˘
á á áĽááľ ááľáĽáŁ á áá áŁáá áá°á áááá á¨á áťááááľ á°ááááŽá˝á áá áá áá˝ááá˘
á áťááááľ á ERB áĽá EPP á áá¸áľ á áĽááśá˝á áá°ááááĄ-
áľá á˘á áᢠá á ááŠ
á¨ááĽáĽá ááá áŽá˝;
<%= ĐĐŤĐ ĐĐĐĐĐĐ %>
- á¨ááááŤáá áá áŤáľááĄ<% ĐĐŤĐ ĐĐĐĐĐĐ %>
- á¨á ááľá á áááá˝ áá áŤá°á (áłáŤáľááĄáľ)ᢠáááłá ááááŤáá˝ (á¨áá) áĽá loops (áĽáŤááłááą) áĽááá áá áĽáá áááłáá˘<%# ĐĐĐĐĐĐТĐĐ ĐĐ %>
á ERB ááľáĽ áŤá á áááážá˝ á¨á°áááľ á áŠá˘ áá (ERB á áĽáááą á¨á°áŤá°á° Ruby áá)á˘
á¨á áá¸áŁáŤáá ááľáĽ á°ááááŽá˝á áááľá¨áľáŁ áá¨á á ááĽá
@
áá° á°áááá áľá. á¨ááĽáĽá áááŁáł á áá á¨ááłá¨áá á¨ááľáá áááť áááľáááľ á¨ááá፠áá፠áá áá áŤáľáááááłá -%>
.
á áĽááąá á¨áá áá ááłá
ZooKeeperá ááááŁá á ááá áĽá¨áťáአáá áĽáá áᢠá ááááŠá á¨ááá á áááááľ áŤáá ááá áá á áááľááá˘
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 -%>
áĽáááłáá˝ áĽá á áĽáŽááἠá°ááááŽá˝
áĽááá áá á¨ááááŞáŤá á¨á°áá°á ááá á á áá áá á ááľááá ááááľ áá áŁáá áá ááá°áá. áááłáᣠá¨á´á˘áŤá áááá፠áá áĽáá°áá áá á áááľá¨áľ á ááľ ááá áá á¨áĽá áá áľáŞáľ ááŤá áŤáľáááááłáᢠáá áá áá áĽáŤáľá áá¨áłá°á áá˝áá ᣠá áááá˝ á¨á°áá¨áŠ áĽáá°áá áááᢠáá áá á¨áŁáľ á áŤááľ á áá°áá ᣠá ááśáá˛á á áŁá á¨á°áťá ááá˘
áľá á áááá˝ áá¨á áááááľáŁ á áťááááľ áĽáááłáá˝ á¨ááŁá áá´ á ááᢠáá¨á - áá áľá ááľááá ááááľ áá¨á áá, á á ááá áá á¨áľá áŚáł ááľáĽ á á°ááá°á á°ááááŽá˝ ááá áááá. áááłáᣠá¨á áľá°ááá áľáᣠá¨áľááá° ááá áľáŞáľáŁ ááŽá°á°á á ááá´áá¸áᣠá¨á°á áááá˝ ááááᣠá¨á ááłá¨ áá¨áĽ á áááážá˝ áááá áĽá á áľáŤáťááťá¸áᣠáĽá áĽá áĽá ááá˝áᢠáĽáááłáá˝ á ááááŤáá˝ áĽá á á áĽááľ ááľáĽ áĽáá° áá°á á á°ááááŽá˝ ááááá˘
á¨áĽáááłáá˝ áá á¨ááĽáŤáľ ááłááĄ-
notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ŃĐľŃŃŃŃ Ńипа notify ĐżŃĐžŃŃĐž вŃĐ˛ĐžĐ´Đ¸Ń ŃООйŃонио в НОг
á áá°á á á ááááᣠá ááľ áĽáááł áľá (ááĽá¨ááá) áĽá áĽá´áľ á áá (á¨á°ááŤáŠ ááááśá˝ á áᥠááĽá¨ááááá˝áŁ áľááľáŽá˝áŁ áááá áááľ)ᢠáĽá
á áá áŤá áľ áá á¨á áťááááľ ááŞá áááá á¨ááááľá áĽáááł á°áĽáłá˘áá˝ á¨áááľá°áá¨á áá° ááľááá ááááľ áááá áŁá ᣠá¨á፠á áá áŤáľááłá¸áá áĽá á¨á°á°á á°áĄáľá áĽáááłáá˝ áá° á áááአáááŤá ᢠá¨áá á áá á áááአáŤáłááá áá ááá ááááŤáá˘
áĽáááłáá˝ áá°áá አá áá˝á áááá˝ ááá
áĽáá°ááá
áŤá áĽáááłáá˝ á áááŤá ááľáĽ á áááá˝ ááľáĽ á°ááá áá facts.d
. á áĽáááĽ, ááááš áá°áá አá¨áá˝á ááá á ááŁá¸á. á ááŽáĄá áľ áá áá¨áá á YAML ááá key=value format áá° áá°á á áá
ááľ áááŁáľ á ááŁá¸áá˘
áĽáááłáá˝ áááá á á°á°ááŤá áľ á áá á áááá ááĽáĽá áľá áŁá ááá á áááá˝ áá áĽáá°áá°áá አá áááąá˘ áľááá , á áľááŞááą ááľáĽ, áľáááą ááĽááľá áĽáááł áĽáá˛á°áŤ á áľááá á¨áá ááá ááŽááŤáá˝ áĽá áááá˝ áĽááłá ááá¨ááἠáá ááá.
#!/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
á¨á˝áá áĽáááłáá˝
áĽáá°ááá
áŤá áĽáááłáá˝ á áááŤá ááľáĽ áŁá á áááá˝ áá á°ááá áá /etc/facter/facts.d
á á áŽá á áťááááľ ááá /etc/puppetlabs/facts.d
á á á˛áą á áťááááľ ááľáĽ.
examplefact=examplevalue
---
examplefact2: examplevalue2
anotherfact: anothervalue
áá° áĽáááłáá˝ ááľá¨áľ
áá° áĽáááłáá˝ ááá á¨áĽ áááľ ááááśá˝ á ááĄ-
- áááá áááľ á áŠá
$facts
:$facts['fqdn']
; - á¨áĽáááłáá áľá áĽáá° á°áááá áľá á áá áááĄ-
$fqdn
.
áááá áááľ áá áá áĽáŠ ááᢠ$facts
ᣠááá áĽáá˛áŤáá á¨á°áťáᣠá¨á ááá áá á¨áľá áŚáłá áŤááááą ($::facts
).
á áĽáŽááἠá°ááááŽá˝
á¨áĽáááłá á á°á¨ááŞ, áĽáá˛á á á
- á¨áłáá áĽáááłáá˝ - á¨á°áá áá á¨ááľáá áá¨ááľ á¨á°áá°áą á°ááááŽá˝ (á¨ááľáá áá¨ááą áĽááá áá á áá á áááá áá áľááá°áĽ ááŞá á¨ááľáá áá¨ááąá áĽáť ááľáś áááἠá áá˝áá ᣠáľááá á°ááááŽáš âá¨áłááâ áá¸á) á¨ááľáá áá¨ááľ áľá ᣠá¨ááľáá áá¨ááľ áľá á áľá°ááá áĽá ááŤ, á¨áĽáá á áá¨áááŤá á áĽáŤáá˝.
- á¨á áááá áĽáááłáá˝ -áľá á áááአáá¨á áá á¨á°áŤáŤá á°ááááŽá˝-áľáŞáľáŁ áľáᣠá¨á áááá IP á áľáŤáťáŁ á áŤáŁá˘á˘
- ááŞá áĽáááłáá˝ - á°ááááŽá˝ á ááĽáł á á áťááááľ-ááŞá á¨á°á¨áአáĽáá á áá°á á áá°áá - á¨ááľáá áá¨ááľ áľáᣠá¨ááŞá áĽáŞáľáŁ á¨á áťááááľ áĽáŞáľá˘
- áá á°ááááŽá˝ - á¨áááľááľá°á á°ááááŽá˝ (sic!) ááľáĽ áŤáá áá á°ááłáłá ááᢠá¨á áááá áĽáááłáá˝áŁ á˛á°áá á¨áá á áá¤áľ áĽá´áśá˝ á áá˘
- á¨áá áá¨áŞáŤ á°ááááŽá˝ - á áĽáŤááłááą áá°á á¨áááŤáŠ á¨áŽáááá°á á°ááááŽá˝-á¨á áá ááá áľá áĽá á¨á áá ááá á¨á°ááá áľ á¨ááá áľáᢠáĽááą áááłá á¨áá áááá˝á á¨ááá˝ áááá˝ á ááĽáł áĽá á áá áĽááłááá ááá¨ááἠáá ááá áľ áá˝ááá˘
á°á¨á᪠1: áá á áá áĽáá´áľ ááľáŹáľ áĽá áá¨á?
á˝áá áĽá á¨á áťááááľ áŽáľ ááłááá˝á áááᣠáá áá á áŽáľ áĽáá´áľ ááľáŹáľ áĽááłááĽá á ááŤá˝ á áááá¨ááᢠáĽáş áŤá´á áĽáŤá¨áአááá˘
Puppetá áááľáŹáľ ááŞá á á ááᣠáá áá áĽááááš ááłáŽá˝ á ááááá áŤáľáááááłáá˘
ááŞá
á˘áŤááľ á¨áľáŞáľ XNUMX áááŽáŁ á¨á áťááááľ ááŞá áĽá
áá˝ á¨
á áŁá ááá á áá áááł á¨á áťááááľ áá
áá ááá áá ááŞáá á áááá á ááá áááł ááľááá á á áá-á¨á áťááááľ áŽáľ áá° ááľááá ááááľ á¨á°ááá á ᣠá áľááł 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
á áĽááἠá ááááŠá áááá áĽá ááŞáá˝á á á˛áá ááľ áá á ááľááá ááááľ áááľ á¨á°áťá áá - á¨á፠á á¨ááá˝ á°ááą á ááľ áá á¨á áááአá¨áá¨á°áá áá á áá°áá áŤáá˘
á¨áááá á¨áľáŤ áá´á ááŽá¨á
áá˝áá - áá°ááááá áľ ááľááá ááááľ áááą áĽá áááአsudo puppet agent -t
. ááá -t
(--test
) á á°ááĽá ááá á¨áá˝á á ááŤáł á ááŤáŽá˝á áŤáŤáľáłáᢠáĽááá
á ááŤáŽá˝ á¨áá¨á°ááľá áŤáŤáľáłá:
- á á˛áá áááł á áááą (á ááŁáŞááľ ááŞá á á´áá áááł ááááŤá);
- áŤáłááá á¨á°á áá á áá ááááľ (á ááŁáŞááľ ááŞá ááľáŤáąá áááĽáá áĽá á á¨ááá˝ á°ááą á ááľ áá á ááááŠá áá°áá áŤá);
- áááá á¨áĽáŤ áááἠááťá;
- á áááá˝ ááľáĽ áááŚá˝á á áłá.
ááŞá ááá ááἠáłáá°á¨áá áľ á¨á á áŤá áááł á áá - áľáááááá áá
á áĽáá°áťá áĽááá á áŤááá áĽá á áá áŤá áľ áá ááŞá á áľááá áá áĽáá°áááἠáá¨ááἠá˛ááá áá ááá áľ áá˝ááᢠáá
áááł á áááŞáŤá áá
áˇáᢠ--noop
á áľáĽáá ááľáá áá: sudo puppet agent -t --noop
.
á á°á¨ááŞá ᣠá¨áĽáŤáá áá¨á áááἠááááľ áá˝áá - á áĽáą ááľáĽ ᣠá áťááááľ áľáááŤá°ááá¸á áľáááśá˝ áá áá˝áá-á á áá áá áľáááŤáľáŹá°á ááĽáľ ᣠáľá á¨áá
ááá áááŞáŤáὠᣠáľá áá ááŽááŤáá˝ áĽáá°áááá áá˝ááᢠá áĽááἠáá
áááŞáŤ áá --debug
.
á áááá
á áá á˝áá ááľáĽ á¨áá á°áá¨áá áá áááá áĽá áŽáľ áá°ááŤáąá á ááľáĽá ᣠá¨áłáĽá ááľáĽ áá á áá á¨áá°áŤ á¨á áááአáľáŞáľ á á áĽá á¨áľáá˝ ááĽá áá áááľáŤáľ á°á¨á᪠áá á á¨ááááá áĽááá ᢠá áááá˝ (áĽáľá¨ ááś áľá¨áľ áá á)ᢠáĽá ááĽá áŤáá¸á á áááá˝ ááľá°áŤá¨áá ááááá - á ááŁáŞáᾠᣠpuppetserver á¨á áŤáľ á¨ááá áᥠá°áŤá°áá˝á ááááŤá ᣠáá áá á áááá ááĽáŤá¸áá áá¨áá áŤáľáááááłá áĽá á¨áá á°á¨ áľááľáł áá°áŚá˝á áá¨áá á ááṠᣠá áá áá፠á áááአáĽá áá ááťáť áá°á áľáŁáá˘
áŽáľ áá°ááŤáľ - á ááĽááľ áĽá á ááá á¨ááá ᣠá¨á፠áááá¨áą (r10k áááá¨áą)[
á°á¨á᪠2ᥠáŽáľ á á°áŁáĽ áááŞáŤáá˝
- áááá á ááááŽáá˝ á áááá˝ áĽá áľááááá˝ ááľáĽ áŤáľáááĄá˘
- áááá˝á áĽá áľááááá˝á á áááá˝ ááľáĽ áŤáአáĽáá á áááá˝á á ááááš ááááŤáá˝ ááľáĽ á áá°ááá˘
- áĽáááłáá á°á ááá˘
- á á áľá°ááá áľá áá á°ááľáá°á á¨áá á ááľáŠá˘
- ááááá˝ áĽá ááľáááá˝ áááŞáŤáá˝á ááá¨áá ááááľ áá°áá - áá á ááá / ááá á áŤá ááľáĽ á¨á°á°á á áľáá á áááᎠá¨á°áťá ááá˘
áá áá áááľá¨á ááá áĽáá°áááá¨á á áááĽáá áááľ ááľáĽ áĽáááťáá.
áá°áá°ááŤ
á ááá˘áŤá áĽáá¨ááľá˘ á áááĽáá áááľ áľá HieraᣠENC áĽá PuppetDB áĽáááŤá˝áááá˘
á áłá°áł áĽááą ááľáĽ á¨á°áááᥠá°á áááá˝ áĽáť ááłá°á áá˝ááá˘
á áĽááṠᣠáĽá á°á¨á᪠áááŽá˝ á á - á áá¨á°ááľ áááśá˝ áá ááŁáĽáá˝á ááťá áĽá˝ááá ᣠáááá ἠá áááááľ áá áľáá˝ ááľáĄ á˘
- 59,1%á¨áá á¨á áťááááľ áááŁáłáá˝ - á ááłááľ á¨áááĽáá á°á¨á á˝áľáĄ loopsᣠá¨áŤááł áľáŤ áĽá ááá˝ á¨áááł á áááážá˝áŁ ááĽáľ á°áĽáłá˘áá˝áŁ áá° áá á¨ááአááĽáśá˝ áĽá á¨á˘áá°á á áľá°ááá áááááľ á á áťááááľáŁ áááŤáá˝áŁ á á áŤá˘áá˝áŁ á¨á áĽáľáľáŤááľ á¨áá¨á á áááśá˝á˘13
- 31,8%"áĽá á¨áĽáá´ á áľá°áłáłáŞ áá" ááá á á áŞáś ááľáĽ áĽáá´áľ á¨á°ááŤáŠ áľáŞáśá˝ á¨á°ááŤáŠ á¨áá á°áá¨áŽá˝ áá áá°á áĽáá°áá áá áĽá á ááá á°á¨á á¨áá á ááááá áľáááľá°áłá°á áááá˘7
- 81,8%á¨á áťááááľ áŽáľ áĽáá´áľ áĽáá°ááá˝ááĄááłáŞáŤáá˝áŁ á°ááśá˝áŁ áá°ááá˝áŁ CI/CD.18
22 á°á áááá˝ áľáá˝ á°áĽá°ááᢠ9 á°á áááá˝ áľáá á°á á ጠá áľááááá˘
ááá: hab.com