рдирдорд╕реНрддреЗ! рдХреНрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдлрд╝реИрдмрдлрд╝рд╛рдЗрд▓ рдореЗрдВ hosts
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╕реАрдПрд▓рдЖрдИ ( -H
) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдлреИрдмрдлрд╛рдЗрд▓ рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред
"рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда" рд╕рдорд╛рдзрд╛рди рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ рд╣рд╛рде рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдирд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
<strong i="10">@task</strong>
def my_ls(c):
conn = Connection('myhost')
conn.run('ls')
рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдЧрдВрджрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ (1) рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛ рд╣реИ рдФрд░ (2) рдпрд╣ рд╕рдВрджрд░реНрдн рддрд░реНрдХ рдХреЛ рд╡реНрдпрд░реНрде рдмрдирд╛рддрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рднреА рд╡рд╣реА рдкреНрд░рд╢реНрди рд╣реИред рдореИрдВ рдлреИрдмрдлрд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ conn = Connection('myhost')
рдбрд╛рд▓рдиреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
conn = Connection('myhost')
<strong i="7">@task</strong>
def my_ls(c):
conn.run('ls')
<strong i="8">@task</strong>
def my_cd(c):
conn.run('cd')
....
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдиреЗрдХреНрд╢рди рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рднреА рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рдореЗрдВ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред
рд╕рд╛рде рд╣реА рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЛ рдПрдХ рд╣реЛрд╕реНрдЯ рд╕реВрдЪреА (-H рдХреЗ рд╕рд╛рде) рдбрд┐рдлреЙрд▓реНрдЯ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ред рдореИрдВ рдЗрд╕реЗ рд░реЛрдХрдиреЗ/рддреНрд░реБрдЯрд┐ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕реЗ рд╕рд╣рдорддред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд░рд╛рдиреА env.hosts рд╕реЗрдЯрд┐рдВрдЧ рдпрд╛рдж рдЖрддреА рд╣реИред рдпрд╣ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╕рд░рд▓ рдерд╛ред
-1 рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдЬреИрд╕реЗ invoke.yaml рдпрд╛ whatnotред рдореИрдВ рдмрдВрджрд░-рдкреИрдЪ рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рд╣реБрдХ рдХреЛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдмрддрд╛рдиреЗ рджреЗрдВред
рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рднреА рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ ctx.local
рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ :(
#4 рджреЗрдЦреЗрдВ!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕реЗ рд╕рд╣рдорддред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд░рд╛рдиреА env.hosts рд╕реЗрдЯрд┐рдВрдЧ рдпрд╛рдж рдЖрддреА рд╣реИред рдпрд╣ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╕рд░рд▓ рдерд╛ред
-1 рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдЬреИрд╕реЗ invoke.yaml рдпрд╛ whatnotред рдореИрдВ рдмрдВрджрд░-рдкреИрдЪ рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рд╣реБрдХ рдХреЛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдмрддрд╛рдиреЗ рджреЗрдВред
рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рднреА рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ
ctx.local
рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ :(