рдЙрддреНрддрд░рджрд╛рдпреА рдореВрд▓рддрддреНрддреНрд╡реЗ, рдЬреНрдпрд╛рд╢рд┐рд╡рд╛рдп рддреБрдордЪреА рдкреНрд▓реЗрдмреБрдХ рдЪрд┐рдХрдЯ рдкрд╛рд╕реНрддрд╛рдЪрд╛ рдПрдХ рдЧреЛрд│рд╛ рдЕрд╕реЗрд▓

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

рд╣рд╛ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рдЕрдиреНрдпрд╛рдп рджреБрд░реБрд╕реНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЬреНрдпрд╛рдВрдирд╛ рдЖрдзреАрдЪ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдореА Ansible рдЪреА рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ. рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдЪреЗрддрд╛рд╡рдгреА рджреЗрддреЛ, рд╣реЗ рдорд╛рдгрд╕рд╛рдВрдЪреЗ рд░реАрдЯреЗрд▓рд┐рдВрдЧ рдирд╛рд╣реА, рд╣реА рдЦреВрдк рдЕрдХреНрд╖рд░реЗ рдЖрдгрд┐ рдЪрд┐рддреНрд░реЗ рдирд╕рд▓реЗрд▓реА рд▓рд╛рдБрдЧрд░реАрдб рдЖрд╣реЗ.

рд╡рд╛рдЪрдХрд╛рдВрдЪреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд╛рддрд│реА рдЕрд╢реА рдЖрд╣реЗ рдХреА рдпрдорд▓рд╛рдЪреНрдпрд╛ рдХрд┐рддреНрдпреЗрдХ рд╣рдЬрд╛рд░ рдУрд│реА рдЖрдзреАрдЪ рд▓рд┐рд╣рд┐рд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд, рдХрд╛рд╣реАрддрд░реА рдЖрдзреАрдЪ рддрдпрд╛рд░ рдЖрд╣реЗ, рдкрд░рдВрддреБ "рдХрд╕реЗ рддрд░реА рд╕рд░реНрд╡ рдХрд╛рд╣реА рдХреБрдЯрд┐рд▓ рдЖрд╣реЗ."

рдирд╛рд╡реЗ

рдЙрддреНрддрд░рджрд╛рдпреА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рдХреЗрд▓реЗрд▓реА рдореБрдЦреНрдп рдЪреВрдХ рдореНрд╣рдгрдЬреЗ рдХрд╛рд╣реАрддрд░реА рдХрд╛рдп рдореНрд╣рдгрддрд╛рдд рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╕рдгреЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рдирд╛рд╡реЗ рдорд╛рд╣реАрдд рдирд╕рд▓реНрдпрд╛рд╕, рджрд╕реНрддрдРрд╡рдЬрд╛рдд рдХрд╛рдп рдореНрд╣рдЯрд▓реЗ рдЖрд╣реЗ рддреЗ рддреБрдореНрд╣реА рд╕рдордЬреВ рд╢рдХрдд рдирд╛рд╣реА. рдПрдХ рдЬрд┐рд╡рдВрдд рдЙрджрд╛рд╣рд░рдг: рдПрдХрд╛ рдореБрд▓рд╛рдЦрддреАрджрд░рдореНрдпрд╛рди, рдПрдХ рд╡реНрдпрдХреНрддреА рдЬреНрдпрд╛рд▓рд╛ рдЕрд╕реЗ рд╡рд╛рдЯрддреЗ рдХреА рддреНрдпрд╛рдиреЗ рдЙрддреНрддрд░реЗрдордзреНрдпреЗ рдмрд░реЗрдЪ рдХрд╛рд╣реА рд▓рд┐рд╣рд┐рд▓реЗ рдЖрд╣реЗ, "рдкреНрд▓реЗрдмреБрдХрдордзреНрдпреЗ рдХреЛрдгрддреЗ рдШрдЯрдХ рдЕрд╕рддрд╛рдд?" рдпрд╛ рдкреНрд░рд╢реНрдирд╛рдЪреЗ рдЙрддреНрддрд░ рджреЗрдК рд╢рдХрдд рдирд╛рд╣реА. рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рдореА рдЕрд╕реЗ рд╕реБрдЪрд╡рд▓реЗ рдХреА "рдкреНрд▓реЗрдмреБрдХрдордзреНрдпреЗ рдирд╛рдЯрдХрд╛рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ рдЕрд╕реЗ рдЙрддреНрддрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛрддреЗ," рддреЗрд╡реНрд╣рд╛ "рдЖрдореНрд╣реА рддреЗ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА" рдЕрд╢реА рдирд┐рдВрджрдиреАрдп рдЯрд┐рдкреНрдкрдгреА рдЖрд▓реА. рд▓реЛрдХ рдкреИрд╢рд╛рд╕рд╛рдареА рдЙрддреНрддрд░ рд▓рд┐рд╣рд┐рддрд╛рдд рдЖрдгрд┐ рдирд╛рдЯрдХ рд╡рд╛рдкрд░рдд рдирд╛рд╣реАрдд. рддреЗ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рддреЗ рд╡рд╛рдкрд░рддрд╛рдд, рдкрд░рдВрддреБ рддреЗ рдХрд╛рдп рдЖрд╣реЗ рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╛рд╣реА.

рддрд░ рдЪрд▓рд╛ рд╕реЛрдкреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВрдпрд╛: рддреНрдпрд╛рд▓рд╛ рдХрд╛рдп рдореНрд╣рдгрддрд╛рдд? рдХрджрд╛рдЪрд┐рдд рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдорд╛рд╣рд┐рдд рдЕрд╕реЗрд▓ рдХрд┐рдВрд╡рд╛ рдХрджрд╛рдЪрд┐рдд рддреБрдореНрд╣рд╛рд▓рд╛ рдирд╕реЗрд▓, рдХрд╛рд░рдг рддреБрдореНрд╣реА рджрд╕реНрддрдРрд╡рдЬ рд╡рд╛рдЪрддрд╛ рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рд▓рдХреНрд╖ рджрд┐рд▓реЗ рдирд╛рд╣реА.

рдЙрддреНрддрд░рджрд╛рдпреА-рдкреНрд▓реЗрдмреБрдХ рдкреНрд▓реЗрдмреБрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ. рдкреНрд▓реЗрдмреБрдХ рд╣реА 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 рд╡рд░ "x" рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдпрдЬрдорд╛рди Y рд╡рд░ рдЬрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЖрдгрд┐ рддреЗрдереЗ "y" рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓, рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд╕реЛрдкрд╛ рд╡реНрдпрд╛рдпрд╛рдо рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓: рдЬрд╛ рдЖрдгрд┐ рдирд╛рдЯрдХ рд▓рд┐рд╣рд╛, рдЬреЗ рд╣реЛрд╕реНрдЯ Y рд╡рд░ y рдХрд░рддреЗ. "x" рдордзреНрдпреЗ рдХрд╛рд╣реАрддрд░реА рдЬреЛрдбреВ рдирдХрд╛, рдкрд░рдВрддреБ рддреЗ рд╕реБрд░рд╡рд╛рддреАрдкрд╛рд╕реВрди рд▓рд┐рд╣рд╛. рдЬрд░реА рд╣рд╛рд░реНрдбрдХреЛрдб рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╣.

рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рд╡рд░реАрд▓ рдкрд░рд┐рдЪреНрдЫреЗрджрд╛рддреАрд▓ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдмрд░реЛрдмрд░ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЖрд╣реЗ. рдкрдг рд╣реЗ рддреБрдордЪреЗ рдХреЗрд╕ рдирд╛рд╣реА! рдХрд╛рд░рдг рддреБрдореНрд╣рд╛рд▓рд╛ рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рддрд╛ рдпреЗрдгреНрдпрд╛рдЬреЛрдЧрд╛ рдХреЛрдб рд▓рд┐рд╣рд╛рдпрдЪрд╛ рдЖрд╣реЗ рдЬреЛ DRY рдЖрдгрд┐ рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╛рд░рдЦрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рддреЛ рдХрд╕рд╛ рдХрд░рд╛рдпрдЪрд╛ рдпрд╛рдЪреА рдкрджреНрдзрдд рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдЖрд╣реЗ.

рдЗрдереЗрдЪ рдЖрдгрдЦреА рдПрдХ рдЧрдВрднреАрд░ рдЪреВрдХ рдШрдбрддреЗ. рдПрдХ рддреНрд░реБрдЯреА рдЬреНрдпрд╛рдореБрд│реЗ рдмрд░реНтАНрдпрд╛рдЪ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдирд╛ рд╕реБрд╕рд╣реНрдпрдкрдгреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ (рддреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЕрд╕реВ рд╢рдХрддреЗ, рдкрд░рдВрддреБ рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЖрдгрд┐ рдкреВрд░реНрдг рдХрд░рдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ) рд╕рдВрдкреВрд░реНрдг рднрдпрдкрдЯрд╛рдд рдмрджрд▓рд▓реЗ рдЬреЗ рд▓реЗрдЦрдХ рджреЗрдЦреАрд▓ рд╢реЛрдзреВ рд╢рдХрдд рдирд╛рд╣реАрдд. рд╣реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдкрд░рдВрддреБ рджреЗрд╡ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реАрд╣реА рдмрджрд▓рдгреНрдпрд╛рд╕ рдордирд╛рдИ рдХрд░рддреЛ.

рддреНрд░реБрдЯреА рдЖрд╣реЗ: рднреВрдорд┐рдХрд╛ рдПрдХ рд▓рд╛рдпрдмреНрд░рд░реА рдХрд╛рд░реНрдп рдЖрд╣реЗ. рдпрд╛ рд╕рд╛рдзрд░реНрдореНрдпрд╛рдиреЗ рдЕрдиреЗрдХ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрдВрдЪрд╛ рдирд╛рд╢ рдХреЗрд▓рд╛ рдЖрд╣реЗ рдХреА рддреЗ рдкрд╛рд╣рдгреЗ рдХреЗрд╡рд│ рд╡рд╛рдИрдЯ рдЖрд╣реЗ. рднреВрдорд┐рдХрд╛ рд▓рд╛рдпрдмреНрд░рд░реА рдлрдВрдХреНрд╢рди рдирд╛рд╣реА. рддреА рдЖрдХрдбреЗрдореЛрдб рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА рдЖрдгрд┐ рддреА рдкреНрд▓реЗ-рд╕реНрддрд░реАрдп рдирд┐рд░реНрдгрдп рдШреЗрдК рд╢рдХрдд рдирд╛рд╣реА. рдорд▓рд╛ рдЖрдард╡рдг рдХрд░реВрди рджреНрдпрд╛ рдХреА рдирд╛рдЯрдХ рдХреЛрдгрддреЗ рдирд┐рд░реНрдгрдп рдШреЗрддреЗ?

рдзрдиреНрдпрд╡рд╛рдж, рддреБрдореНрд╣реА рдмрд░реЛрдмрд░ рдЖрд╣рд╛рдд. рдХреЛрдгрддреНрдпрд╛ рдпрдЬрдорд╛рдирд╛рдВрд╡рд░ рдХреЛрдгрддреА рдХрд╛рд░реНрдпреЗ рдЖрдгрд┐ рднреВрдорд┐рдХрд╛ рдкрд╛рд░ рдкрд╛рдбрд╛рдпрдЪреНрдпрд╛ рдпрд╛рдмрджреНрджрд▓ рдкреНрд▓реЗ рдирд┐рд░реНрдгрдп рдШреЗрддреЗ (рдЕрдзрд┐рдХ рдЕрдЪреВрдХрдкрдгреЗ, рддреНрдпрд╛рдд рдорд╛рд╣рд┐рддреА рдЕрд╕рддреЗ).

рдЬрд░ рддреБрдореНрд╣реА рд╣рд╛ рдирд┐рд░реНрдгрдп рдПрдЦрд╛рджреНрдпрд╛ рднреВрдорд┐рдХреЗрд╡рд░ рд╕реЛрдкрд╡рд▓рд╛рдд, рдЖрдгрд┐ рдореЛрдЬрдгреА рдХрд░реВрдирд╣реА, рддреБрдореНрд╣реА рд╕реНрд╡рддрдГрд▓рд╛ (рдЖрдгрд┐ рдЬреЛ рддреБрдордЪрд╛ рдХреЛрдб рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реЗрд▓) рджрдпрдиреАрдп рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрдгрддрд╛. рднреВрдорд┐рдХрд╛ рдХреБрдареЗ рдХрд░рд╛рдпрдЪреА рд╣реЗ рдард░рд╡рдд рдирд╛рд╣реА. рд╣рд╛ рдирд┐рд░реНрдгрдп рдирд╛рдЯрдХрд╛рджреНрд╡рд╛рд░реЗ рдШреЗрддрд▓рд╛ рдЬрд╛рддреЛ. рднреВрдорд┐рдХрд╛ рддрд┐рд▓рд╛ рдЬреЗ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЬрд╛рддреЗ, рдЬрд┐рдереЗ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЬрд╛рддреЗ рддреЗ рдХрд░рддреЗ.

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

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

рдкреНрд▓реЗ рдЖрдгрд┐ рдлрдХреНрдд рдкреНрд▓реЗ рд╣реЗ рдард░рд╡рддреЗ рдХреА рдХреЛрдгрддреЗ рд╣реЛрд╕реНрдЯ рдХрд╛рдп рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ.

рдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд, рдЖрдореНрд╣реА рдирд╛рдЯрдХ рдЖрдгрд┐ рднреВрдорд┐рдХрд╛ рдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рд╡рд┐рд░реЛрдзрд╛рдЪрд╛ рд╕рд╛рдордирд╛ рдХреЗрд▓рд╛. рдЖрддрд╛ рдЯрд╛рд╕реНрдХ рд╡рд┐ рд░реЛрд▓ рд░рд┐рд▓реЗрд╢рдирд╢рд┐рдкрдмрджреНрджрд▓ рдмреЛрд▓реВрдпрд╛.

рдХрд╛рд░реНрдпреЗ рдЖрдгрд┐ рднреВрдорд┐рдХрд╛

рдЦреЗрд│рд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛:

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

рд╕рдордЬрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ foo рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рдЕрд╕реЗ рджрд┐рд╕рддреЗ foo: name=foobar state=present. рдореА рд╣реЗ рдХреБрдареЗ рд▓рд┐рд╣реВ? рдкреВрд░реНрд╡ рдордзреНрдпреЗ? рдкреЛрд╕реНрдЯ? рднреВрдорд┐рдХрд╛ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреА?

...рдЖрдгрд┐ рдХрд╛рдореЗ рдХреБрдареЗ рдЧреЗрд▓реА?

рдЖрдореНрд╣реА рдкреБрдиреНрд╣рд╛ рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреАрдВрд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдд рдЖрд╣реЛрдд - рдкреНрд▓реЗ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕. рдЖрдкрдг рдпрд╛ рд╕рдорд╕реНрдпреЗрд╡рд░ рдлреНрд▓реЛрдЯ рдХреЗрд▓реНрдпрд╛рд╕, рдЖрдкрдг рдЗрддрд░ рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреАрдВрд╕рд╛рдареА рдПрдХ рдЖрдзрд╛рд░ рдореНрд╣рдгреВрди рдкреНрд▓реЗ рд╡рд╛рдкрд░реВ рд╢рдХрдд рдирд╛рд╣реА рдЖрдгрд┐ рдЖрдкрд▓рд╛ рдкрд░рд┐рдгрд╛рдо "рдЕрдЪрд▓" рд╣реЛрдИрд▓.

рдкреНрд▓реЗ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕: рд╣реЛрд╕реНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд┐рд╡реНрд╣, рд╕реНрд╡рддрдГ рдкреНрд▓реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЖрдгрд┐ pre_tasks, рдХрд╛рд░реНрдпреЗ, рднреВрдорд┐рдХрд╛, post_tasks рд╡рд┐рднрд╛рдЧ. рдЦреЗрд│рд╛рд╕рд╛рдареАрдЪреЗ рдЙрд░реНрд╡рд░рд┐рдд рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЖрддрд╛ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдирд╛рд╣реАрдд.

рдХрд╛рд░реНрдпреЗ рдЖрдгрд┐ рднреВрдорд┐рдХрд╛рдВрд╕рд╣ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдВрдЪрд╛ рдХреНрд░рдо: 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, рдкрд░рдВрддреБ рдЬрд░ рдЖрдкрдг рдирд╛рдЯрдХрд╛рддреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдВрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдХреНрд░рдорд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рд░рд╛рд╣реВ рд╢рдХрддреЛ рддрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдлреНрд▓рд╢_рд╣рдБрдбрд▓рд░реНрд╕рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ? рд╢рд┐рд╡рд╛рдп, meta: flush_handlers рдЪрд╛ рд╡рд╛рдкрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдБрдбрд▓рд░реНрд╕рд╕рд╣ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЧреЛрд╖реНрдЯреА рджреЗрдК рд╢рдХрддреЛ, рд╡рд╛рдкрд░рддрд╛рдирд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╡рд┐рдЪрд┐рддреНрд░ рдЪреЗрддрд╛рд╡рдгреА рджреЗрдК рд╢рдХрддреЛ when ╤Г block рдЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рдЙрддреНрддрд░рджрд╛рдпреА рдЧреЛрд╖реНрдЯреА рдЬрд┐рддрдХреНрдпрд╛ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рдорд╛рд╣рд┐рдд рдЕрд╕рддреАрд▓ рддрд┐рддрдХреНрдпрд╛ рдЕрдзрд┐рдХ рдмрд╛рд░рдХрд╛рд╡реЗ рддреБрдореНрд╣реА тАЬрдХрдареАрдгтАЭ рдЙрдкрд╛рдпрд╛рд╕рд╛рдареА рдирд╛рд╡ рджреЗрдК рд╢рдХрддрд╛. рдЖрдгрд┐ рдПрдХ рд╕реЛрдкрд╛ рдЙрдкрд╛рдп - рдкреВрд░реНрд╡/рднреВрдорд┐рдХрд╛/рдкреЛрд╕реНрдЯ рдордзреАрд▓ рдиреИрд╕рд░реНрдЧрд┐рдХ рд╡рд┐рднрд╛рдЧрдгреА рд╡рд╛рдкрд░реВрди - рдмрд╛рд░рдХрд╛рд╡реЗ рдЖрдгрдд рдирд╛рд╣реАрдд.

рдЖрдгрд┐, рдЖрдордЪреНрдпрд╛ 'рдлреВ' рд╡рд░ рдкрд░рдд. рдореА рдХреБрдареЗ рдареЗрд╡реВ? рдкреВрд░реНрд╡, рдкреЛрд╕реНрдЯ рдХрд┐рдВрд╡рд╛ рднреВрдорд┐рдХрд╛рдВрдордзреНрдпреЗ? рдЕрд░реНрдерд╛рдд, рд╣реЗ рдЖрдореНрд╣рд╛рд▓рд╛ foo рд╕рд╛рдареА рд╣рдБрдбрд▓рд░рдЪреНрдпрд╛ рдирд┐рдХрд╛рд▓рд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ. рддреЗ рддреЗрдереЗ рдирд╕рд▓реНрдпрд╛рд╕, foo рд▓рд╛ рдкреВрд░реНрд╡ рдХрд┐рдВрд╡рд╛ рдкреЛрд╕реНрдЯрдордзреНрдпреЗ рдареЗрд╡рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА - рдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдВрдЪрд╛ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рдЖрд╣реЗ - рдХреЛрдбрдЪреНрдпрд╛ рдореБрдЦреНрдп рднрд╛рдЧрд╛рдЪреНрдпрд╛ рдЖрдзреА рдЖрдгрд┐ рдирдВрддрд░ рдХрд╛рд░реНрдпреЗ рдЪрд╛рд▓рд╡рдгреЗ.

рдЖрддрд╛ "рднреВрдорд┐рдХрд╛ рдХрд┐рдВрд╡рд╛ рдХрд╛рд░реНрдп" рдпрд╛ рдкреНрд░рд╢реНрдирд╛рдЪреЗ рдЙрддреНрддрд░ рдЖрдзреАрдкрд╛рд╕реВрди рд╕реБрд░реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдВрд╡рд░ рдпреЗрддреЗ - рдЬрд░ рддреЗрдереЗ рдХрд╛рд░реНрдпреЗ рдЕрд╕рддреАрд▓ рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рддреА рдХрд╛рд░реНрдпрд╛рдВрдордзреНрдпреЗ рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рднреВрдорд┐рдХрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рднреВрдорд┐рдХрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рдЕрдЧрджреА рдПрдХрд╛ рдХрд╛рд░реНрдпрд╛рддреВрдирд╣реА). рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЛ рдХреА рдХрд╛рд░реНрдпреЗ рдЖрдгрд┐ рднреВрдорд┐рдХрд╛ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдд рдирд╛рд╣реАрдд.

Ansible рдЪреНрдпрд╛ рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА рд╕рдордЬреВрди рдШреЗрддрд▓реНрдпрд╛рдиреЗ рдЪрд╡реАрдЪреНрдпрд╛ рд╡рд░рд╡рд░рдЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рд╡рд╛рдЬрд╡реА рдЙрддреНрддрд░реЗ рдорд┐рд│рддрд╛рдд.

рдХрд╛рд░реНрдпреЗ рдЖрдгрд┐ рднреВрдорд┐рдХрд╛ (рднрд╛рдЧ рджреЛрди)

рдЖрддрд╛ рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдкреНрд▓реЗрдмреБрдХ рд▓рд┐рд╣рд╛рдпрд▓рд╛ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрд╡рд░ рдЪрд░реНрдЪрд╛ рдХрд░реВрдпрд╛. рддреБрдореНрд╣рд╛рд▓рд╛ foo, bar рдЖрдгрд┐ baz рдмрдирд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реА рддреАрди рдХрд╛рдореЗ, рдПрдХ рднреВрдорд┐рдХрд╛ рдХреА рддреАрди рднреВрдорд┐рдХрд╛? рдкреНрд░рд╢реНрдирд╛рдЪрд╛ рд╕рд╛рд░рд╛рдВрд╢ рджреЗрдгреНрдпрд╛рд╕рд╛рдареА: рдЖрдкрдг рдХреЛрдгрддреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рднреВрдорд┐рдХрд╛ рд▓рд┐рд╣рд╛рдпрд▓рд╛ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рд╛рд╡реА? рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдЯрд╛рд╕реНрдХ рд▓рд┐рд╣реВ рд╢рдХрддрд╛ рддреЗрд╡реНрд╣рд╛ рднреВрдорд┐рдХрд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдд рдХрд╛рдп рдЕрд░реНрде рдЖрд╣реЗ?... рднреВрдорд┐рдХрд╛ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

рд╕рд░реНрд╡рд╛рдд рдореЛрдареА рдЪреВрдХ (рдореА рдпрд╛рдмрджреНрджрд▓ рдЖрдзреАрдЪ рдмреЛрд▓рд▓реЛ рдЖрд╣реЗ) рдореНрд╣рдгрдЬреЗ рднреВрдорд┐рдХрд╛ рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдордЪреНрдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрддреАрд▓ рдлрдВрдХреНрд╢рдирд╕рд╛рд░рдЦреА рдЕрд╕рддреЗ. рдЬреЗрдиреЗрд░рд┐рдХ рдлрдВрдХреНрд╢рдирдЪреЗ рд╡рд░реНрдгрди рдХрд╕реЗ рджрд┐рд╕рддреЗ? рд╣реЗ рдЗрдирдкреБрдЯ рдпреБрдХреНрддрд┐рд╡рд╛рдж рд╕реНрд╡реАрдХрд╛рд░рддреЗ, рд╕рд╛рдЗрдб рдХрд╛рд░рдгрд╛рдВрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддреЗ, рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХрд░рддреЗ рдЖрдгрд┐ рдореВрд▓реНрдп рдкрд░рдд рдХрд░рддреЗ.

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

рдпрд╛рд╡рд░реВрди рдореБрдЦреНрдп рдЧреЛрд╖реНрдЯ рдкреБрдвреЗ рдпреЗрддреЗ: рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдЭрд╛рд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп рддреБрдореНрд╣реА Ansible рдордзреНрдпреЗ рдХрд╛рд╣реАрддрд░реА рд▓рд┐рд╣реВ рд╢рдХрдд рдирд╛рд╣реА. рдЧреНрд▓реЛрдмрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдмрджрд▓рдгреЗ рд╣рд╛ рдлрдВрдХреНрд╢рдирд╕рд╛рдареА рдиреЗрд╣рдореАрдЪ рджреБрд╖реНрдкрд░рд┐рдгрд╛рдо рдЕрд╕рддреЛ. рдЧрдВрдЬ рдордзреНрдпреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд╛рдЧрддрд┐рдХ рдЪрд▓ рдмрджрд▓рдгреЗ рдЖрд╣реЗ unsafe. рдЖрдгрд┐ Ansible рдордзреНрдпреЗ рднреВрдорд┐рдХреЗрд╕рд╛рдареА рдореВрд▓реНрдпрд╛рдВрд╡рд░ рдкреНрд░рднрд╛рд╡ рдЯрд╛рдХрдгреНрдпрд╛рдЪреА рдПрдХрдореЗрд╡ рдкрджреНрдзрдд рдЖрд╣реЗ. рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдЪреА рдиреЛрдВрдж рдШреНрдпрд╛: "рднреВрдорд┐рдХреЗрд╕рд╛рдареА рдореВрд▓реНрдп рджреНрдпрд╛" рдирд╛рд╣реА рддрд░ "рднреВрдорд┐рдХрд╛ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реА рдореВрд▓реНрдпреЗ рдмрджрд▓рд╛". рднреВрдорд┐рдХрд╛рдВрдордзреНрдпреЗ рд╡реЗрдЧрд│реЗрдкрдгрд╛ рдирд╛рд╣реА. рдХрд╛рд░реНрдпреЗ рдЖрдгрд┐ рднреВрдорд┐рдХрд╛рдВрдордзреНрдпреЗ рд╡реЗрдЧрд│реЗрдкрдгрд╛ рдирд╛рд╣реА.

рдПрдХреВрдг: рднреВрдорд┐рдХрд╛ рд╣реЗ рдХрд╛рд░реНрдп рдирд╛рд╣реА.

рднреВрдорд┐рдХреЗрдмрджреНрджрд▓ рдХрд╛рдп рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ? рдкреНрд░рдердо, рднреВрдорд┐рдХреЗрдЪреА рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпреЗ рдЖрд╣реЗрдд (/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:

рднреВрдорд┐рдХреЗрдЪреЗ рд╣рдБрдбрд▓рд░реНрд╕ rolename/handlers/main.yaml рдордзреНрдпреЗ рд╕реНрдерд┐рдд рдЖрд╣реЗрдд. рд╣рдБрдбрд▓рд░реНрд╕ рд╕рд░реНрд╡ рдкреНрд▓реЗ рд╕рд╣рднрд╛рдЧреАрдВрдордзреНтАНрдпреЗ рдЧреЛрдВрдзрд│ рдШрд╛рд▓рддрд╛рдд: рдкреНрд░реА/рдкреЛрд╕реНтАНрдЯ_рдЯрд╛рд╕реНрдХ рд░реЛрд▓ рд╣рдБрдбрд▓рд░реНрд╕рд▓рд╛ рдЦреЗрдЪреВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рд░реЛрд▓ рд╣рдБрдбрд▓рд░реНрд╕рдирд╛ рдирд╛рдЯрдХрд╛рддреВрди рдЦреЗрдЪреВ рд╢рдХрддрд╛рдд. рддрдерд╛рдкрд┐, рд╣рдБрдбрд▓рд░рд▓рд╛ "рдХреНрд░реЙрд╕-рд░реЛрд▓" рдХреЙрд▓рдореБрд│реЗ рдХреНрд╖реБрд▓реНрд▓рдХ рд╣рдБрдбрд▓рд░рдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд wtf рд╣реЛрддреЗ. (рд╕рд░реНрд╡реЛрддреНрддрдо рдкрджреНрдзрддреАрдВрдЪрд╛ рдЖрдгрдЦреА рдПрдХ рдШрдЯрдХ рдореНрд╣рдгрдЬреЗ рд╣рдБрдбрд▓рд░рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдВрдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддреА рди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреЗ).

рдореБрдЦреНрдп рдлрд░рдХ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдХрд╛рд░реНрдп рдиреЗрд╣рдореА (рдЖрджрд░реНрд╢рдкрдгреЗ) рдХреЗрд▓реЗ рдЬрд╛рддреЗ (рдкреНрд▓рд╕/рдорд╛рдпрдирд╕ рдЯреЕрдЧ рдЖрдгрд┐ when), рдЖрдгрд┐ рд╣рдБрдбрд▓рд░ - рд░рд╛рдЬреНрдп рдмрджрд▓рд╛рдиреБрд╕рд╛рд░ (рддреЗ рдмрджрд▓рд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕рдЪ рдЖрдЧ рд╕реВрдЪрд┐рдд рдХрд░рд╛). рдпрд╛рдЪрд╛ рдЕрд░реНрде рдХрд╛рдп? рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛, рдЬрд░ рдХрд╛рд╣реА рдмрджрд▓рд▓реЗ рдирд╕реЗрд▓ рддрд░ рддреЗрдереЗ рдХреЛрдгрддреЗрд╣реА рд╣рдБрдбрд▓рд░ рдирд╕реЗрд▓. рдЬрдирд░реЗрдЯрд┐рдВрдЧ рдЯрд╛рд╕реНрдХрдордзреНрдпреЗ рдХреЛрдгрддрд╛рд╣реА рдмрджрд▓ рдирд╕рддрд╛рдирд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рд╣рдБрдбрд▓рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЕрд╕реВ рд╢рдХрддреЗ? рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХрд╛рд░рдг рдХрд╛рд╣реАрддрд░реА рддреБрдЯрд▓реЗ рдЖрдгрд┐ рдмрджрд▓рд▓реЗ, рдкрд░рдВрддреБ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╣рдБрдбрд▓рд░рдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪрд▓реА рдирд╛рд╣реА. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдиреЗрдЯрд╡рд░реНрдХ рддрд╛рддреНрдкреБрд░рддреЗ рдмрдВрдж рдЕрд╕рд▓реНрдпрд╛рдиреЗ. рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрджрд▓рд▓реЗ рдЖрд╣реЗ, рд╕реЗрд╡рд╛ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдЭрд╛рд▓реА рдирд╛рд╣реА. рдкреБрдврдЪреНрдпрд╛ рд╡реЗрд│реА рддреБрдореНрд╣реА рддреЗ рд╕реБрд░реВ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдпрд╛рдкреБрдвреЗ рдмрджрд▓рдгрд╛рд░ рдирд╛рд╣реА рдЖрдгрд┐ рд╕реЗрд╡рд╛ рдХреЙрдиреНрдлрд┐рдЧрдЪреНрдпрд╛ рдЬреБрдиреНрдпрд╛ рдЖрд╡реГрддреНрддреАрд╕рд╣ рд░рд╛рд╣рддреЗ.

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

рд╣рдБрдбрд▓рд░рдЪрд╛ рдЖрдгрдЦреА рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЧреБрдгрдзрд░реНрдо рдореНрд╣рдгрдЬреЗ рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдмрдВрдж рдХрд░рдд рдирд╛рд╣реА. рдХреЛрдгрддреЗрд╣реА рдмрджрд▓ рдирд╛рд╣реАрдд - рдЖрдЙрдЯрдкреБрдЯрдордзреНрдпреЗ рдХреЛрдгрддреЗрд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рдЧрд│рд▓реЗрд▓реЗ рдХрд┐рдВрд╡рд╛ рдареАрдХ рдирд╛рд╣реА - рд╡рд╛рдЪрдгреНрдпрд╛рд╕ рд╕реЛрдкреЗ. рд╣реЗ рджреЗрдЦреАрд▓ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдЧреБрдгрдзрд░реНрдо рдЖрд╣реЗ - рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд╣рд┐рд▓реНрдпрд╛рдЪ рд░рдирд╡рд░ рд░реЗрдЦреАрдпрд░рд┐рддреНрдпрд╛ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реЗрд▓реНрдпрд╛ рдЯрд╛рд╕реНрдХрдордзреНрдпреЗ рдЯрд╛рдпрдкреЛ рдЖрдврд│рд▓реНрдпрд╛рд╕, рд╣рдБрдбрд▓рд░ рдмрджрд▓рд▓реНрдпрд╛рд╡рд░рдЪ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓, рдореНрд╣рдгрдЬреЗ. рдХрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ - рдлрд╛рд░ рдХреНрд╡рдЪрд┐рддрдЪ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкрд╛рдЪ рд╡рд░реНрд╖рд╛рдВрдирдВрддрд░ рдорд╛рдЭреНрдпрд╛ рдЖрдпреБрд╖реНрдпрд╛рдд рдкрд╣рд┐рд▓реНрдпрд╛рдВрджрд╛. рдЖрдгрд┐, рдЕрд░реНрдерд╛рддрдЪ, рдирд╛рд╡рд╛рдд рдПрдХ рдЯрд╛рдпрдкреЛ рд╣реЛрдИрд▓ рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдЦрдВрдбрд┐рдд рд╣реЛрдИрд▓. рдЖрдгрд┐ рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рджреБрд╕рд▒реНрдпрд╛рдВрджрд╛ рди рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, рддреНрдпрд╛рдд рдХреЛрдгрддрд╛рд╣реА рдмрджрд▓ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА.

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

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

рдЧрдВрдЬрд▓реЗрд▓реНрдпрд╛ рд╡рд╛рдЪрдХрд╛рдиреЗ рдмрд░реЛрдмрд░ рдирдореВрдж рдХреЗрд▓реЗ рдЖрд╣реЗ рдХреА рдЖрдореНрд╣реА рдЪрд░реНрдЪрд╛ рдХреЗрд▓реЗрд▓реА рдирд╛рд╣реА listenрдПрдХ рд╣рдБрдбрд▓рд░ рджреБрд╕рд░реНтАНрдпрд╛ рд╣рдБрдбрд▓рд░рд▓рд╛ рд╕реВрдЪрд┐рдд рдХрд░реВ рд╢рдХрддреЛ, рдХреА рд╣рдБрдбрд▓рд░ import_tasks рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддреЛ (рдЬреЛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ_role with_items рдХрд░реВ рд╢рдХрддреЛ), рдХреА Ansible рдордзреАрд▓ рд╣рдБрдбрд▓рд░ рд╕рд┐рд╕реНрдЯреАрдо рдЯреНрдпреБрд░рд┐рдВрдЧ-рдкреВрд░реНрдг рдЖрд╣реЗ, рдХреА рд╕рдорд╛рд╡реЗрд╢_рд░реЛрд▓ рдордзреАрд▓ рд╣рдБрдбрд▓рд░ рдкреНрд▓реЗрдордзреАрд▓ рд╣рдБрдбрд▓рд░реНрд╕рд╕рд╣ рдЙрддреНрд╕реБрдХрддреЗрдиреЗ рдПрдХрдореЗрдХрд╛рдВрдирд╛ рдЫреЗрджрддрд╛рдд, рдЗ. рдбреА. - рд╣реЗ рд╕рд░реНрд╡ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ "рдореВрд▓рднреВрдд" рдирд╛рд╣реА).

рдЬрд░реА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ WTF рдЖрд╣реЗ рдЬреЗ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдПрдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ рдЬреЗ рдЖрдкрдг рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЬрд░ рдЖрдкрд▓реЗ рдХрд╛рд░реНрдп рдпрд╛рд╕рд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЕрд╕реЗрд▓ delegate_to рдЖрдгрд┐ рддреНрдпрд╛рд╕ рд╕реВрдЪрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ, рддреНрдпрд╛рдирдВрддрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╣рдБрдбрд▓рд░рд╢рд┐рд╡рд╛рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ delegate_to, рдореНрд╣рдгрдЬреЗ рд╣реЛрд╕реНрдЯрд╡рд░ рдЬреЗрдереЗ рдирд╛рдЯрдХ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЖрд╣реЗ. (рдЬрд░реА рд╣рдБрдбрд▓рд░рд▓рд╛ рдирдХреНрдХреАрдЪ рдЕрд╕реЗрд▓ delegate_to рддреНрдпрд╛рдЪ).

рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ, рдорд▓рд╛ рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рддрд╛ рдпреЗрдгреНрдпрд╛рдЬреЛрдЧреНрдпрд╛ рднреВрдорд┐рдХрд╛рдВрдмрджреНрджрд▓ рдХрд╛рд╣реА рд╢рдмреНрдж рд╕рд╛рдВрдЧрд╛рдпрдЪреЗ рдЖрд╣реЗрдд. рд╕рдВрдЧреНрд░рд╣ рджрд┐рд╕рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдЕрд╢реА рдХрд▓реНрдкрдирд╛ рд╣реЛрддреА рдХреА рдЖрдкрдг рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рднреВрдорд┐рдХрд╛ рдХрд░реВ рд╢рдХрддрд╛ рдЬреЗ рдЕрд╕реВ рд╢рдХрддреЗ ansible-galaxy install рдЖрдгрд┐ рдЧреЗрд▓рд╛. рд╕рд░реНрд╡ рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ рд╕рд░реНрд╡ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреНрдпрд╛ рд╕рд░реНрд╡ OS рд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рддрд░, рдорд╛рдЭреЗ рдордд: рддреЗ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА. рд╡рд╕реНрддреБрдорд╛рди рдЕрд╕рд▓реЗрд▓реА рдХреЛрдгрддреАрд╣реА рднреВрдорд┐рдХрд╛ include_vars, 100500 рдХреЗрд╕реЗрд╕рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд░реЗ, рдХреЙрд░реНрдирд░ рдХреЗрд╕ рдмрдЧреНрд╕рдЪреНрдпрд╛ рдЕрдерд╛рдВрдЧрддреЗрд╕рд╛рдареА рдирд╢рд┐рдмрд╛рдд рдЖрд╣реЗ. рддреЗ рдореЛрдареНрдпрд╛ рдЪрд╛рдЪрдгреАрд╕рд╣ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд, рдкрд░рдВрддреБ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЪрд╛рдЪрдгреАрдкреНрд░рдорд╛рдгреЗ, рдПрдХрддрд░ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЗрдирдкреБрдЯ рдореВрд▓реНрдпрд╛рдВрдЪреЗ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЙрддреНрдкрд╛рджрди рдЖрдгрд┐ рдПрдХреВрдг рдХрд╛рд░реНрдп рдЖрд╣реЗ рдХрд┐рдВрд╡рд╛ рддреБрдореНрд╣реА "рд╡реИрдпрдХреНрддрд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддреА рдХрд╡реНрд╣рд░ рдХреЗрд▓реЗрд▓реЗ" рдЖрд╣реЗрдд. рдорд╛рдЭреЗ рдордд рдЕрд╕реЗ рдЖрд╣реЗ рдХреА рднреВрдорд┐рдХрд╛ рд░реЗрдЦреАрдп рдЕрд╕рд▓реНрдпрд╛рд╕ рддреЗ рдЕрдзрд┐рдХ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ (рд╕рд╛рдпрдХреНрд▓реЛрдореЕрдЯрд┐рдХ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕рд┐рдЯреА 1).

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

рдкреБрдвреАрд▓ рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛