рдЙрддреНрддрд░рдпреЛрдЧреНрдп рдореВрд▓ рдмрд╛рддреЗрдВ, рдЬрд┐рдирдХреЗ рдмрд┐рдирд╛ рдЖрдкрдХреА рдкреНрд▓реЗрдмреБрдХ рдЪрд┐рдкрдЪрд┐рдкреЗ рдкрд╛рд╕реНрддрд╛ рдХреА рдПрдХ рдЧрд╛рдВрда рдмрди рдЬрд╛рдПрдВрдЧреА

рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдПрдиреНрд╕рд┐рдмрд▓ рдХреЛрдб рдХреА рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдореАрдХреНрд╖рд╛рдПрдБ рдХрд░рддрд╛ рд╣реВрдБ рдФрд░ рд╕реНрд╡рдпрдВ рднреА рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрддрд╛ рд╣реВрдБред рдЧрд▓рддрд┐рдпреЛрдВ (рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рдФрд░ рдореЗрд░реА рдЕрдкрдиреА) рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░реЛрдВ рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдореБрдЦреНрдп рдЧрд▓рддреА рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдЬреЛ Ansible рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд░рддреЗ рд╣реИрдВ - рд╡реЗ рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬреЛрдВ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдЬрдЯрд┐рд▓ рдЪреАрдЬреЛрдВ рдореЗрдВ рдЙрд▓рдЭ рдЬрд╛рддреЗ рд╣реИрдВред

рдЗрд╕ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЕрдиреНрдпрд╛рдп рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдиреНрд╕рд┐рдмрд▓ рдХрд╛ рдкрд░рд┐рдЪрдп рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬреЛ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ, рдпрд╣ рдордиреБрд╖реНрдпреЛрдВ рдХреА рдкреБрдирд░реНрдХрдерди рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рджреАрд░реНрдШрдкрд╛рда рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдХреНрд╖рд░ рд╣реИрдВ рдФрд░ рдХреЛрдИ рдЪрд┐рддреНрд░ рдирд╣реАрдВ рд╣реИред

рдкрд╛рдардХ рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрдорд▓рд╛ рдХреА рдХрдИ рд╣рдЬрд╛рд░ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦреА рдЬрд╛ рдЪреБрдХреА рд╣реИрдВ, рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди "рдХрд┐рд╕реА рддрд░рд╣ рд╕рдм рдХреБрдЫ рдЯреЗрдврд╝рд╛ рд╣реИред"

рдЯрд╛рдЗрдЯрд▓

рдПрдХ Ansible рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рдЧрд▓рддреА рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдирд╛рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИред рдПрдХ рдЬреАрд╡рдВрдд рдЙрджрд╛рд╣рд░рдг: рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдпрд╣ рдХрд╣рддрд╛ рджрд┐рдЦ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЙрд╕рдиреЗ рдПрдиреНрд╕рд┐рдмрд▓ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рд╣реИ, рд╡рд╣ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рд╕рдХрд╛ рдХрд┐ "рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдХреМрди рд╕реЗ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ?" рдФрд░ рдЬрдм рдореИрдВрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ "рдЙрддреНрддрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ рдХрд┐ рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдЦреЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ," рддреЛ рдпрд╣ рдЕрдкрдорд╛рдирдЬрдирдХ рдЯрд┐рдкреНрдкрдгреА рдЖрдИ рдХрд┐ "рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ"ред рд▓реЛрдЧ рдкреИрд╕реЗ рдХреЗ рд▓рд┐рдП Ansible рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред

рддреЛ рдЖрдЗрдП рдХреБрдЫ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ: рдЗрд╕реЗ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣ рдЬрд╛рдирддреЗ рд╣реЛрдВ, рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВ, рдХреНрдпреЛрдВрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рддреЗ рд╕рдордп рдЖрдкрдиреЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдерд╛ред

ansible-playbook рдкреНрд▓реЗрдмреБрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд▓реЗрдмреБрдХ yml/yaml рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ:

---
- hosts: group1
  roles:
    - role1

- hosts: group2,group3
  tasks:
    - debug:

рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдПрд╣рд╕рд╛рд╕ рд╣реЛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдПрдХ рдкреНрд▓реЗрдмреБрдХ рд╣реИред рд╣рдо рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рднреВрдорд┐рдХрд╛рдПрдБ рдХрд╣рд╛рдБ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдп рдХрд╣рд╛рдБ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЦреЗрд▓ рдХрд╣рд╛рдБ рд╣реИ? рдФрд░ рдирд╛рдЯрдХ рдФрд░ рднреВрдорд┐рдХрд╛ рдпрд╛ рдирд╛рдЯрдХрдкреБрд╕реНрддрдХ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?

рдпрд╣ рд╕рдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╣реИ. рдФрд░ рд╡реЗ рдЗрд╕реЗ рдЪреВрдХ рдЬрд╛рддреЗ рд╣реИрдВ. рд╢реБрд░реБрдЖрддреА - рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рд░рд╣реЗрдЧрд╛ред рдЕрдиреБрднрд╡реА - рдХреНрдпреЛрдВрдХрд┐ "рддреБрдЪреНрдЫ рдмрд╛рддреЗрдВ"ред рдпрджрд┐ рдЖрдк рдЕрдиреБрднрд╡реА рд╣реИрдВ, рддреЛ рд╣рд░ рдЫрд╣ рдорд╣реАрдиреЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдЗрди рдкреГрд╖реНрдареЛрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкрдврд╝реЗрдВ, рдФрд░ рдЖрдкрдХрд╛ рдХреЛрдб рдХрдХреНрд╖рд╛-рдЕрдЧреНрд░рдгреА рдмрди рдЬрд╛рдПрдЧрд╛ред

рддреЛ, рдпрд╛рдж рд░рдЦреЗрдВ: рдкреНрд▓реЗрдмреБрдХ рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд▓реЗ рдФрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ import_playbook.
рдпрд╣ рдПрдХ рдирд╛рдЯрдХ рд╣реИ:

- hosts: group1
  roles:
    - role1

рдФрд░ рдпрд╣ рднреА рдПрдХ рдФрд░ рдирд╛рдЯрдХ рд╣реИ:

- hosts: group2,group3
  tasks:
    - debug:

рдЦреЗрд▓ рдХреНрдпрд╛ рд╣реИ? рд╡рд╣ рдХреНрдпреЛрдВ рд╣реИ?

рдкреНрд▓реЗ рдХрд┐рд╕реА рдкреНрд▓реЗрдмреБрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдореБрдЦ рддрддреНрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд▓реЗ рдФрд░ рдУрдирд▓реА рдкреНрд▓реЗ рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░/рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ delegate_to, рд╕реНрдерд╛рдиреАрдп рд▓реБрдХрдЕрдк рдкреНрд▓рдЧрдЗрдиреНрд╕, рдиреЗрдЯрд╡рд░реНрдХ-рд╕реАрдПрд▓рдЖрдИ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдЬрдВрдк рд╣реЛрд╕реНрдЯ рдЗрддреНрдпрд╛рджрд┐ред рд╡реЗ рдЖрдкрдХреЛ рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдУ. рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрддреБрд░ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рд╣реИрдВ, рдФрд░ рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдирд╣реАрдВ рд╣реИрдВред рдФрд░ рд╣рдо рдЙрди рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬрд╝реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЬрд╛рдирдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдк "рдХреБрдЫ" "рдХрд╣реАрдВ" рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд╛рдЯрдХ рд▓рд┐рдЦреЗрдВред рдХреЛрдИ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ. рдореЙрдбреНрдпреВрд▓ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВред рдЖрдк рдЗрд╕реЗ рд▓реАрдЬрд┐рдП рдФрд░ рдирд╛рдЯрдХ рд▓рд┐рдЦрд┐рдП. рдЬрд┐рд╕рдореЗрдВ, рд╣реЛрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЖрдк рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ/рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ - рдХреНрдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред

рд╕рд░рд▓, рд╕рд╣реА? рдпрд╣ рдЕрдиреНрдпрдерд╛ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬрдм рд▓реЛрдЧреЛрдВ рдХреЛ рдЦреЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рддреЛ рд╡рд╣ рд╣реИ "рднреВрдорд┐рдХрд╛ рдЬреЛ рд╕рдм рдХреБрдЫ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред" рдореИрдВ рдПрдХ рдРрд╕реА рднреВрдорд┐рдХрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдЬреЛ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд░реНрд╡рд░ рдФрд░ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗред

рдПрдХ рдЖрджрд░реНрд╢ рдЙрджрд╛рд╣рд░рдг рдирд┐рдЧрд░рд╛рдиреА рд╣реИ. рдореИрдВ рдПрдХ рдирд┐рдЧрд░рд╛рдиреА рднреВрдорд┐рдХрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧреАред рдирд┐рдЧрд░рд╛рдиреА рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рдЧрд░рд╛рдиреА рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рд╕реМрдВрдкреА рдЧрдИ рд╣реИ (рдЦреЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░)ред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЙрди рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдкреИрдХреЗрдЬ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдо рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░реЗрдВ? рдЖрдкрдХреЛ iptables рдХреЛ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛. рдкреНрд░рддрд┐рдирд┐рдзрд┐? рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ DBMS рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд▓рд┐рдЦрдиреЗ/рд╕рд╣реА рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдирд┐рдзрд┐! рдФрд░ рдЕрдЧрд░ рдХреНрд░рд┐рдПрдЯрд┐рд╡рд┐рдЯреА рдХреА рдХрдореА рд╣реИ рддреЛ рдЖрдк рдПрдХ рдбреЗрд▓рд┐рдЧреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ include_role рд╕рдореВрд╣реЛрдВ рдХреА рд╕реВрдЪреА рдкрд░ рдФрд░ рдЕрдВрджрд░ рдПрдХ рдЯреНрд░рд┐рдХреА рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рдореЗрдВ include_role рдЖрдк рдФрд░ рдЕрдзрд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ delegate_to рджреЛрдмрд╛рд░рд╛ред рдФрд░ рд╣рдо рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ...

рдПрдХ рдЕрдЪреНрдЫреА рдЗрдЪреНрдЫрд╛ - рдПрдХ рдПрдХрд▓ рдирд┐рдЧрд░рд╛рдиреА рднреВрдорд┐рдХрд╛ рд╣реЛ, рдЬреЛ "рд╕рдмрдХреБрдЫ рдХрд░рддреА рд╣реИ" - рд╣рдореЗрдВ рдкреВрд░реНрдг рдирд░рдХ рдореЗрдВ рд▓реЗ рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рдирд┐рдХрд▓рдиреЗ рдХрд╛ рдЕрдХреНрд╕рд░ рдПрдХ рд╣реА рд░рд╛рд╕реНрддрд╛ рд╣реЛрддрд╛ рд╣реИ: рд╕рдм рдХреБрдЫ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рд▓рд┐рдЦрдирд╛ред

рдпрд╣рд╛рдВ рдЧрд▓рддреА рдХрд╣рд╛рдВ рд╣реБрдИ? рдЬреИрд╕реЗ рд╣реА рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣реЛрд╕реНрдЯ "x" рдореЗрдВ рдХреБрдЫ рди рдЬреЛрдбрд╝реЗрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓рд┐рдЦреЗрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд╕рд╛рде рднреАред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ! рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ DRY рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреИрд╕рд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреАред

рдпрд╣реАрдВ рдкрд░ рдПрдХ рдФрд░ рдЧрдВрднреАрд░ рдЧрд▓рддреА рдЫрд┐рдкреА рд╣реБрдИ рд╣реИред рдПрдХ рддреНрд░реБрдЯрд┐ рдЬрд┐рд╕рдиреЗ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рд╣рдиреАрдп рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ (рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ) рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрдпрд╛рд╡рд╣ рдмрдирд╛ рджрд┐рдпрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд▓реЗрдЦрдХ рднреА рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛ред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рднрдЧрд╡рд╛рди рди рдХрд░реЗ рдХрд┐ рдЖрдк рдХреБрдЫ рднреА рдмрджрд▓реЗрдВред

рддреНрд░реБрдЯрд┐ рдпрд╣ рд╣реИ: рднреВрдорд┐рдХрд╛ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдЗрд╕ рд╕рд╛рджреГрд╢реНрдп рдиреЗ рдЗрддрдиреА рд╕рд╛рд░реА рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрддреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреЗрдЦрдХрд░ рдмрд╣реБрдд рджреБрдЦ рд╣реЛрддрд╛ рд╣реИред рднреВрдорд┐рдХрд╛ рдХреЛрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ. рд╡рд╣ рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рдФрд░ рдЦреЗрд▓-рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓реЗ рд╕рдХрддреАред рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдПрдВ рдХрд┐ рдЦреЗрд▓ рдХреНрдпрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рд╕рд╣реА рд╣реИрдВ. рдкреНрд▓реЗ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЗрд╕рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ) рдХрд┐ рдХрд┐рд╕ рд╣реЛрд╕реНрдЯ рдкрд░ рдХреМрди рд╕реЗ рдХрд╛рд░реНрдп рдФрд░ рднреВрдорд┐рдХрд╛рдПрдБ рдирд┐рднрд╛рдиреА рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЛ рдХрд┐рд╕реА рднреВрдорд┐рдХрд╛ рдореЗрдВ рд╕реМрдВрдкрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЧрдгрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА, рддреЛ рдЖрдк рд╕реНрд╡рдпрдВ рдХреЛ (рдФрд░ рд╡рд╣ рдЬреЛ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛) рдПрдХ рджрдпрдиреАрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдмрд░реНрдмрд╛рдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рднреВрдорд┐рдХрд╛ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд░рддреА рдХрд┐ рдЙрд╕реЗ рдХрд╣рд╛рдВ рдирд┐рднрд╛рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдирд┐рд░реНрдгрдп рдЦреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рднреВрдорд┐рдХрд╛ рд╡рд╣реА рдХрд░рддреА рд╣реИ рдЬреЛ рдЙрд╕реЗ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЙрд╕реЗ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Ansible рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рдЦрддрд░рдирд╛рдХ рдХреНрдпреЛрдВ рд╣реИ рдФрд░ COBOL Ansible рд╕реЗ рдмреЗрд╣рддрд░ рдХреНрдпреЛрдВ рд╣реИ рд╣рдо рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдФрд░ рдЬрд┐рдВрдЬрд╛ рдХреЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рдмрд╛рдд рдХрд╣реЗрдВ - рдЖрдкрдХреА рдкреНрд░рддреНрдпреЗрдХ рдЧрдгрдирд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдПрдХ рдЕрдорд┐рдЯ рдирд┐рд╢рд╛рди рдЫреЛрдбрд╝ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рд╣реА рджреЛ "рдирд┐рд╢рд╛рди" рдЖрдкрд╕ рдореЗрдВ рдорд┐рд▓реЗ, рд╕рдм рдХреБрдЫ рдЦрд╝рддреНрдо рд╣реЛ рдЧрдпрд╛ред

рд╡реНрдпрдВрдЧреНрдпрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдВ: рднреВрдорд┐рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдЦрд╛рдУ delegate_to рдФрд░ рдЗрд╕рдХрд╛ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рд╣реИред рдЦрд╛рдУ meta: end host/play. рд▓реЗрдХрд┐рди! рдпрд╛рдж рд░рдЦреЗрдВ рд╣рдо рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЗрдВ рдкрдврд╝рд╛рддреЗ рд╣реИрдВ? рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛ delegate_to. рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ Ansible рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрд┐рд╕реЗ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдбреАрдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рддреЛ, рдПрдХ рдмрд╛рд░ рдлрд┐рд░:

рдкреНрд▓реЗ рдФрд░ рдХреЗрд╡рд▓ рдкреНрд▓реЗ рд╣реА рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдореЗрдЬрдмрд╛рди рдкрд░ рдХреНрдпрд╛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдордиреЗ рдЦреЗрд▓ рдФрд░ рднреВрдорд┐рдХрд╛ рдХреЗ рдмреАрдЪ рд╡рд┐рд░реЛрдз рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред рдЕрдм рдХрд╛рд░реНрдп рдмрдирд╛рдо рднреВрдорд┐рдХрд╛ рд╕рдВрдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдп рдФрд░ рднреВрдорд┐рдХрд╛рдПрдБ

рдЦреЗрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

- hosts: somegroup
  pre_tasks:
    - some_tasks1:
  roles:
     - role1
     - role2
  post_tasks:
     - some_task2:
     - some_task3:

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдлреВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рдФрд░ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ foo: name=foobar state=present. рдореБрдЭреЗ рдпрд╣ рдХрд╣рд╛рдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рдкреВрд░реНрд╡ рдореЗрдВ? рдбрд╛рдХ? рдХреЛрдИ рднреВрдорд┐рдХрд╛ рдмрдирд╛рдПрдБ?

...рдФрд░ рдХрд╛рд░реНрдп рдХрд╣рд╛рдВ рдЧрдП?

рд╣рдо рдлрд┐рд░ рд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдкреНрд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕ред рдпрджрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рддреИрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╛рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХрд╛ рдкрд░рд┐рдгрд╛рдо "рдЕрд╕реНрдерд┐рд░" рд╣реЛрдЧрд╛ред

рдкреНрд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕: рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджреЗрд╢, рдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдкреНрд░реА_рдЯрд╛рд╕реНрдХ, рдХрд╛рд░реНрдп, рднреВрдорд┐рдХрд╛рдПрдВ, рдкреЛрд╕реНрдЯ_рдЯрд╛рд╕реНрдХ рдЕрдиреБрднрд╛рдЧред рдЦреЗрд▓ рдХреЗ рдмрд╛рдХреА рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдм рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ.

рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХрд╛ рдХреНрд░рдо: pre_tasks, roles, tasks, post_tasks. рдЪреВрдБрдХрд┐ рд╢рдмреНрджрд╛рд░реНрде рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреНрд░рдо рдмреАрдЪ рдХрд╛ рд╣реИ tasks ╨╕ roles рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдБ рдХрд╣рддреА рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ tasks, рдХреЗрд╡рд▓ рдпрджрд┐ рдирд╣реАрдВ rolesред рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ roles, рдлрд┐рд░ рд╕рднреА рд╕рдВрд▓рдЧреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ pre_tasks/post_tasks.

рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╢рдмреНрджрд╛рд░реНрде рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдкрд╣рд▓рд╛ pre_tasks, рддрдм roles, рддрдм post_tasks.

рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЕрднреА рднреА рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ: рдореЙрдбреНрдпреВрд▓ рдХреЙрд▓ рдХрд╣рд╛рдВ рд╣реИ? foo рд▓рд┐рдЦрдирд╛? рдХреНрдпрд╛ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рднреВрдорд┐рдХрд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? рдпрд╛ рдХреНрдпрд╛ рд╣рд░ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрдЯреА рднреВрдорд┐рдХрд╛ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ? рдФрд░ рдЕрдЧрд░ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рддреЛ рдлрд┐рд░ рдХрд╣рд╛рдВ рд▓рд┐рдЦреВрдВ-рдкреВрд░реНрд╡ рдореЗрдВ рдпрд╛ рдмрд╛рдж рдореЗрдВ?

рдпрджрд┐ рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдХреЛрдИ рддрд░реНрдХрд╕рдВрдЧрдд рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдХреА рдХрдореА рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИ, рдпрд╛рдиреА рд╡рд╣реА "рдЕрд╕реНрдерд┐рд░ рдиреАрдВрд╡"ред рдЖрдЗрдП рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рд╢реНрди: рдпрджрд┐ рдЦреЗрд▓ рд╣реИ pre_tasks ╨╕ post_tasks (рдФрд░ рдХреЛрдИ рдХрд╛рд░реНрдп рдпрд╛ рднреВрдорд┐рдХрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВ), рдпрджрд┐ рдореИрдВ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реВрдБ рддреЛ рдХреНрдпрд╛ рдХреБрдЫ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ post_tasks рдореИрдВ рдЗрд╕реЗ рдЕрдВрдд рддрдХ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛ pre_tasks?

рдирд┐рдГрд╕рдВрджреЗрд╣, рдкреНрд░рд╢реНрди рдХреЗ рд╢рдмреНрджреЛрдВ рд╕реЗ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛?

... рд╣реИрдВрдбрд▓рд░ред рдореВрд▓ рдмрд╛рддреЗрдВ рдкрдврд╝рдиреЗ рд╕реЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрдереНрдп рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдмрд╛рдж рд╕рднреА рд╣реИрдВрдбрд▓рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлреНрд▓рд╢ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рд╡реЗред рд╕реЗ рд╕рднреА рдХрд╛рд░реНрдп pre_tasks, рдлрд┐рд░ рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдлрд┐рд░ рд╕рднреА рднреВрдорд┐рдХрд╛рдПрдБ рдФрд░ рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдЬрд┐рдиреНрд╣реЗрдВ рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдмрд╛рдж post_tasks рдФрд░ рдЙрдирдХреЗ рд╕рдВрдЪрд╛рд▓рдХ.

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ post_tasks ╨▓ pre_tasks, рддреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рд╣реИрдВрдбрд▓рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдореЗрдВ pre_tasks рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ post_tasks рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ pre_tasks рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ рдХрд┐ "рднреЗрдЬрдиреЗ" рдХреЗ рд╕рдордп рд╕рд░реНрд╡рд░ рдЕрднреА рднреА рдЪрд╛рд▓реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рдЖрдЗрдП рдлрд┐рд░ рд╕реЗ рд╕реЛрдЪреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ pre_tasks ╨╕ post_tasks? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рднреВрдорд┐рдХрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬреЗрдВ (рд╣реИрдВрдбрд▓рд░ рд╕рд╣рд┐рдд) рдкреВрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдП post_tasks рд╣рдореЗрдВ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди (рд╣реИрдВрдбрд▓рд░ рд╕рд╣рд┐рдд) рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдПрдХ рдЪрддреБрд░ рдЕрдиреНрд╕рд┐рдмрд▓ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣рдореЗрдВ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред meta: flush_handlers, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЦреЗрд▓ рдореЗрдВ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХреНрд░рдо рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдлреНрд▓рд╢_рд╣реИрдВрдбрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрдЯрд╛: рдлреНрд▓рд╢_рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЪреАрдЬреЗрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╣рдореЗрдВ рдЕрдЬреАрдм рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ when ╤Г block рд╡рдЧреИрд░рд╣ред рдЬрд┐рддрдирд╛ рдмреЗрд╣рддрд░ рдЖрдк рдЙрддреНрддрд░ рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ рдЖрдк "рдореБрд╢реНрдХрд┐рд▓" рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди - рдкреВрд░реНрд╡/рднреВрдорд┐рдХрд╛рдУрдВ/рдкрдж рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ - рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред

рдФрд░, рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ 'рдлреВ' рдкрд░ред рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╣рд╛рдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рдкреВрд░реНрд╡, рдкрдж рдпрд╛ рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ? рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдлреВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рд╡реЗ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ foo рдХреЛ рдкреНрд░реА рдпрд╛ рдкреЛрд╕реНрдЯ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЗрди рдЕрдиреБрднрд╛рдЧреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рд╣реИ - рдХреЛрдб рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ред

рдЕрдм "рднреВрдорд┐рдХрд╛ рдпрд╛ рдХрд╛рд░реНрдп" рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЖрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣рд╛ рд╣реИ - рдпрджрд┐ рд╡рд╣рд╛рдВ рдХрд╛рд░реНрдп рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рднреВрдорд┐рдХрд╛рдПрдБ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рднреВрдорд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдПрдХ рдХрд╛рд░реНрдп рд╕реЗ рднреА)ред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдиреНрд╕рд┐рдмрд▓ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕рдордЭрдиреЗ рд╕реЗ рд░реБрдЪрд┐ рдХреЗ рдкреНрд░рддреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрдЪрд┐рдд рдЙрддреНрддрд░ рдорд┐рд▓рддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдп рдФрд░ рднреВрдорд┐рдХрд╛рдПрдБ (рднрд╛рдЧ рджреЛ)

рдЕрдм рдЖрдЗрдП рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ рдЬрдм рдЖрдк рдПрдХ рдкреНрд▓реЗрдмреБрдХ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдкрдХреЛ рдлреВ, рдмрд╛рд░ рдФрд░ рдмрд╛рдЬрд╝ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рдХреНрдпрд╛ рдпреЗ рддреАрди рдХрд╛рд░реНрдп, рдПрдХ рднреВрдорд┐рдХрд╛ рдпрд╛ рддреАрди рднреВрдорд┐рдХрд╛рдПрдБ рд╣реИрдВ? рдкреНрд░рд╢реНрди рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдЖрдкрдХреЛ рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рднреВрдорд┐рдХрд╛рдПрдБ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЬрдм рдЖрдк рдХрд╛рд░реНрдп рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рднреВрдорд┐рдХрд╛рдПрдБ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?... рднреВрдорд┐рдХрд╛ рдХреНрдпрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЧрд▓рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ (рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА) рдпрд╣ рд╕реЛрдЪрдирд╛ рд╣реИ рдХрд┐ рдПрдХ рднреВрдорд┐рдХрд╛ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░рд╣ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдг рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ? рдпрд╣ рдЗрдирдкреБрдЯ рддрд░реНрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рдЗрдб рдХрд╛рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдЕрдм, рдзреНрдпрд╛рди рджреЗрдВ. рдЗрд╕рд╕реЗ рднреВрдорд┐рдХрд╛ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╣рдореЗрд╢рд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдПрдиреНрд╕рд┐рдмрд▓ рдХрд╛ рд╕рд╛рд░ рд╣реИ - рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдкреИрджрд╛ рдХрд░рдирд╛ред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдХреЛрдИ рдкрд╛рд░реНрд╢реНрд╡ рдХрд╛рд░рдг рд╣реИрдВ? рдкреНрд░рд╛рдердорд┐рдХ. рд▓реЗрдХрд┐рди "рдПрдХ рдорд╛рди рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЙрд╕реЗ рд▓реМрдЯрд╛рдПрдБ" рдХреЗ рд╕рд╛рде - рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдХрд┐рд╕реА рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рди рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рдЖрдк рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП vars рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рднреВрдорд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд▓реЗрдмреБрдХ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд╕рд╛рде рднреА (set_fact/register). рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ "рд╕реНрдерд╛рдиреАрдп рдЪрд░" рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред рдЖрдк "рдореВрд▓реНрдп рдирд╣реАрдВ рд▓реЗ рд╕рдХрддреЗ" рдФрд░ "рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ"ред

рдЗрд╕рд╕реЗ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдирд┐рдХрд▓рддреА рд╣реИ: рдЖрдк рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдкреИрджрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдиреНрд╕рд┐рдмрд▓ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗред рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдмрджрд▓рдирд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд╕реНрдЯ рдореЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ рдмрджрд▓рдирд╛ рд╣реИ unsafe. рдФрд░ рдЕрдиреНрд╕рд┐рдмрд▓ рдореЗрдВ рдХрд┐рд╕реА рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╢рдмреНрджреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: "рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рди рдкрд╛рд╕ рди рдХрд░реЗрдВ", рдмрд▓реНрдХрд┐ "рднреВрдорд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓реЗрдВ"ред рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрд▓рдЧрд╛рд╡ рдирд╣реАрдВ рд╣реИред рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрд▓рдЧрд╛рд╡ рдирд╣реАрдВ рд╣реИред

рдХреБрд▓: рднреВрдорд┐рдХрд╛ рдХреЛрдИ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ.

рднреВрдорд┐рдХрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рднреВрдорд┐рдХрд╛ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ (/default/main.yaml), рджреВрд╕рд░реЗ, рднреВрдорд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рд╣реИрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ рдорд╛рд╕реНрд▓реЛ рдХреЗ рдкрд┐рд░рд╛рдорд┐рдб рдореЗрдВ, рдЕрдВрд╕рд┐рдмрд▓ рдХреА рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреА рдмрд▓реНрдХрд┐ рд╡рд┐рдХреГрдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рднреВрдорд┐рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдмрд╕реЗ рдХрдо-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ (рдорд╛рдЗрдирд╕ рдЕрдВрд╕рд┐рдмрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреИрд░рд╛рдореАрдЯрд░) рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдпрд╛ рд╕рдореВрд╣ рдЪрд░ рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рд╣реИ, рддреЛ рднреВрдорд┐рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдЬрдЧрд╣ рд╣реИред (рдореИрдВ рдереЛрдбрд╝рд╛ рдЭреВрда рдмреЛрд▓ рд░рд╣рд╛ рд╣реВрдВ - рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реИ |d(your_default_here), рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд╕реНрдерд┐рд░ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рднреВрдорд┐рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ)ред

рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдХреНрдпрд╛ рдмрдврд╝рд┐рдпрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреИрдЯрд▓реЙрдЧ рд╣реИрдВред рдпреЗ рдЪрд░ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ, рджреЛрдиреЛрдВ рд╕реНрдерд┐рд░ (рдпрд╛рдиреА рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛) рдФрд░ рдЧрддрд┐рд╢реАрд▓ (рдпрд╛ рддреЛ рдПрдХ рдкреИрдЯрд░реНрди рдпрд╛ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ - include_vars рд╕рд╛рде {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml.). рдпреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ files/, templates/. рд╕рд╛рде рд╣реА, рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (library/). рд▓реЗрдХрд┐рди, рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ (рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдм рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдпрд╣рд╛рдВ рдПрдХрдорд╛рддреНрд░ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдвреЗрд░ рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдвреЗрд░реЛрдВ рдореЗрдВ рдбрдВрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХ рдФрд░ рд╡рд┐рд╡рд░рдг: рдЖрдк рдРрд╕реА рднреВрдорд┐рдХрд╛рдПрдБ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреА (рдЧреИрд▓реЗрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рднреВрдорд┐рдХрд╛ рд╡рд┐рддрд░рдг рдХреЛ рд▓рдЧрднрдЧ рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ: рдЙрдирдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ (рдПрдХ рдЕрдиреВрдареА рд╡рд┐рд╢реЗрд╖рддрд╛) рд╣реЛрддреА рд╣реИ рдФрд░ рд╡реЗ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдХреЛрдб рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред

рдореВрд▓ рдкреНрд░рд╢реНрди рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП: рдХрд╛рд░реНрдп рдХрдм рдХрд░рдирд╛ рд╣реИ рдФрд░ рднреВрдорд┐рдХрд╛рдПрдБ рдХрдм рдирд┐рднрд╛рдиреА рд╣реИрдВ? рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдпрд╛ рддреЛ рднреВрдорд┐рдХрд╛рдУрдВ рд╕реЗ рдкрд╣рд▓реЗ/рдмрд╛рдж рдореЗрдВ "рдЧреЛрдВрдж" рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдирд┐рд░реНрдорд╛рдг рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рддрдм рдХреЛрдб рдореЗрдВ рдХреЛрдИ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП)ред рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдвреЗрд░ рдЕрд╕рдВрджрд┐рдЧреНрдз рд▓рд╛рдкрд░рд╡рд╛рд╣реА рд╣реИред рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реИрд▓реА рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╛ рддреЛ рдПрдХ рдХрд╛рд░реНрдп рдпрд╛ рдПрдХ рднреВрдорд┐рдХрд╛ред рднреВрдорд┐рдХрд╛рдПрдБ рд╕рдВрд╕реНрдерд╛рдУрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ, рдХрд╛рд░реНрдп рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рдЕрдзрд┐рдХ "рд╕реНрдерд┐рд░" (рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдЬрдЯрд┐рд▓) рдХреЛрдб рдХреЛ рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд╣рд╛рдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдп рд╢реИрд▓реА рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВред

╨б╤Г╤Й╨╡╤Б╤В╨▓╤Г╨╡╤В ╨▓╨╛╨╖╨╝╨╛╨╢╨╜╨╛╤Б╤В╤М ╨┤╨╡╨╗╨░╤В╤М import_role ╨║╨░╨║ ╤В╨░╤Б╨║╤Г, ╨╜╨╛ ╨╡╤Б╨╗╨╕ ╨▓╤Л ╤В╨░╨║╨╛╨╡ ╨┐╨╕╤И╨╡╤В╨╡, ╤В╨╛ ╨▒╤Г╨┤╤М╤В╨╡ ╨│╨╛╤В╨╛╨▓╤Л ╨║ ╨╛╨▒╤К╤П╤Б╨╜╨╕╤В╨╡╨╗╤М╨╜╨╛╨╣ ╨┤╨╗╤П ╤Б╨╛╨▒╤Б╤В╨▓╨╡╨╜╨╜╨╛╨│╨╛ ╤З╤Г╨▓╤Б╤В╨▓╨░ ╨┐╤А╨╡╨║╤А╨░╤Б╨╜╨╛╨│╨╛, ╨╖╨░╤З╨╡╨╝ ╨▓╤Л ╤Н╤В╨╛ ╤Е╨╛╤В╨╕╤В╨╡ ╨┤╨╡╨╗╨░╤В╤М.

рдПрдХ рдЪрддреБрд░ рдкрд╛рдардХ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рднреВрдорд┐рдХрд╛рдПрдБ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ Galaxy.yml рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рдПрдХ рднрдпрд╛рдирдХ рдФрд░ рднрдпрд╛рдирдХ рднреА рд╣реИ include_role - рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдмреЗрд╕рд┐рдХ рдПрдиреНрд╕рд┐рдмрд▓ рдореЗрдВ рдХреМрд╢рд▓ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ рдлрд┐рдЧрд░ рдЬрд┐рдореНрдирд╛рд╕реНрдЯрд┐рдХ рдореЗрдВред

рд╕рдВрдЪрд╛рд▓рдХ рдФрд░ рдХрд╛рд░реНрдп

рдЖрдЗрдП рдПрдХ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдмрд╛рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ: рд╣реИрдВрдбрд▓рд░ред рдЗрдирдХрд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рдирдирд╛ рд▓рдЧрднрдЧ рдПрдХ рдХрд▓рд╛ рд╣реИред рд╣реИрдВрдбрд▓рд░ рдФрд░ рдбреНрд░реИрдЧ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?

рдЪреВрдБрдХрд┐ рд╣рдо рдореВрд▓ рдмрд╛рддреЗрдВ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

- hosts: group1
  tasks:
    - foo:
      notify: handler1
  handlers:
     - name: handler1
       bar:

рднреВрдорд┐рдХрд╛ рдХреЗ рд╣реИрдВрдбрд▓рд░, рд░реЛрд▓рдиреЗрдо/рд╣реИрдВрдбрд▓рд░/main.yaml рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рд╣реИрдВрдбрд▓рд░ рд╕рднреА рдЦреЗрд▓ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЦреЛрдЬрдмреАрди рдХрд░рддреЗ рд╣реИрдВ: рдкреНрд░реА/рдкреЛрд╕реНрдЯ_рдЯрд╛рд╕реНрдХ рднреВрдорд┐рдХрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рднреВрдорд┐рдХрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЦреЗрд▓ рд╕реЗ рдЦреАрдВрдЪ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣реИрдВрдбрд▓рд░ рдХреЛ "рдХреНрд░реЙрд╕-рд░реЛрд▓" рдХреЙрд▓ рдПрдХ рдорд╛рдореВрд▓реА рд╣реИрдВрдбрд▓рд░ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ wtf рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред (рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдПрдХ рдЕрдиреНрдп рддрддреНрд╡ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рди рджреЛрд╣рд░рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реИ)ред

рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рд╣рдореЗрд╢рд╛ (рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд▓рд╕/рдорд╛рдЗрдирд╕ рдЯреИрдЧ рдФрд░ when), рдФрд░ рд╣реИрдВрдбрд▓рд░ - рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрди рджреНрд╡рд╛рд░рд╛ (рдХреЗрд╡рд▓ рдЖрдЧ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ рдпрджрд┐ рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдХреНрдпрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рддрдереНрдп рдХрд┐ рдЬрдм рдЖрдк рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реБрдЖ, рддреЛ рдХреЛрдИ рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЬрдирд░реЗрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдп рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ рддреЛ рд╣рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рдФрд░ рдмрджрд▓ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдкрд╛рджрди рд╣реИрдВрдбрд▓рд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдмрдВрдж рдерд╛ред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рд╕реЗрд╡рд╛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ. рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рд╕реЗрд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╣реА рд░рд╣рддреА рд╣реИред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЖрдк рдлрд╝рд╛рдЗрд▓ рдлрд╝реНрд▓реИрдЧ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреБрдирд░рд╛рд░рдВрдн рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ 'рдмреБрдирд┐рдпрд╛рджреА рдЙрддреНрддрд░ рджреЗрдиреЗ рдпреЛрдЧреНрдп' рдирд╣реАрдВ рд╣реИ)ред рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдЖрдо рдХрд╣рд╛рдиреА рд╣реИ: рд╣рдордиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛, рдЙрд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ .service-рдлрд╝рд╛рдЗрд▓, рдФрд░ рдЕрдм рд╣рдо рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ daemon_reload ╨╕ state=started. рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕реНрдерд╛рди рд╣реИрдВрдбрд▓рд░ рд╣реА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░реНрдпрд╕реВрдЪреА рдпрд╛ рднреВрдорд┐рдХрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рднрд▓реЗ рд╣реА рдкреНрд▓реЗрдмреБрдХ рдмреАрдЪ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рдП. рдпрд╣ рдкреБрдирд░рд╛рд░рдВрдн рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЖрдк рдкреБрдирд░рд╛рд░рдВрдн рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдЦреЛ рдЬрд╛рддреА рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд░рд╛рдЬреНрдп = рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рдкреНрд▓реЗрдмреБрдХ рдХреА рд╕рдордЧреНрд░ рд╕реНрдерд┐рд░рддрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд╕реНрдерд┐рддрд┐ рдШрдЯ рдЬрд╛рддреА рд╣реИред

рд╣реИрдВрдбрд▓рд░ рдХреА рдПрдХ рдФрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ - рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЫреЛрдбрд╝рд╛ рдпрд╛ рдареАрдХ рдирд╣реАрдВ - рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиред рдпрд╣ рднреА рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдЧреБрдг рд╣реИ - рдпрджрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд╛рд░реНрдп рдореЗрдВ рдХреЛрдИ рдЯрд╛рдЗрдкреЛ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЗрд╡рд▓ рдмрджрд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рд╣реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛рдиреАред рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд - рдмрд╣реБрдд рдХрдо рд╣реАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдБрдЪ рд╕рд╛рд▓ рдмрд╛рдж рдореЗрд░реЗ рдЬреАрд╡рди рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ред рдФрд░, рдирд┐рдГрд╕рдВрджреЗрд╣, рдирд╛рдо рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА рдФрд░ рд╕рдм рдХреБрдЫ рдЦрд╝рд░рд╛рдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рджреВрд╕рд░реА рдмрд╛рд░ рдирд╣реАрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЕрд▓рдЧ рд╕реЗ, рд╣рдореЗрдВ рдЪрд░ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рд▓реВрдк рдХреЗ рд╕рд╛рде рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЖрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рдорд╛рдореВрд▓реА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЪрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЖрддреЗ рд╣реИрдВред

... рдЗрд╕рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдЬрд┐рддрдиреЗ рджрд┐рдЦрддреЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдХрдо рдЙрдкрдпреЛрдЧреА рдФрд░ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ (рдмрд┐рдирд╛ рддрд╛рдордЭрд╛рдо рдХреЗ) рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрджрд┐ рдпрд╣ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрдирдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╣реИред

рд╕рдВрдХреНрд╖рд╛рд░рдХ рдкрд╛рдардХ рдареАрдХ рд╣реА рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА рд╣реИ listenрдХрд┐ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдЖрдпрд╛рдд_рдХрд╛рд░реНрдп (рдЬреЛ with_items рдХреЗ рд╕рд╛рде include_role рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐ Ansible рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рд╕рд┐рд╕реНрдЯрдо рдЯреНрдпреВрд░рд┐рдВрдЧ-рдкреВрд░реНрдг рд╣реИ, рдХрд┐ include_role рдХреЗ рд╣реИрдВрдбрд▓рд░ рдЦреЗрд▓ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рддреЗ рд╣реИрдВ, рдЖрджрд┐.рдбреА. - рдпрд╣ рд╕рдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЗрдВ" рдирд╣реАрдВ рд╣реИ)ред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбрдмреНрд▓реНрдпреВрдЯреАрдПрдл рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ delegate_to рдФрд░ рдЗрд╕рдиреЗ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ delegate_to, рдЕрд░реНрдерд╛рддред рд╣реЛрд╕реНрдЯ рдкрд░ рдЬрд╣рд╛рдВ рдЦреЗрд▓ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред (рд╣рд╛рд▓рд╛рдБрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ delegate_to рд╡рд╣реА)ред

рдЕрд▓рдЧ рд╕реЗ, рдореИрдВ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╕рдВрдЧреНрд░рд╣ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдХрд┐ рдЖрдк рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рднреВрдорд┐рдХрд╛рдПрдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ansible-galaxy install рдФрд░ рдЪрд▓рд╛ рдЧрдпрд╛ред рд╕рднреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рднреА рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЗ рд╕рднреА рдУрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рддреЛ, рдореЗрд░реА рд░рд╛рдп: рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рднреВрдорд┐рдХрд╛ include_vars, 100500 рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП, рдХреЙрд░реНрдирд░ рдХреЗрд╕ рдмрдЧ рдХреЗ рд░рд╕рд╛рддрд▓ рдореЗрдВ рдмрд░реНрдмрд╛рдж рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдкрд░реАрдХреНрд╖рдг рдХреА рддрд░рд╣, рдпрд╛ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрдирдкреБрдЯ рдорд╛рдиреЛрдВ рдФрд░ рдХреБрд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЙрддреНрдкрд╛рдж рд╣реИ, рдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ "рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рджреГрд╢реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред" рдореЗрд░реА рд░рд╛рдп рд╣реИ рдХрд┐ рдпрджрд┐ рднреВрдорд┐рдХрд╛ рд░реИрдЦрд┐рдХ (рд╕рд╛рдЗрдХреНрд▓реЛрдореИрдЯрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ 1) рд╣реЛ рддреЛ рдпрд╣ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред

рдлреЙрд░реНрдо рдореЗрдВ рдЬрд┐рддрдиреЗ рдХрдо ifs (рд╕реНрдкрд╖реНрдЯ рдпрд╛ рдШреЛрд╖рдгрд╛рддреНрдордХ) рд╣реЛрдВрдЧреЗ when рдпрд╛ рд░реВрдк include_vars рдЪрд░реЛрдВ рдХреЗ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛), рднреВрдорд┐рдХрд╛ рдЙрддрдиреА рд╣реА рдмреЗрд╣рддрд░ рд╣реЛрдЧреАред рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рд╢рд╛рдЦрд╛рдПрдБ рдмрдирд╛рдиреА рдкрдбрд╝рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдБ, рдЬрд┐рддрдиреА рдХрдо рд╢рд╛рдЦрд╛рдПрдБ рд╣реЛрдВрдЧреА, рдЙрддрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫреА рднреВрдорд┐рдХрд╛ рд╣реИ (рдпрд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИ!) when рдкрд╛рдБрдЪ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ "рдХрд┐рд╕реА рдХреА рдЕрдкрдиреА" рднреВрдорд┐рдХрд╛ рд╕реЗ рдХрдо рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рдХреНрд╖рдг рдЬрдм рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рдХреЗ рд╕рд╛рде рднреВрдорд┐рдХрд╛ рдмреЗрд╣рддрд░ рд╣реЛрддреА рд╣реИ, рдЬрдм рдЖрдк рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рдХреНрд╖рдг рдЬрдм рдпрд╣ рдмрджрддрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЪреАрдЬрд╝ рдЯреВрдЯрддреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╣ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рдХреЗ рд╕рд╛рде рднреВрдорд┐рдХрд╛" рдХреЗ рдХрд╛рд░рдг рд╣реИред рдЖрдк рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдкрд╛рдВрдЪ рд╕рдорд╛рд╡реЗрд╢рди, рдЖрда рдХрд╛рд░реНрдп рдкрддреНрд░рдХ рдФрд░ рдПрдХ рд╕реНрдЯреИрдХ рд╣реИ when'рдУрд╡... рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред 5 рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рд░реЗрдЦреАрдп рд╕реВрдЪреА рдЬрд┐рд╕рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдпреЛрдЧреНрдп рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧреЛрдВ рдореЗрдВ

  • рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА, рдЧреНрд░реБрдк рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕, рд╣реЛрд╕реНрдЯ_рдЧреНрд░реБрдк_рд╡рд░реНрд╕ рдкреНрд▓рдЧрдЗрди, рд╣реЛрд╕реНрдЯрд╡рд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ред рд╕реНрдкреЗрдЧреЗрдЯреА рдХреЗ рд╕рд╛рде рдЧреЙрд░реНрдбрд┐рдпрди рдЧрд╛рдБрда рдХреИрд╕реЗ рдмрд╛рдБрдзреЗрдВред рджрд╛рдпрд░рд╛ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЪрд░, рдЕрдиреНрд╕рд┐рдмрд▓ рдореЗрдореЛрд░реА рдореЙрдбрд▓ред "рддреЛ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ?"
  • jinja: {{ jinja }} - рдиреЛрдПрд╕рдХреНрдпреВрдПрд▓ рдиреЙрдЯрд╛рдЗрдк рдиреЛрд╕реЗрдВрд╕ рд╕реЙрдлреНрдЯ рдкреНрд▓рд╛рд╕реНрдЯрд┐рд╕рд┐рдиред рдпрд╣ рд╣рд░ рдЬрдЧрд╣ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ !!unsafe рдФрд░ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдпрдо.

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ