рдкрдкреЗрдЯ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдиреЗ рдФрд░ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рдкрдкреЗрдЯ рдХреЗ рд╕рд╛рде рдкрд╛рдВрдЪ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдкрд╛рда рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдФрд░ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕рдВрдХрд▓рди рд╣реИ, рдЬреЛ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдХрдардкреБрддрд▓реА рдХреЗ рд╕рд╛рд░ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдореВрд▓рднреВрдд рдЬрд╛рдирдХрд╛рд░реА
рдкрдкреЗрдЯ рдХрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реАрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдСрдкрд░реЗрд╢рди рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдСрдкрд░реЗрд╢рди рдХреЗ рдПрдХ рдкреБрд▓ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╣рд░ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ Ansible рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╡реЗ рдПрдХ рдЕрд▓рдЧ рдкреБрд╢ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрд╡рдпрдВ рдХреБрдЫ рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЪрд╛рд░ рдХреЗ рджреМрд░рд╛рди, рджреЛ-рддрд░рдлрд╝рд╛ рдЯреАрдПрд▓рдПрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреА рдирд┐рдЬреА рдХреБрдВрдЬреА рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдмрд╛рд╣рд░реА рд╕реАрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдШреЛрд╖рдгрд╛рдкрддреНрд░реЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдп
рдХрдардкреБрддрд▓реА рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдХрдардкреБрддрд▓реА рд╕рд░реНрд╡рд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдиреЛрдбреНрд╕ (рдиреЛрдбреНрд╕)ред рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдШреЛрд╖рдгрд╛рдкрддреНрд░реЛрдВ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ - рдкрдкреЗрдЯ рдбреАрдПрд╕рдПрд▓ред
рдкрдкреЗрдЯ рдбреАрдПрд╕рдПрд▓ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рднрд╛рд╖рд╛ рд╣реИред рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдиреЛрдб рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рдордЧреНрд░реА рд╣реИ.
- рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ.
- рд╕реЗрд╡рд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдИ рд╣реИ.
рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реИрдВ, рд╡реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХреНрд░рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдкрд╣рд▓реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдлрд┐рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдлрд┐рд░ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░реЗрдВред" - рд╕реВрдЪрдирд╛рдПрдВ рд╣реИрдВ - рдпрджрд┐ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕рдХреЗ рд╕рджрд╕реНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрджрд▓рддреА рд╣реИ, рддреЛ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрд╡рд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдкрдкреЗрдЯ рдбреАрдПрд╕рдПрд▓ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЪрд░, рд╕рд╛рде рд╣реА рд╕рд╢рд░реНрдд рд╡рд┐рд╡рд░рдг рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛ рднреА рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рддрдВрддреНрд░ рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ - рдИрдкреАрдкреА рдФрд░ рдИрдЖрд░рдмреАред
рдкрдкреЗрдЯ рд░реВрдмреА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдИ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╢рд░реНрддреЗрдВ рд╡рд╣реАрдВ рд╕реЗ рд▓реА рдЧрдИ рд╣реИрдВред рд░реВрдмреА рдЖрдкрдХреЛ рдкрдкреЗрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ - рдЬрдЯрд┐рд▓ рддрд░реНрдХ, рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрди, рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВред
рдЬрдм рдкрдкреЗрдЯ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЛрдб рдХреЗ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдлрд╝рдВрдХреНрд╢рди, рдЪрд░ рдФрд░ рд╕рд╢рд░реНрдд рдмрдпрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХреЗ рдмрд╛рдж рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред
рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдФрд░ рдХреЛрдбрд╕реНрдЯрд╛рдЗрд▓
рдпрд╣рд╛рдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдиреБрднрд╛рдЧ рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВ:
рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ред рд╕рдВрд╕рд╛рдзрди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕. рдиреЛрдбреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ред
рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
# ╨Ъ╨╛╨╝╨╝╨╡╨╜╤В╨░╤А╨╕╨╕ ╨┐╨╕╤И╤Г╤В╤Б╤П, ╨║╨░╨║ ╨╕ ╨╝╨╜╨╛╨│╨╛ ╨│╨┤╨╡, ╨┐╨╛╤Б╨╗╨╡ ╤А╨╡╤И╤С╤В╨║╨╕.
#
# ╨Ю╨┐╨╕╤Б╨░╨╜╨╕╨╡ ╨║╨╛╨╜╤Д╨╕╨│╤Г╤А╨░╤Ж╨╕╨╕ ╨╜╨╛╨┤╤Л ╨╜╨░╤З╨╕╨╜╨░╨╡╤В╤Б╤П ╤Б ╨║╨╗╤О╤З╨╡╨▓╨╛╨│╨╛ ╤Б╨╗╨╛╨▓╨░ 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 }
). - рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рддреАрд░ рд╕рдорд╛рди рд╕реНрддрд░ рдкрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
- рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рд╕рдВрд╕рд╛рдзрди рд╕рдВрдмрдВрдз рддреАрд░ рд▓рд┐рдЦреЗ рд╣реБрдП рд╣реИрдВред
рдкреИрдкреЗрдЯрд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕реНрдерд╛рди
рдЖрдЧреЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ "рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреВрдВрдЧрд╛ред рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдкрдкреЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред
рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрдкреЗрдЯ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИред рд╡рд╛рддрд╛рд╡рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд╕реЗрдЯ рд╣реИрдВ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рддрд╛рд╡рд░рдг рдЧрд┐рдЯ рд╢рд╛рдЦрд╛рдУрдВ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рдиреЛрдб рдкрд░ рдпрд╛ рдИрдПрдирд╕реА рдореЗрдВ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
- рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг ("рдкреБрд░рд╛рдиреА рдХрдардкреБрддрд▓реА") рдореЗрдВ рдЖрдзрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдереА
/etc/puppet
. рдкрд░рд┐рд╡реЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреБрд░рд╛рдиреЗ рдкрдкреЗрдЯ рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ/etc/puppet/environments
, рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдкрд░рд┐рд╡реЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЖрдзрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реЛрдЧреАред - рдЪреМрдереЗ рд╕рдВрд╕реНрдХрд░рдг ("рдирдпрд╛ рдХрдардкреБрддрд▓реА") рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реЛ рдЧрдпрд╛, рдФрд░ рдЖрдзрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛
/etc/puppetlabs/code
. рддрджрдиреБрд╕рд╛рд░, рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ/etc/puppetlabs/code/environments
, рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИред
рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдПрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП 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
- рд╕рд┐рдореНрд▓рд┐рдВрдХ
- рд╕рд╛рдордЧреНрд░реА - рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА (рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд, рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╕реНрд░реЛрдд рдпрд╛ рд▓рдХреНрд╖реНрдп)
- рд╕реНрд░реЛрдд - рдЙрд╕ рдкрде рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рдЬрд╣рд╛рдВ рд╕реЗ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╕рд╛рде рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рд╕рд╛рдордЧреНрд░реА рдпрд╛ рд▓рдХреНрд╖реНрдп). рдХрд┐рд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдпреВрдЖрд░рдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
puppet:
(рдлрд┐рд░ рдХрдардкреБрддрд▓реА рд╕рд░реНрд╡рд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛), рдФрд░ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рдеhttp:
(рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛), рдФрд░ рдЖрд░реЗрдЦ рдХреЗ рд╕рд╛рде рднреАfile:
рдпрд╛ рд╕реНрдХреАрдорд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреВрд░реНрдг рдкрде рдХреЗ рд░реВрдк рдореЗрдВ (рдлрд┐рд░ рдиреЛрдб рдкрд░ рд╕реНрдерд╛рдиреАрдп рдПрдлрдПрд╕ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) - рд▓рдХреНрд╖реНрдп - рдЬрд╣рд╛рдВ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╕рд╛рде рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рд╕рд╛рдордЧреНрд░реА рдпрд╛ рд╕реНрд░реЛрдд)
- рдорд╛рд▓рд┐рдХ - рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
- рд╕рдореВрд╣ - рд╡рд╣ рд╕рдореВрд╣ рдЬрд┐рд╕рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
- рдореЛрдб - рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдорддрд┐рдпрд╛рдБ (рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ)
- рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ - рдкреБрдирд░рд╛рд╡рд░реНрддреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ
- рд╢реБрджреНрдз рдХрд░рдирд╛ - рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рд╡рд░реНрдгрди рдкрдкреЗрдЯ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
- рдордЬрдмреВрд░ - рдЙрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рд╡рд░реНрдгрди рдкрдкреЗрдЯ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдкреИрдХреЗрдЬ
рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдЯрд╛рддрд╛ рд╣реИред рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо - рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ рддреЛ рдкреИрдХреЗрдЬ рдХреЛ рдкреБрдирдГ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдкреБрдирдГ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ_рдкрд░_рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ.
рд╡рд┐рдХрд▓реНрдк:
- рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдирд╛рдо - рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо (рд╡реИрдХрд▓реНрдкрд┐рдХ)
- рдирд╛рдо - рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо (рдпрджрд┐ рдирд╛рдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ)
- рдкреНрд░рджрд╛рддрд╛ - рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░
- рд╕реБрдирд┐рд╢реНрдЪрд┐рдд - рдкреИрдХреЗрдЬ рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐:
present
,installed
- рдХреЛрдИ рднреА рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рддlatest
- рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рддabsent
-рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ (apt-get remove
)purged
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ (apt-get purge
)held
- рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдХ рд╣реИ (apt-mark hold
)╨╗╤О╨▒╨░╤П ╨┤╤А╤Г╨│╨░╤П ╤Б╤В╤А╨╛╨║╨░
- рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рд╣реИ
- рдкреБрдирдГ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ_рдкрд░_рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ - рдЕрдЧрд░
true
, рддреЛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдкреИрдХреЗрдЬ рдкреБрдирдГ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕реНрд░реЛрдд-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА, рдЬрд╣рд╛рдВ рдмрд┐рд▓реНрдб рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓рддреЗ рд╕рдордп рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЧрд▓рддреА рдХрд░рдирд╛false
.
рд╕реЗрд╡рд╛
рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ. рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо - рд╕реЗрд╡рд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк:
- рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдирд╛рдо - рдкреНрд░рдмрдВрдзрд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ (рд╡реИрдХрд▓реНрдкрд┐рдХ)
- рдирд╛рдо - рд╡рд╣ рд╕реЗрд╡рд╛ рдЬрд┐рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрджрд┐ рдирд╛рдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ)
- рд╕реБрдирд┐рд╢реНрдЪрд┐рдд - рд╕реЗрд╡рд╛ рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐:
running
- рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛stopped
- рд░реЛрдХрд╛ рд╣реБрдЖ
- рд╕рдХреНрд╖рдо - рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
true
- рдСрдЯреЛрд░рди рд╕рдХреНрд╖рдо рд╣реИ (systemctl enable
)mask
- рдкреНрд░рдЪреНрдЫрдиреНрди (systemctl mask
)false
- рдСрдЯреЛрд░рди рдЕрдХреНрд╖рдо рд╣реИ (systemctl disable
)
- рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн - рд╕реЗрд╡рд╛ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢
- рд╣реИрд╕рд┐рдпрдд - рд╕реЗрд╡рд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢
- рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реЗрд╡рд╛ рдЗрдирд┐рдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдЕрдЧрд░
false
рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн - рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░false
рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ - рд╕реЗрд╡рд╛ рдмрдВрдж рдХрд░ рджреА рдЧрдИ рд╣реИ рдФрд░ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдордбреА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИsystemctl restart
). - hasstatus - рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реЗрд╡рд╛ рдЗрдирд┐рдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдорд╛рдВрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ
status
ред рдЕрдЧрд░false
, рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╣реИрд╕рд┐рдпрдд. рдЧрд▓рддреА рдХрд░рдирд╛true
.
рдХрд╛рд░реНрдпрдХрд╛рд░реА
рдмрд╛рд╣реНрдп рдЖрджреЗрд╢ рдЪрд▓рд╛рддрд╛ рд╣реИ. рдпрджрд┐ рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓, рдЬрдм рддрдХ рдпрд╛ рдХреЗрд╡рд▓ рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ, рд╣рд░ рдмрд╛рд░ рдкрдкреЗрдЯ рдЪрд▓рд╛рдиреЗ рдкрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо - рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк:
- рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдирд╛рдо - рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЖрджреЗрд╢ (рд╡реИрдХрд▓реНрдкрд┐рдХ)
- рдЖрджреЗрд╢ - рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЖрджреЗрд╢ (рдпрджрд┐ рдпрд╣ рдирд╛рдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ)
- рдкрде - рдкрде рдЬрд┐рд╕рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрдирд╛ рд╣реИ
- рдХреЗрд╡рд▓ - рдпрджрд┐ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рд╢реВрдиреНрдп рд░рд┐рдЯрд░реНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореБрдЦреНрдп рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
- рдЬрдм рддрдХ - рдпрджрд┐ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдЧреИрд░-рд╢реВрдиреНрдп рд░рд┐рдЯрд░реНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореБрдЦреНрдп рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
- рдмрдирд╛рддрд╛ рд╣реИ - рдпрджрд┐ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдореБрдЦреНрдп рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
- рдХреЗрд╡рд▓ рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ - рдЕрдЧрд░
true
, рддреЛ рдХрдорд╛рдВрдб рдХреЗрд╡рд▓ рддрднреА рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЗрд╕ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА - CWD - рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рд╕реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реИ
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рд╕рд╕реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реИ
- рдкреНрд░рджрд╛рддрд╛ - рдХрдорд╛рдВрдб рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ:
- POSIX - рдПрдХ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╕ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдкрде
- рдЦреЛрд▓ - рдХрдорд╛рдВрдб рд╢реЗрд▓ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
/bin/sh
, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдкрде, рдЖрдк рдЧреНрд▓реЛрдмрд┐рдВрдЧ, рдкрд╛рдЗрдк рдФрд░ рдЕрдиреНрдп рд╢реЗрд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рд╣реИрдВ рддреЛ рдЖрдорддреМрд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (|
,;
,&&
,||
рдЖрджрд┐)ред
рдХреНрд░реЙрди
рдХреНрд░реЛрдирдЬреЙрдмреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк:
- рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдирд╛рдо - рдмрд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛
- рд╕реБрдирд┐рд╢реНрдЪрд┐рдд - рдХреНрд░рд╛рдЙрдирдЬреЙрдм рд╕реНрдерд┐рддрд┐:
present
- рдпрджрд┐ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рдмрдирд╛рдПрдВabsent
- рдпрджрд┐ рдореМрдЬреВрдж рд╣реИ рддреЛ рд╣рдЯрд╛ рджреЗрдВ
- рдЖрджреЗрд╢ - рдХреМрди рд╕рд╛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдирд╛ рд╣реИ
- рд╡рд╛рддрд╛рд╡рд░рдг - рдХрд┐рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реИ (рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рд╕реВрдЪреА рдФрд░ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред
=
) - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - рдХрд┐рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реИ
- рдорд┐рдирдЯ, рдШрдВрдЯрд╛, рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджрд┐рди, рдорд╛рд╣, рдорд╛рд╣ рдХрд╛ рджрд┐рди - рдХреНрд░реЙрди рдХрдм рдЪрд▓рд╛рдирд╛ рд╣реИред рдпрджрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрд░реЛрдВрдЯреИрдм рдореЗрдВ рдЗрд╕рдХрд╛ рдорд╛рди рд╣реЛрдЧрд╛
*
.
рдХрдардкреБрддрд▓реА 6.0 рдореЗрдВ рдХреНрд░реЙрди рдорд╛рдиреЛ
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ
рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рдЖрдо рдЧрд▓рддреА рд╣реИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдШреЛрд╖рдгрд╛. рдпрд╣ рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реЗ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрди рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛: рдПрдХ рд╣реА рдиреЛрдб рдХреЗ рд▓рд┐рдП рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдПрдХ рд╣реА рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП!
рдХрднреА-рдХрднреА рдПрдХ рд╣реА рдирд╛рдо рд╕реЗ, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ name
рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП:
package { 'ruby-mysql':
ensure => installed,
name => 'mysql',
provider => 'gem',
}
package { 'python-mysql':
ensure => installed,
name => 'mysql',
provider => 'pip',
}
рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - name
╤Г рд╕реЗрд╡рд╛, command
╤Г рдХрд╛рд░реНрдпрдХрд╛рд░реА, рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдореЗрдЯрд╛рдкреИрд░рд╛рдореАрдЯрд░
рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдЙрд╕рдХреА рдкреНрд░рдХреГрддрд┐ рдХреБрдЫ рднреА рд╣реЛред
рдореЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреА рдкреВрд░реА рд╕реВрдЪреА
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕реВрдЪреА:
- рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ тАФ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрд╕рд╛рдзрди рдХрд┐рди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
- рд╕реЗ рдкрд╣рд▓реЗ - рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред
- рд╕рджрд╕реНрдпрддрд╛ рдХреЗ - рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрд╕рд╛рдзрди рдХрд┐рди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
- рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ - рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рд╕реЗ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рдореЗрдЯрд╛рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рддреЛ рдПрдХ рдПрдХрд▓ рд╕рдВрд╕рд╛рдзрди рд▓рд┐рдВрдХ рдпрд╛ рд╡рд░реНрдЧрд╛рдХрд╛рд░ рдХреЛрд╖реНрдардХ рдореЗрдВ рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд▓рд┐рдВрдХ
рд╕рдВрд╕рд╛рдзрди рд▓рд┐рдВрдХ рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рдЧреИрд░-рдореМрдЬреВрдж рд╕рдВрд╕рд╛рдзрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреАред
рд▓рд┐рдВрдХ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрд╛рд░ (рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдореЗрдВ рдбрдмрд▓ рдХреЛрд▓рди рд╣реИрдВ, рддреЛ рдХреЛрд▓рди рдХреЗ рдмреАрдЪ рдирд╛рдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдлрд┐рд░ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдирд╛рдо (рдирд╛рдо рдХрд╛ рдорд╛рдорд▓рд╛) рдмрджрд▓рдирд╛ рдордд!)ред рдХреЛрдИ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╡рд░реНрдЧрд╛рдХрд╛рд░ рдХреЛрд╖реНрдардХ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг:
file { '/file1': ensure => present }
file { '/file2':
ensure => directory,
before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']
рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдФрд░ рд╕реВрдЪрдирд╛рдПрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд░рд▓ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реЛрддреА рд╣реИрдВред рд╡реИрд╕реЗ, рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ - рдЖрдк рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧреАред
рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕реВрдЪрдирд╛рдПрдВ рд╕рдХрд░реНрдордХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдЕрдзрд┐рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ:
- рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдХреЛрдИ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рддреЛ рдЙрд╕реЗ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрджреНрдпрддрди рдХреНрд░рд┐рдпрд╛рдПрдБ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВ - рдХрд╛рд░реНрдпрдХрд╛рд░реА рдЖрджреЗрд╢ рдЪрд▓рд╛рддрд╛ рд╣реИ, рд╕реЗрд╡рд╛ рд╕реЗрд╡рд╛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ, рдкреИрдХреЗрдЬ рдкреИрдХреЗрдЬ рдХреЛ рдкреБрдирдГ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдЕрджреНрдпрддрди рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
- рдкрдкреЗрдЯ рдХреЗ рдПрдХ рд░рди рдХреЗ рджреМрд░рд╛рди, рд╕рдВрд╕рд╛рдзрди рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪрдирд╛рдУрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдЪрдХреНрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
- рдпрджрд┐ рдкрдкреЗрдЯ рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд╕рдВрд╕рд╛рдзрди рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрддрд╛ рд╣реИред
- рдпрджрд┐ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрддрд╛ рд╣реИред
рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛
рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрджрд┐ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрди рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкрдкреЗрдЯ рдиреЛрдб рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрд╕рд╛рдзрди рдкрдЯреНрдЯрд┐рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ 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
рдЖрдк рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдХреЗ рджреМрд░рд╛рди рд╡рд░реНрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ - рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд - рд╣рд┐рдПрд░рд╛ рдпрд╛ рдИрдПрдирд╕реА рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ.
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдмреНрд▓реЙрдХ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рд╣реА рд╡рд░реНрдЧ рдПрдХ рдиреЛрдб рдкрд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдиреЛрдб рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЗ рдПрдХ рд╣реА рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕реНрд╡рдпрдВ рдХреЗ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PHP рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Avito рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:
- рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
- рдЖрдЗрдП рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред
- рд╣рдо 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' }
}
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдШреЛрд╖рдгрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдбрд┐рдлрд╛рдЗрди рдореЗрдВ рд╣реИред рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдерд┐рд░ рдирд╛рдо рд╡рд╛рд▓рд╛ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдиреЛрдб рдкрд░ рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕рд╕реЗ рдЦреБрдж рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ: рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП $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
- рдЗрд╕рдореЗрдВ рд░реВрдмреА рдХреЛрдб рд╣реИ
рдпрд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо
рдХрд┐рд╕реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рд╡рд░реНрдЧреЛрдВ, рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ) рдХреЛ рдЖрдкрдХреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдирд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрд╕рд╛рдзрди рдХреЗ рдирд╛рдо рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдХреЗ рдмреАрдЪ рд╕реАрдзрд╛ рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрдкреЗрдЯ рдЙрд╕ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рд╡рд┐рд╡рд░рдг рдвреВрдВрдвреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдирд╛рдордХрд░рдг рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрдкреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред
рдирд┐рдпрдо рд╕рд░рд▓ рд╣реИрдВ:
- рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рднреА рд╕рдВрд╕рд╛рдзрди рдореЙрдбреНрдпреВрд▓ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
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
тАФ рдпрд╣ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдирд╣реАрдВред
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рднреАрддрд░, рдЖрдк рд╡рд░реНрддрдорд╛рди рджрд╛рдпрд░реЗ рдореЗрдВ рд╕рднреА рдкрдкреЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрдкреЗрдЯ рдИрдЖрд░рдмреА рдФрд░ рдИрдкреАрдкреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
рдИрдкреАрдкреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг. рдИрдЖрд░рдмреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг.
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдИрдЖрд░рдмреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд░рдЪрдирд╛рдПрдБ:
<%= ╨Т╨л╨а╨Р╨Ц╨Х╨Э╨Ш╨Х %>
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдорд╛рди рдбрд╛рд▓реЗрдВ<% ╨Т╨л╨а╨Р╨Ц╨Х╨Э╨Ш╨Х %>
тАФ рдХрд┐рд╕реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ (рдЗрд╕реЗ рдбрд╛рд▓реЗ рдмрд┐рдирд╛)ред рд╕рд╢рд░реНрдд рдХрдерди (рдпрджрд┐) рдФрд░ рд▓реВрдк (рдкреНрд░рддреНрдпреЗрдХ) рдЖрдорддреМрд░ рдкрд░ рдпрд╣рд╛рдВ рдЬрд╛рддреЗ рд╣реИрдВред<%# ╨Ъ╨Ю╨Ь╨Ь╨Х╨Э╨в╨Р╨а╨Ш╨Щ %>
рдИрдЖрд░рдмреА рдореЗрдВ рднрд╛рд╡ рд░реВрдмреА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ (рдИрдЖрд░рдмреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдВрдмреЗрдбреЗрдб рд░реВрдмреА рд╣реИ)ред
рдореЗрдирд┐рдлреЗрд╕реНрдЯ рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ @
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо рдХреЗ рд▓рд┐рдП. рдирд┐рдпрдВрддреНрд░рдг рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╛рдкрди рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ -%>
.
рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореИрдВ рдЬрд╝реВрдХреАрдкрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╡рд░реНрдЧ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
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 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреА рд╣реЛрдЧреАред
рдпрд╣ рди рднреВрд▓реЗрдВ рдХрд┐ рддрдереНрдп рдЙрди рд╕рднреА рдиреЛрдбреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдкреЙрдкрдкреЗрдЯ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХрд╛ рдореЙрдбреНрдпреВрд▓ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЖрдкрдХреЗ рддрдереНрдп рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВред
#!/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
).
рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рдЪрд░
рддрдереНрдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рднреА рд╣реИ
- рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрдереНрдп - рд╡реЗрд░рд┐рдПрдмрд▓ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВ (рдЪреВрдВрдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдкреЙрдкрдкреЗрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдЬреЗрдВрдЯ рдХреЗрд╡рд▓ рдЙрд╕рдХрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗрд░рд┐рдПрдмрд▓ "рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп" рд╣реИрдВ): рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдирд╛рдо, рдХрд╛ рдирд╛рдо рд╣реЛрд╕реНрдЯ рдФрд░ рдбреЛрдореЗрди, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиред
- рд╕рд░реНрд╡рд░ рддрдереНрдп -рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░-рд╕рдВрд╕реНрдХрд░рдг, рдирд╛рдо, рд╕рд░реНрд╡рд░ рдЖрдИрдкреА рдкрддрд╛, рдкрд░реНрдпрд╛рд╡рд░рдгред
- рдПрдЬреЗрдВрдЯ рддрдереНрдп - рдЪрд░ рд╕реАрдзреЗ рдХрдардкреБрддрд▓реА-рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП, рди рдХрд┐ рдХрд╛рд░рдХ рджреНрд╡рд╛рд░рд╛ - рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╛рдо, рдПрдЬреЗрдВрдЯ рд╕рдВрд╕реНрдХрд░рдг, рдХрдардкреБрддрд▓реА рд╕рдВрд╕реНрдХрд░рдгред
- рдорд╛рд╕реНрдЯрд░ рдЪрд░ - рдкреИрдкреЗрдЯрдорд╛рд╕реНрдЯрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ (рдПрд╕рдЖрдИрд╕реА!)ред рдпрд╣ рд▓рдЧрднрдЧ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЕрдВрджрд░ рд╣реИ рд╕рд░реНрд╡рд░ рддрдереНрдп, рдкреНрд▓рд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
- рд╕рдВрдХрд▓рдХ рдЪрд░ - рдХрдВрдкрд╛рдЗрд▓рд░ рд╡реИрд░рд┐рдПрдмрд▓ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рджрд╛рдпрд░реЗ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ: рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдФрд░ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдереАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдирд┐рдЬреА рдХрдХреНрд╖рд╛рдПрдВ рд╕реАрдзреЗ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд 1: рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ рдФрд░ рдбрд┐рдмрдЧ рдХрд░реЗрдВ?
рд▓реЗрдЦ рдореЗрдВ рдХрдардкреБрддрд▓реА рдХреЛрдб рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдереЗ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПред рдЦреИрд░, рдореИрдВ рдЦреБрдж рдХреЛ рд╕рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдкрдкреЗрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдЬреЗрдВрдЯ рд╣реА рдХрд╛рдлреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╕рд░реНрд╡рд░ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдПрдЬреЗрдВрдЯ
рдХрдо рд╕реЗ рдХрдо рд╕рдВрд╕реНрдХрд░рдг 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
.
рд╕реЗрд╡рдХ
рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкреИрдкреЗрдЯрд╕рд░реНрд╡рд░ рдХреЗ рдкреВрд░реНрдг рд╕реЗрдЯрдЕрдк рдФрд░ рдЙрд╕ рдкрд░ рдХреЛрдб рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛; рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдиреЛрдбреНрд╕ (рдорд╛рди рд▓реАрдЬрд┐рдП, рд╕реМ рддрдХ)ред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдиреЛрдбреНрд╕ рдХреЛ рдЯреНрдпреВрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрдкреЗрдЯрд╕рд░реНрд╡рд░ рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдХреЛ рдмрдврд╝рд╛рдирд╛ рди рднреВрд▓реЗрдВ, рдЕрдиреНрдпрдерд╛ рд╕рд░реНрд╡рд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛ред
рдХреЛрдб рдкрд░рд┐рдирд┐рдпреЛрдЬрди - рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╢реАрдШреНрд░рддрд╛ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рджреЗрдЦреЗрдВ (r10k рдкрд░)[
рдкрд░рд┐рд╢рд┐рд╖реНрдЯ 2: рдХреЛрдбрд┐рдВрдЧ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢
- рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд░рдЦреЗрдВред
- рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд░рдЦреЗрдВ, рдиреЛрдбреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдирд╣реАрдВред
- рддрдереНрдпреЛрдВ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ.
- рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ ifs рди рдмрдирд╛рдПрдВред
- рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ - рдпрд╣ рдХрдХреНрд╖рд╛/рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рдЫрд┐рдкреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд░реНрдХ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред
рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реВрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдЗрдП рдкрд░рд┐рдЪрдп рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ Hiera, ENC рдФрд░ PuppetDB рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдХреЗрд╡рд▓ рдкрдВрдЬреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реА рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд╛рдордЧреНрд░реА рд╣реИ - рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рд▓реЗрдЦ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрдкрдХреА рд░реБрдЪрд┐ рд╣реЛрдЧреА рдЙрд╕ рдкрд░ рд╡реЛрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
- 59,1% рддрдХ рдЙрдиреНрдирдд рдХрдардкреБрддрд▓реА рдирд┐рд░реНрдорд╛рдг - рдХреБрдЫ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдХреА рдЪреАрдЬреЗрдВ: рд▓реВрдк, рдореИрдкрд┐рдВрдЧ рдФрд░ рдЕрдиреНрдп рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рд╕рдВрд╕рд╛рдзрди рд╕рдВрдЧреНрд░рд╛рд╣рдХ, рдирд┐рд░реНрдпрд╛рддрд┐рдд рд╕рдВрд╕рд╛рдзрди рдФрд░ рдХрдардкреБрддрд▓реА, рдЯреИрдЧ, рдкреНрд░рджрд╛рддрд╛рдУрдВ, рдЕрдореВрд░реНрдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрддрд░-рд╣реЛрд╕реНрдЯ рд╕рдВрдЪрд╛рд░ред13
- 31,8% рддрдХ "рдореИрдВ рдЕрдкрдиреА рдорд╛рдВ рдХрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реВрдВ" рдпрд╛ рд╣рдордиреЗ рдПрд╡рд┐рдЯреЛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдХрдИ рдкреЙрдкрдкреЗрдЯ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рджреЛрд╕реНрддреА рдХреИрд╕реЗ рдХреА, рдФрд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдкреЙрдкрдкреЗрдЯ рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рд╢рд╛рд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ред7
- 81,8% рддрдХ рд╣рдо рдХрдардкреБрддрд▓реА рдХреЛрдб рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдЙрдкрдХрд░рдг, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг, рдкрд░реАрдХреНрд╖рдг, рд╕реАрдЖрдИ/рд╕реАрдбреА.18
22 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдорддрджрд╛рди рдХрд┐рдпрд╛ред 9 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд░рд╣реЗред
рд╕реНрд░реЛрдд: www.habr.com