Fabric: v2 . рдореЗрдВ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдордИ 2018  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: fabric/fabric

рдирдорд╕реНрддреЗ! рдХреНрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдлрд╝реИрдмрдлрд╝рд╛рдЗрд▓ рдореЗрдВ hosts рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

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

"рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда" рд╕рдорд╛рдзрд╛рди рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ рд╣рд╛рде рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдирд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

<strong i="10">@task</strong>
def my_ls(c):
    conn = Connection('myhost')
    conn.run('ls')

рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдЧрдВрджрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ (1) рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛ рд╣реИ рдФрд░ (2) рдпрд╣ рд╕рдВрджрд░реНрдн рддрд░реНрдХ рдХреЛ рд╡реНрдпрд░реНрде рдмрдирд╛рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕реЗ рд╕рд╣рдорддред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд░рд╛рдиреА env.hosts рд╕реЗрдЯрд┐рдВрдЧ рдпрд╛рдж рдЖрддреА рд╣реИред рдпрд╣ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╕рд░рд▓ рдерд╛ред

-1 рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдЬреИрд╕реЗ invoke.yaml рдпрд╛ whatnotред рдореИрдВ рдмрдВрджрд░-рдкреИрдЪ рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпрд╛рдд рд╣реБрдХ рдХреЛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдмрддрд╛рдиреЗ рджреЗрдВред

рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рднреА рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ ctx.local рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ :(

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореЗрд░реЗ рдкрд╛рд╕ рднреА рд╡рд╣реА рдкреНрд░рд╢реНрди рд╣реИред рдореИрдВ рдлреИрдмрдлрд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ 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 рджреЗрдЦреЗрдВ!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Grazfather picture Grazfather  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bitprophet picture bitprophet  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jmcgrath207 picture jmcgrath207  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jamesob picture jamesob  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

peteruhnak picture peteruhnak  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ