рдЙрддреНрддрд░рджрд╛рдпреА рдЧрддрд┐ рдмрдврд╛рдЙрдБрджреИ

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

рдпрд╣рд╛рдБ рд░ рддрд▓ рд╣рд╛рдореА Ansible 2.9.x рдЫрд▓рдлрд▓ рдЧрд░реНрдЫреМрдВ, рдЬреБрди рддрдкрд╛рдЗрдБрдХреЛ рдордирдкрд░реНрдиреЗ рддрд░рд┐рдХрд╛рдорд╛ рднрд░реНрдЦрд░реИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ virtualenv рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред

рд╕реНрдерд╛рдкрдирд╛ рдкрдЫрд┐, рддрдкрд╛рдЗрдБрдХреЛ рдкреНрд▓реЗрдмреБрдХрдХреЛ рдЫреЗрдЙрдорд╛ "ansible.cfg" рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН - рдпреЛ рд╕реНрдерд╛рдирд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдпреА рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ, рд╕рд╛рдереИ рддрд┐рдиреАрд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд▓реЛрдб рд╣реБрдиреЗрдЫрдиреНред

рдкрд╛рдЗрдкрд▓рд╛рдЗрди

рдХреЗрд╣реАрд▓реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реБрдиреЗрдХрд╛ рд╣реБрди рд╕рдХреНрдЫрдиреН, рдЕрд░реНрдерд╛рддреН, рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирдЧрд░реНрдиреЗ, рддрд░ рдмреЗрд╕ 64 рдорд╛ рдмреЗрд░рд┐рдПрдХреЛ zip рдЕрднрд┐рд▓реЗрдЦ рд╕рд┐рдзреИ рдкрд╛рдЗрдерди рдЗрдиреНрдЯрд░рдкреНрд░рд┐рдЯрд░рдХреЛ рд╕реНрдЯрдбрд┐рдирдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗ, рддрд░ рдЕрд░реВрд▓реЗ рдирдЧрд░реНрди рд╕рдХреНрдЫрдиреН, рддрд░ рддрдереНрдпред рдПрдХ рддрдереНрдп рд░рд╣рдиреНрдЫ: рдпреЛ рд╕реЗрдЯрд┐рдЩ рдЕрдЭреИ рдкрдирд┐ рдХрдо рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░рд┐рдПрдХреЛ рдЫред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдХреЗрд╣рд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдгрд╣рд░реВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ sudo рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ - рддреНрдпрд╕реИрд▓реЗ рдпреЛ рдЖрджреЗрд╢рд▓рд╛рдИ tty (рдЯрд░реНрдорд┐рдирд▓) рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ, рддреНрдпрд╕реИрд▓реЗ Ansible рд▓реЗ рдпреЛ рдзреЗрд░реИ рдЙрдкрдпреЛрдЧреА рд╕реЗрдЯрд┐рдЩрд▓рд╛рдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрдпреЛред

pipelining = True

рддрдереНрдп рд╕рдЩреНрдХрд▓рди

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

gathering = smart|explicit

ssh рдЬрдбрд╛рдирд╣рд░реВ рдкреБрди: рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХрд╣рд┐рд▓реНрдпреИ рдбрд┐рдмрдЧрд┐рдЩ рдореЛрдбрдорд╛ Ansible рдЪрд▓рд╛рдЙрдиреБрднрдПрдХреЛ рдЫ ("v" рд╡рд┐рдХрд▓реНрдк, рдПрдХ рджреЗрдЦрд┐ рдиреМ рдкрдЯрдХ рджреЛрд╣реЛрд░реНрдпрд╛рдЗрдПрдХреЛ), рддрдкрд╛рдИрдВрд▓реЗ ssh рдЬрдбрд╛рдирд╣рд░реВ рд▓рдЧрд╛рддрд╛рд░ рдмрдирд╛рдЗрдБрджреИ рд░ рдмрд┐рдЪреНрдЫреЗрдж рднрдЗрд░рд╣реЗрдХрд╛ рдЫрдиреН рднрдиреЗрд░ рдпрд╛рдж рдЧрд░реНрдиреБрднрдПрдХреЛ рд╣реЛрд▓рд╛ред рддреНрдпрд╕реЛрднрдП, рдпрд╣рд╛рдБ рдкрдирд┐ рдХреЗрд╣реА рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВ рдЫрдиреНред

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

ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"

рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрд╕реНрдЯрдорд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрджрд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдЦреБрд▓рд╛ ssh рдЬрдбрд╛рди рдкреБрди: рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди, рдХреЗрд╡рд▓ рдЕрд░реНрдХреЛ рдЕрдЬреНрдЮрд╛рдд рд╕реЗрдЯрд┐рдЩ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН ssh_tranfer_methodред рдпрд╕ рд╡рд┐рд╖рдпрдорд╛ рдХрд╛рдЧрдЬрд╛рдд рдЕрддреНрдпрдиреНрддреИ рдЫ рдХрдВрдЬреВрд╕ рд░ рднреНрд░рд╛рдордХ, рдХрд┐рдирднрдиреЗ рдпреЛ рд╡рд┐рдХрд▓реНрдк рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рдХрд╛рдо рдЧрд░реНрджрдЫ! рддрд░ рдкрдвреНрджреИ рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХреЗ рд╣реБрдиреЗрдЫ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ: dd рдЖрджреЗрд╢ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрд╕реНрдЯрдорд╛ рд╕реБрд░реБ рд╣реБрдиреЗрдЫ, рд╕реАрдзрд╛ рдЗрдЪреНрдЫрд┐рдд рдлрд╛рдЗрд▓рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИред

transfer_method = piped

рдЦреИрд░, "рд╡рд┐рдХрд╛рд╕" рд╢рд╛рдЦрд╛рдорд╛ рдпреЛ рд╕реЗрдЯрд┐рдЩ рдкрдирд┐ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рдХрддреИ рдЬрд╛рдБрджреИрдирдиреН.

рдЪрдХреНрдХреБрд╕рдБрдЧ рдирдбрд░рд╛рдЙрдиреБрд╣реЛрд╕реН, рдХрд╛рдБрдЯрд╛рд╕рдБрдЧ рдбрд░рд╛рдЙрдиреБрд╣реЛрд╕реН

рдЕрд░реНрдХреЛ рдЙрдкрдпреЛрдЧреА рд╕реЗрдЯрд┐рдЩ рдлреЛрд░реНрдХ рд╣реЛред рдпрд╕рд▓реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджрдЫ рдЬреБрди рдПрдХреИ рд╕рд╛рде рд╣реЛрд╕реНрдЯрд╣рд░реВрдорд╛ рдЬрдбрд╛рди рд╣реБрдиреЗрдЫ рд░ рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрдЫред рднрд╛рд╖рд╛рдХреЛ рд░реВрдкрдорд╛ рдкрд╛рдЗрдердирдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдХрд╛ рдХрд╛рд░рдг, рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдереНрд░реЗрдбрд╣рд░реВ рд╣реЛрдЗрди, рдХрд┐рдирднрдиреЗ Ansible рд▓реЗ рдЕрдЭреИ рдкрдирд┐ Python 2.7 рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ - рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ asyncio рдЫреИрди, рдпрд╣рд╛рдБ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рд╡реНрдпрд╡рд╣рд╛рд░рдХреЛ рдкрд░рд┐рдЪрдп рджрд┐рдиреБрдХреЛ рдХреБрдиреИ рдЕрд░реНрде рдЫреИрди! рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЙрддреНрддрд░рджрд╛рдпреА рд░рдирд╣рд░реВ рдкрд╛рдБрдЪ рдХрд╛рдорджрд╛рд░рд╣рд░реВ, рддрд░ рдпрджрд┐ рд╕рд╣реА рд░реВрдкрдорд╛ рд╕реЛрдзреНрдиреБрднрдпреЛ рднрдиреЗ, рдпрд╕рд▓реЗ рдердк рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫ:

forks = 20

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

рдпреЛ рд╕рдмреИ рдПрдХ рд╕рд╛рде рд░рд╛рдЦреНрджреИ

рдлрд▓рд╕реНрд╡рд░реВрдк, ansible.cfg (ini рдврд╛рдБрдЪрд╛) рдХреЛ рд▓рд╛рдЧрд┐, рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рди рд╕рдХреНрдЫрдиреН:

[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped

рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕реНрд╡рд╕реНрде рд╡реНрдпрдХреНрддрд┐рдХреЛ рд╕рд╛рдорд╛рдиреНрдп YaML-рд╕реВрдЪреАрдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рд▓реБрдХрд╛рдЙрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдХреЗрд╣рд┐ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

---
all:
  vars:
    ansible_ssh_pipelining: true
    ansible_ssh_transfer_method: piped
    ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпрд╕рд▓реЗ "рдЧрдарди = рд╕реНрдорд╛рд░реНрдЯ/рд╕реНрдкрд╖реНрдЯ" рд░ "рдлреЛрд░реНрдХреНрд╕ = реиреж" рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИрди: рддрд┐рдиреАрд╣рд░реВрдХреЛ YaML рд╕рдордХрдХреНрд╖рд╣рд░реВ рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрдирдиреНред рдпрд╛ рдд рд╣рд╛рдореАрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ ansible.cfg рдорд╛ рд╕реЗрдЯ рдЧрд░реНрдЫреМрдВ, рд╡рд╛ рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ ANSIBLE_GATHERING рд░ ANSIBLE_FORKS рдорд╛рд░реНрдлрдд рдкрд╛рд╕ рдЧрд░реНрдЫреМрдВред

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

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

рдпреА рдордзреНрдпреЗ рдХреЗрд╣реА рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкрдвреНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдХреНрд░рдордорд╛ рдлреЗрд▓рд╛ рдкрд░реЗрдХрд╛ рдерд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рд╕реНрд╡-рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдирд╛рдо "ssh.py" рдЕрдиреНрддрд░реНрдЧрдд рдЬрдбрд╛рди рдкреНрд▓рдЧрдЗрдиред рдо рдЖрд╢рд╛рдорд╛ рдкрдвреНрдиреЗ рдирддрд┐рдЬрд╛рд╣рд░реВ рд╕рд╛рдЭрд╛ рдЧрд░реНрджрдЫреБ рдХрд┐ рдпрд╕рд▓реЗ рдЕрд░реВ рдХрд╕реИрд▓рд╛рдИ рд╕реНрд░реЛрддрд╣рд░реВ рд╣реЗрд░реНрди, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрдвреНрди, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╛рдБрдЪ рдЧрд░реНрди, рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрди рдкреНрд░реЗрд░рд┐рдд рдЧрд░реНрдиреЗрдЫ - рд╕рдмреИ рдкрдЫрд┐, рдврд┐рд▓реЛ рд╡рд╛ рдкрдЫрд┐ рдпреА рд╕рдмреИрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдирддрд┐рдЬрд╛ рд▓реНрдпрд╛рдЙрдиреЗрдЫрдиреНред рднрд╛рдЧреНрдпрд▓реЗ рд╕рд╛рде рджрд┐рдУрд╕реН!

рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред рд╕рд╛рдЗрди рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНрдХреГрдкрдпрд╛

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

  • 69,6%рдкрд╛рдЗрдкрд▓рд╛рдЗрди = true32

  • 34,8%рдЬрдордШрдЯ = рд╕реНрдорд╛рд░реНрдЯ/рд╕реНрдкрд╖реНрдЯ16

  • 52,2%ssh_args = "-o ControlMaster=auto-o ControlPersist=..."24

  • 17,4%рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг_рд╡рд┐рдзрд┐ = piped8

  • 63,0%рдХрд╛рдБрдЯрд╛ = XXX29

  • 6,5%рдпреЛ рдХреБрдиреИ рдкрдирд┐ рд╣реЛрдЗрди, рдХреЗрд╡рд▓ Mitogen3

  • 8,7%Mitogen + рдо рдпреА рдордзреНрдпреЗ рдХреБрди рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдиреЛрдЯ рдЧрд░реНрдиреЗрдЫреБ

46 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред рез рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд░реЛрдХрд┐рдПред

Ansible рдмрд╛рд░реЗ рдердк рд╕рд╛рдорд╛рди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ?

  • 78,3%рд╣реЛ, рдЕрд╡рд╢реНрдп релрек

  • 21,7%рд╣реЛ, рдо рдХреЗрд╡рд▓ рдердк рд╣рд╛рд░реНрдбрдХреЛрд░ рд╕рд╛рдорд╛рди рдЪрд╛рд╣рдиреНрдЫреБ! 15

  • 0,0%рд╣реЛрдЗрди, рд░ рдпреЛ рдХреЗрд╣рд┐рдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди реж

  • 0,0%рд╣реЛрдЗрди, рдпреЛ рдЬрдЯрд┐рд▓ рдЫ !!!0

69 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред 7 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

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

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