рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛: рдХрдардкреБрддрд▓реА рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ "рдЯреЗрдмрд▓ рдкрд░ рд▓рд┐рдЦрдирд╛" (рдпрд╛рдиреА рдЖрдВрддрд░рд┐рдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП) рдпрд╛ рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрд░реЛрдд рдХреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдХрдардкреБрддрд▓реА рдлреЛрд░реНрдЬ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВред рдмреЗрд╢рдХ, рдпрд╣ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП 2-3 рдЧреНрд░реЗрдб рд╕реНрдХреЗрдЪ рдХрд░рдирд╛ рдФрд░ рд╢рд╛рдВрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрднрд╡ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред RuNet рдореЗрдВ, рдХрдардкреБрддрд▓реА рд╡рд┐рдХрд╛рд╕ рдХрд┐рдЯ (рдЗрд╕рдХреЗ рдмрд╛рдж рдкреАрдбреАрдХреЗ ) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рдПрдХ рддрд░рд╣ рдХрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдЦ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ
рдПрдХ рдореЙрдбреНрдпреВрд▓ (рдпрд╛ рдмрд▓реНрдХрд┐, рджреЛ) рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдкреАрдбреАрдХреЗ рдХреА рдЦреЛрдЬ рдХреА, рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рджреЛрдиреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН:
- рдЕрдВрддрд┐рдо рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╕рдордп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
metadata.json
рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░реЗрдВ - рд╡рд┐рднрд┐рдиреНрди CI рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рдкреАрдврд╝реА рдЬреЛ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИ:
- рдорд╛рдгрд┐рдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рд░реВрдмреА рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
- рд░рдирд┐рдВрдЧ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ
- рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд - рдХрдардкреБрддрд▓реА рдлреЛрд░реНрдЬ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рд╕реНрд╡рдд: рднрд░рдирд╛
- рдпрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЯреИрдЧ-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рд▓реЗрдЦрди рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛
- рдХрдардкреБрддрд▓реА рдлреЛрд░реНрдЬ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯ
[PDK]
ред рдПрдХ рддрд┐рдкрд╣рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫрд╛ рд╣реИ!
рд╕рднреА рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдореИрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛!
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ
рдпрджрд┐ рдЖрдк рдкрдврд╝рдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЛ (рдпрд╛ рджреЛрдиреЛрдВ) рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдореЙрдбреНрдпреВрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдФрд░ xmlsimple ред рджреЛрдиреЛрдВ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреАрдбреАрдХреЗ рдФрд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдереЗред
рд╕рд╛рдордЧреНрд░реА
рдкреАрдбреАрдХреЗ рдХреНрдпрд╛ рд╣реИ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ:
рдХрдХреНрд╖рд╛рдУрдВ, рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реНрдг рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВ, рдФрд░ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдорд╛рдиреНрдп рдХрд░реЗрдВ рдЬреИрд╕реЗ рдЖрдк рдЬрд╛рддреЗ рд╣реИрдВред рдкреАрдбреАрдХреЗ рдПрдХ рдкреВрд░реНрдг рдореЙрдбреНрдпреВрд▓ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕, рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░, рдФрд░ рдХрд╛рд░реНрдп, рдФрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪрд╛ред рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдХрдИ рдХрдардкреБрддрд▓реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдорд╛рдиреНрдп рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рдореЗрдВ:
рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ, рдкреНрд░рдХрд╛рд░реЛрдВ, рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реНрдг рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреАрдбреАрдХреЗ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрдардкреБрддрд▓реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ? рдЦреИрд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕рд╛ рд╣реИред рдЙрд╕ рд╕рдордп рддрдХ рдЬрдм рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореБрдЭреЗ рдЗрд╕ рдЙрдкрдХрд░рдг рдкрд░ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рдерд╛, рдФрд░ рдЕрдм рдореИрдВ рдкреАрдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдЖрдВрддрд░рд┐рдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реВрдВред
рдореИрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдП, рдФрд░ рдЗрд╕рдореЗрдВ рдХреМрди рд╕реЗ рдЯреВрд▓ рдФрд░ рдХрдорд╛рдВрдб рд╣реИрдВред
рд╕реНрдерд╛рдкрдирд╛
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдкреГрд╖реНрда ред рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рдкрд░ рдкреАрдбреАрдХреЗ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХреА рд▓рдЧрднрдЧ рдЧрд╛рд░рдВрдЯреА рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЖрдкрдХрд╛ рдУрдПрд╕ рдирд╣реАрдВ рд╣реИ, рддреЛ рдлреЙрд░реНрдо рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдЧреЛрд▓ рдЪрдХреНрдХрд░ рд╣реИ:
gem install pdk
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреАрдбреАрдХреЗ рд╕рд┐рд░реНрдл рдПрдХ рд░рддреНрди рд╣реИ, рдФрд░ рдпрд╣ рдЙрд╕ рддрд░рд╣ рд╕реЗ рд╕реЗрдЯ рд╣реИред
рдкреАрдбреАрдХреЗ рд╕рд╛рдордЧреНрд░реА
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдбреАрдХреЗ рд░рддреНрдиреЛрдВ рдХреЗ рд╕реЗрдЯ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
рдЙрдкрдпреЛрдЧрд┐рддрд╛ | рд╡рд┐рд╡рд░рдг |
---|
рдореЗрдЯрд╛рдбрд╛рдЯрд╛-json-рдлрд╛рд╣рд╛ | рдХрдардкреБрддрд▓реА рд╢реИрд▓реА рдЧрд╛рдЗрдбреЛрдВ рдХреЗ рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рдореЗрдЯрд╛рдбреЗрдЯрд╛.рдЬрд╕рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ |
PDK | рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА (рдХрдХреНрд╖рд╛рдПрдВ, рдкреНрд░рдХрд╛рд░ рдЖрджрд┐) рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг |
рдХрдардкреБрддрд▓реА рдлрд╛рд╣рд╛ | рдХрдардкреБрддрд▓реА рднрд╛рд╖рд╛ рд╢реИрд▓реА рдЧрд╛рдЗрдб рдХреЗ рд▓рд┐рдП рдХрдардкреБрддрд▓реА рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ |
рдХрдардкреБрддрд▓реА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ | рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ |
puppetlabs_spec_helper | рдХрдардкреБрддрд▓реА рдХреЛрдб рдХреЗ рд╡рд┐рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдХ рдХрдХреНрд╖рд╛рдПрдВ, рддрд░реАрдХреЗ рдФрд░ рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ |
rspec-рдХрдардкреБрддрд▓реА | рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХрдардкреБрддрд▓реА рд╡реНрдпрд╡рд╣рд╛рд░, рдЬрдмрдХрд┐ рд╕рдВрд╕рд╛рдзрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (?) рдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИ |
rspec-рдХрдардкреБрддрд▓реА рддрдереНрдпреЛрдВ | рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдардкреБрддрд▓реА-рддрдереНрдпреЛрдВ рдХреЗ рд╕рд╛рде rspec-рдХрдардкреБрддрд▓реА рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ |
рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдБ
PDK рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЕрдм рдЖрдк рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рд░рд▓ pdk help
рдХрдорд╛рдВрдб рдЙрдкрд▓рдмреНрдз рдХрдорд╛рдВрдб pdk help
рдкреНрд░рджрд░реНрд╢рд┐рдд pdk help
ред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рд╕рднреА рдореЙрдбреНрдпреВрд▓ рд╣реИрдВред рддреЛ рдЪрд▓реЛ рдПрдХ рдирдпрд╛ рдмрдирд╛рдПрдБ:
$ pdk new module --template-url=https://github.com/puppetlabs/pdk-templates.git *** We need to create the metadata.json file for this module, so we're going to ask you 5 questions. *** [Q 1/5] If you have a name for your module, add it here. --> dummy [Q 2/5] If you have a Puppet Forge username, add it here. --> felixoid [Q 3/5] Who wrote this module? --> Mikhail f. Shiryaev [Q 4/5] What license does this module code fall under? --> MIT [Q 5/5] What operating systems does this module support? --> RedHat based Linux, Debian based Linux, Windows Metadata will be generated based on this information, continue? Yes pdk (INFO): Module 'dummy' generated at path '/tmp/dummy', from template 'https://github.com/puppetlabs/pdk-templates.git'.
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛.рдЬреЗрд╕рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╡рд╛рд▓ рдкреВрдЫрддреА рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдареАрдХ рд╡рд╣реА рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЧрд┐рдЯ рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╕рд╣рд╛рдпрдХ рдлрд╛рдЗрд▓реЗрдВред
рдПрдХ рдЫреЛрдЯреА рд╕реА рдЯрд┐рдкреНрдкрдгреА - рдордВрджрд┐рд░реЛрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ рдмрджрд▓рд╛рд╡ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреАрдбрд╝реЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕реНрдерд╛рдкрд┐рдд рдкреАрдбреАрдХреЗ рд╕реЗ рдЪреВрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдПрдХ рджреВрд╕рд░рд╛ рдкрдХреНрд╖ рднреА рд╣реИ: --template-url
рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, PDK рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ ~.pdk/cache/answers.json
рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░, рдХрд┐рд╕реА рднреА pdk
рдХрдорд╛рдВрдб рдХреЗ рдЖрдЧреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджреЗрд░реА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рддреЛ рдпрд╛ рддреЛ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ answers.json
рд╕реЗ рдирд┐рдХрд╛рд▓реЗрдВ, рдпрд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ metadata.json
. metadata.json
рдореЗрдВ рдмрджрд▓реЗрдВред
рдЖрдЗрдП рдЖрдЧреЗ рдХреЗ рдЪрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ рдЬреЛ рдкреАрдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирдпрд╛ рд╡рд░реНрдЧ
$ pdk new class dummy::class pdk (INFO): Creating '/tmp/dummy/manifests/class.pp' from template. pdk (INFO): Creating '/tmp/dummy/spec/classes/class_spec.rb' from template. $ cat manifests/class.pp # A description of what this class does # # @summary A short summary of the purpose of this class # # @example # include dummy::class class dummy::class { } $ cat spec/classes/class_spec.rb require 'spec_helper' describe 'dummy::class' do on_supported_os.each do |os, os_facts| context "on #{os}" do let(:facts) { os_facts } it { is_expected.to compile } end end end
рдпрд╣ рдХрдорд╛рдВрдб 2 рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ: рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд▓реНрдкрдирд╛-рдлрд╝рд╛рдЗрд▓ред рдореИрдВ рдмрд╛рдж рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред
рдирдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд_рдкреНрд░рдХрд╛рд░
$ pdk new defined_type type pdk (INFO): Creating '/tmp/dummy/manifests/type.pp' from template. pdk (INFO): Creating '/tmp/dummy/spec/defines/type_spec.rb' from template.
рд╕рднреА рд╕рдорд╛рди: рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрд╛рд░ рдФрд░ рдпреБрдХреНрддрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯред
рдирдпрд╛ рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдХрд╛рд░реНрдп
рдкреАрдбреАрдХреЗ рдПрдХ рдирдпрд╛ рдкреНрд░рджрд╛рддрд╛ рдпрд╛ рдХрд╛рд░реНрдп рднреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрдирдХреЗ рд╕рд╛рде рдирд┐рдХрдЯрддрд╛ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдЕрдкрдиреЗ рдЖрдк рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдХрдардкреБрддрд▓реА-рддрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд▓реЗрдЦрди рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛
рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ puppet strings
рдкреАрдбреАрдХреЗ рдЯреВрд▓рдХрд┐рдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд▓рд╛ рд╣реЛрдбрд╝ рд╣реИред рдпрджрд┐ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдиреЗ рдпрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд░рдЦреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ 2 рдореБрдЦреНрдп рддрд░реАрдХреЗ рд╣реИрдВ:
- рдЗрд╕реЗ HTML / Markdown / JSON рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдХреЛрдб рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд░рдЦреЗрдВред рдпрд╣
puppet string generate [--format FORMAT]
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ json
/ markdown
рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдпрд╣ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреНрд░реА рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЬрдбрд╝ рдореЗрдВ
REFERENCE.md
рдлрд╛рдЗрд▓ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдЬреЛ puppet strings generate --format markdown
рджреНрд╡рд╛рд░рд╛ puppet strings generate --format markdown
ред
- рдХреЛрдб рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдпрд╣ рдЬреАрдердм рдкрд░ рд╣реЛ) рдЬреАрдердм-рдкреЗрдЬред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдЖрдкрдХреЛ 3 рдХрдорд╛рдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдпрд╣ рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИред рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк @param
рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА, рдЖрдЙрдЯрдкреБрдЯ рдЕрднреА рднреА рдПрдХ рд╡рд░реНрдЧ / рдкреНрд░рдХрд╛рд░ / рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдиреНрдпреВрдирддрдо рд╡рд┐рд╡рд░рдг рд╣реЛрдЧрд╛ред рдореЗрд░реА рд╡рд┐рдирдореНрд░ рд░рд╛рдп рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдзрд┐рдХ рдЖрдХрд░реНрд╖рдХ рдмрдирд╛ рджреЗрдЧрд╛ред
рдмреЗрд╢рдХ, рдпрд╣ рд╕рдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реАрдЖрдИ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХрджрдо рд╕рд╣реА рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рд╣рд╛рде рдЕрднреА рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмреИрдХрд▓реЙрдЧ рдореЗрдВ рдзреВрд▓ рдЗрдХрдЯреНрдард╛ рд╣реЛ рд░рд╣реА рд╣реИред рдЕрдЧрд░ рдЕрдЪрд╛рдирдХ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреБрдЫ рдХрд╣рдирд╛ рд╣реИ - рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ: рдХрдо рд╕реЗ рдХрдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХрдардкреБрддрд▓реА-рддрд╛рд░ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж REFERENCE.md рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝реЗрдВред рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЕрд╕рдлрд▓ред
рдЦрд╛рдХрд╛ рдЕрдиреБрдХреВрд▓рди
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди pdk- рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрдбрд╝ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .sync.yml
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ .sync.yml
pdk update
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреИрд░рд╛рдореАрдЯрд░ рдореБрдЭреЗ "рд╕реНрдкрд░реНрд╢ рджреНрд╡рд╛рд░рд╛" рдЪреБрдирдирд╛ рдерд╛, рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЕрдХреНрд╕рд░ - рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реЗред рдпрд╣рд╛рдБ рдкреНрд░рд▓реЗрдЦрди рдХрднреА-рдХрднреА рдмрд╣реБрдд рдкрд┐рдЫрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рднрдВрдбрд╛рд░ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдВрдХ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП ред
рдореИрдВ рдмрд╣реБрдд рдЬрд▓реНрджреА рдЙрди рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрджрд╛рд╣рд░рдг рд╕реЗ .sync.yml
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓рд╛ рд╣реИ:
Gemfile
: рджреЛ Gemfile
рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛: рд╡рд┐рдХрд╛рд╕ рд╕рдореВрд╣ рдореЗрдВ Gemfile
; рдирд┐рд░реНрднрд░рддрд╛ рд╕рдореВрд╣ рдореЗрдВ xml- рд╕рд░рд▓ред рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, system_tests рд╕рдореВрд╣ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВредspec/spec_helper.rb
: spec/spec_helper.rb
рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдиреНрдпреВрдирддрдо рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдереНрд░реЗрд╢реЛрд▓реНрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдиреАрдЪреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред.travis.yml
: рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреЙрд▓рд┐рд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдмреЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдХрдардкреБрддрд▓реА-рдлреЛрд░реНрдЬ рдкрд░ рддреИрдпрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрди:
- рдХрдардкреБрддрд▓реА-рдлреЛрд░реНрдЬ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдкрд╛рд╕рд╡рд░реНрдбред рдЖрдк рдпрд╣рд╛рдВ рдЯреНрд░реИрд╡рд┐рд╕ рдХреЗ рд╕рд╛рде рдХрдардкреБрддрд▓реА-рдлреЛрд░реНрдЬ рдХреА рддреИрдирд╛рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
- рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ тЖТ рдХреЗрд╡рд▓ рд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рд╕рд╛рде рддреИрдирд╛рддреАред
- рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдардкреБрддрд▓реА-рдлреЛрд░реНрдЬ рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдмрд╢рд░реНрддреЗ рдХрд┐ рд╕реАрдЖрдИ рдХреЛ рд╡рд░реНрдг "v" рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЯреИрдЧ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
Rakefile
: рд▓рд┐рдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдкрд╡рд╛рдж рдЬреЛрдбрд╝реЗред
рд╡рд┐рднрд┐рдиреНрди рд╕реАрдЖрдИ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдкреАрдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рд╕рддреНрдпрд╛рдкрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рд╢рд┐рдХреНрд╖рдХ, рдЯреНрд░реИрд╡рд┐рд╕ рдФрд░ рдЧрд┐рдЯрд▓реИрдм-рд╕реАрдЖрдИ рдореЗрдВред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдареАрдХ рд╕реЗ рддреИрдпрд╛рд░ рд╣реИ, рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, .sync.yml
ред рдореЗрд░реА рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдмрд╕ рдЬреЛ рднреА рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдмреЛрдирд╕: рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ, рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рдпрд╣ рдмрд┐рдВрджреБ рдЙрд╕ рдореВрд▓ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдХрд╛рдлреА рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд▓рдЧрддреА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯреНрд╕ рдФрд░ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдХрдХреНрд╖рд╛рдПрдВ, рдкреНрд░рдХрд╛рд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдирд╣реАрдВ рднреВрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдирд╣реАрдВ рд╣реИ)ред рдЪреВрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ 2 рдЪреАрдЬреЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ:
- рдкрд░рд┐рд╡рд░реНрддрди рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддреЗ (рдпрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди)
- рдЖрдкрдХреЗ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рд╡рд╣реА рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдХрдардкреБрддрд▓реА-рдХрдардкреБрддрд▓рд┐рдпреЛрдВ рдХреЛ рдХрдардкреБрддрд▓реА- rspec рдирд╛рдордХ rspec рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧреЛрдВ , рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред рдирд┐рдХрдЯ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдордд рдмрдиреЛ, рдЕрдиреНрдп рдЕрдиреБрднрд╛рдЧ рд╣реИрдВред
рд░реВрдмреА рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд┐рдирд╛, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдпрджрд┐ рдХрдХреНрд╖рд╛рдПрдВ рдпрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдП рдЧрдП рдереЗ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ pdk new <thing>
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдлрд┐рд░ *_spec.rb
рдлрд╝рд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рддреЛ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ dummy::class
ред рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ spec/classes/class_spec.rb
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
require 'spec_helper' describe 'dummy::class' do on_supported_os.each do |os, os_facts| context "on #{os}" do let(:facts) { os_facts } it { is_expected.to compile } end end end
рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ pdk test unit
рдЪрд▓рд╛рдХрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдЗрд╕рдХреА рд▓рдЧрднрдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЕрдм рдпрд╣ рдЙрдЪрд┐рдд рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ is_expected
class_spec.rb
рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрдХреНрд╖рд╛ рдореЗрдВ file {'/file/path': }
рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрди, рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
it do is_expected.to contain_file('/file/path').with( 'ensure' => 'file', 'mode' => '0644' ) end
рдЖрдк let(:params) { {'param1' => 'value'} }
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдХреНрд╖рд╛ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ context 'some description' {}
рдХреЗ рдЪрдпрдирд┐рдд рдЦрдВрдбреЛрдВ context 'some description' {}
рдЕрдВрджрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд░рдЦрдХрд░ рд╡рд┐рднрд┐рдиреНрди рдЗрдирдкреБрдЯ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЖрдк рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмреАрдЪ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рджреЛрдиреЛрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдпрджрд┐ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐ рдХрдХреНрд╖рд╛ рдХреА рдШреЛрд╖рдгрд╛ рдореЗрдВ inherits
, рддреЛ рдЖрдк is_expected.to contain_class('parent_class_name')
рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред is_expected.to contain_class('parent_class_name')
ред рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ: рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рддрдереНрдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
context 'with Debian' do let(:facts) do { os: { architecture: 'amd64', distro: { codename: 'stretch', id: 'Debian', release: { full: '9.6', major: '9', minor: '6', }, }, family: 'Debian', name: 'Debian', release: { full: '9.6', major: '9', minor: '6', }, selinux: { enabled: false, }, }, osfamily: 'Debian', } end it { is_expected.to something } end
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдиреЛрдЯрд┐рд╕ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рд╣рд░ рдЪреАрдЬ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдиреЗ рдореБрдЭреЗ рдПрдХ рдмрд╛рд░ рдорджрдж рдХреА, рдЬрдм рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрд╛рд▓ рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╢реАрд░реНрд╖ рд╡рд░реНрдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛: рдЙрдиреНрд╣реЛрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝рддреА рд╣реИ, рдФрд░ рдкреВрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рд╛ред
рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрдЬрд╛рдп
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЗрдЦ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд╡рд░ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдмрд╣реБрдд рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВ рдХрд┐ рдкрдкреЗрдЯ рдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдФрд░ рдкреАрдбреАрдХреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдзрдиреНрдпрд╡рд╛рдж рдкреНрд░рдХрдЯ рдХрд┐рдпрд╛ред рд░реВрдЯреАрди рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИрдВ, рдЬрд╣рд╛рдВ рднреА рд╕рдВрднрд╡ рд╣реЛ, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЛрдХрдкреНрд░рд┐рдп CI рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдУрд╡рд░рд╣реЗрдб рдЬреИрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧ рдЕрдкреЗрдХреНрд╖рд┐рдд рдлрд▓ рдирд╣реАрдВ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдпрджрд┐ рдЖрдк рдкреАрдбреАрдХреЗ рдХреЗ рдмрд┐рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдмрд┐рдирд╛ рд╡рд┐рдХрд╛рд╕ рджрд╛рдврд╝реА PDK | рдкреАрдбреАрдХреЗ рд╡рд┐рдХрд╛рд╕ |
---|
 |  |
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ, рд░рдЦреЛ, рдЕрдкрдиреЗ рдФрд░ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдЖрд╕рд╛рди рдмрдирд╛рдУред рдореБрдЭреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдкрд░рдорд╛рдгреБрдХрд░рдг рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣реЛ!