рдЙрддреНрддрд░рджрд╛рдпреА рдЖрдзрд╛рд░рднреВрдд рдХреБрд░рд╛рд╣рд░реВ, рдЬрд╕рдХреЛ рдмрд┐рдирд╛ рддрдкрд╛рдИрдВрдХреЛ рдкреНрд▓реЗрдмреБрдХрд╣рд░реВ рдЯрд╛рдБрд╕рд┐рдиреЗ рдкрд╛рд╕реНрддрд╛рдХреЛ рд▓рдореНрдк рд╣реБрдиреЗрдЫрдиреН

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

рдпреЛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЕрдиреНрдпрд╛рдпрд▓рд╛рдИ рд╕рдЪреНрдпрд╛рдЙрди, рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдерд╛рд╣рд╛ рдкрд╛рдЙрдиреЗрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ 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 рдорд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЧрд░реНрди рдЦрддрд░рдирд╛рдХ рдЫ рд░ рдХрд┐рди рдХреЛрдмреЛрд▓ Ansible рднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рдЫ рд╣рд╛рдореА рдЪрд░ рд░ jinja рдмрд╛рд░реЗ рдЕрдзреНрдпрд╛рдп рдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐, рдПрдЙрдЯрд╛ рдХреБрд░рд╛ рднрдиреМрдВ - рддрдкрд╛рдЗрдБрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЧрдгрдирд╛рд▓реЗ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЪрд░рд╣рд░реВрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рдЕрдорд┐рдЯ рдЯреНрд░реЗрд╕ рдЫреЛрдбреНрдЫ, рд░ рддрдкрд╛рдЗрдБ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣рд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред рджреБрдИ "рдЯреНрд░реЗрд╕" рдПрдХрдЫрд┐рди рд╣реБрдиреЗ рдмрд┐рддреНрддрд┐рдХреИ, рд╕рдмреИ рдХреБрд░рд╛ рдЧрдпреЛред

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

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

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

Ansible рдХреЛ рдЖрдзрд╛рд░рднреВрдд рдХреБрд░рд╛рд╣рд░реВ рдмреБрдЭреНрджрд╛ рд╕реНрд╡рд╛рджрдХреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЙрдЪрд┐рдд рдЬрд╡рд╛рдл рджрд┐рдиреНрдЫред

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

рдЕрдм рддрдкрд╛рдИ рдкреНрд▓реЗрдмреБрдХ рд▓реЗрдЦреНрди рдерд╛рд▓реНрдиреБрднрдПрдХреЛ рдмреЗрд▓рд╛рдХреЛ рдЕрд╡рд╕реНрдерд╛рдмрд╛рд░реЗ рдЫрд▓рдлрд▓ рдЧрд░реМрдВред рддрдкрд╛рдИрдВрд▓реЗ foo, bar рд░ baz рдмрдирд╛рдЙрдиреБ рдкрд░реНрдЫред рдХреЗ рдпреА рддреАрди рдХрд╛рд░реНрдп, рдПрдХ рднреВрдорд┐рдХрд╛ рд╡рд╛ рддреАрди рднреВрдорд┐рдХрд╛? рдкреНрд░рд╢реНрди рд╕рдВрдХреНрд╖реЗрдкрдорд╛: рдХреБрди рдмрд┐рдиреНрджреБрдорд╛ рддрдкрд╛рдЗрдБ рднреВрдорд┐рдХрд╛ рд▓реЗрдЦреНрди рд╕реБрд░реБ рдЧрд░реНрдиреБрдкрд░реНрдЫ? рдЬрдм рддрдкрд╛рдИрдВ рдХрд╛рд░реНрдпрд╣рд░реВ рд▓реЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднреВрдорд┐рдХрд╛ рд▓реЗрдЦреНрдиреБрдХреЛ рдЕрд░реНрде рдХреЗ рд╣реЛ?... рднреВрдорд┐рдХрд╛ рдХреЗ рд╣реЛ?

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

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

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

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

рднреВрдорд┐рдХрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗ рд░рд╛рдореНрд░реЛ рдЫ? рдкрд╣рд┐рд▓реЛ, рднреВрдорд┐рдХрд╛рдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВ рдЫрдиреН (/default/main.yaml), рджреЛрд╕реНрд░реЛ, рднреВрдорд┐рдХрд╛рдорд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВ рдЫрдиреНред

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВрдХреЛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдХреЗ рд╣реБрдиреН? рдХрд┐рдирднрдиреЗ рдорд╛рд╕реНрд▓реЛрдХреЛ рдкрд┐рд░рд╛рдорд┐рдбрдорд╛, Ansible рдХреЛ рдЪрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рд╣рд░реВрдХреЛ рдмрд░реБ рд╡рд┐рдХреГрдд рддрд╛рд▓рд┐рдХрд╛, рднреВрдорд┐рдХрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рддрд╣рд░реВ рд╕рдмреИрднрдиреНрджрд╛ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛рд╣рд░реВ рд╣реБрдиреН (рдорд╛рдЗрдирд╕ Ansible рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ)ред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕реВрдЪреА рд╡рд╛ рд╕рдореВрд╣ рдЪрд░рдмрд╛рдЯ рдорд╛рдирд╣рд░реВ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдЪрд┐рдиреНрддрд╛ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН, рддрдм рднреВрдорд┐рдХрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рддрд╣рд░реВ рдорд╛рддреНрд░ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╣реА рдард╛рдЙрдБ рд╣реЛред (рдо рдереЛрд░реИ рдЭреВрдЯ рдмреЛрд▓реНрджреИ рдЫреБ - рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЫрдиреН |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 рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреНред рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рд╕рдмреИ рдкреНрд▓реЗ рд╕рд╣рднрд╛рдЧреАрд╣рд░реВ рдмреАрдЪрдХреЛ рд░рдордЭрдо: pre/post_tasks рд▓реЗ рднреВрдорд┐рдХрд╛ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВрд▓рд╛рдИ рддрд╛рдиреНрди рд╕рдХреНрдЫ, рд░ рднреВрдорд┐рдХрд╛рд▓реЗ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВрд▓рд╛рдИ рдирд╛рдЯрдХрдмрд╛рдЯ рддрд╛рдиреНрди рд╕рдХреНрдЫред рдпрджреНрдпрдкрд┐, рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВрд▓рд╛рдИ "рдХреНрд░рд╕-рд░реЛрд▓" рдХрд▓рд╣рд░реВрд▓реЗ рддреБрдЪреНрдЫ рд╣реНрдпрд╛рдиреНрдбрд▓рд░ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБ рднрдиреНрджрд╛ рдзреЗрд░реИ wtf рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫред (рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕рд╣рд░реВрдХреЛ рдЕрд░реНрдХреЛ рддрддреНрд╡ рднрдиреЗрдХреЛ рд╣реНрдпрд╛рдиреНрдбрд▓рд░ рдирд╛рдорд╣рд░реВ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдирдЧрд░реНрдиреБ рд╣реЛ)ред

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

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

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

рдЕрд▓рдЧ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдЪрд░рд╣рд░реВрдХреЛ рдЙрдкрд▓рдмреНрдзрддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд▓реВрдкрдХреЛ рд╕рд╛рде рдХрд╛рд░реНрдпрд▓рд╛рдИ рд╕реВрдЪрд┐рдд рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рдЪрд░рд╣рд░реВрдорд╛ рдХреЗ рд╣реБрдиреЗрдЫ? рддрдкрд╛рдИрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд░реВрдкрдорд╛ рдЕрдиреБрдорд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рдпреЛ рд╕рдзреИрдВ рдорд╛рдореВрд▓реА рд╣реБрдБрджреИрди, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдпрджрд┐ рдЪрд░рд╣рд░реВ рд╡рд┐рднрд┐рдиреНрди рдард╛рдЙрдБрд╣рд░реВрдмрд╛рдЯ рдЖрдЙрдБрдЫрдиреНред

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

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

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

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

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

рдирд┐рдореНрди рднрд╛рдЧрд╣рд░реВрдорд╛

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди