Fabric: рдХрд╛рд░реНрдп рд╕реНрддрд░ рдкрд░ рдЫрд┐рдкрд╛рдирд╛ ('рдЪрд▓рдирд╛') рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЕрдЧре░ 2011  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: fabric/fabric

1) рдпрд╣ 'рдПрдЧреНрдЬреАрдХреНрдпреВрдЯрд┐рдВрдЧ рдЯрд╛рд╕реНрдХ ...' рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдЫрд┐рдкрд╛рддрд╛ рдирд╣реАрдВ рд╣реИ
2) рдпрд╣ рдкрд┐рдЫрд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдирдП рд╕рд┐рд░реЗ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ

рдлреИрдмрд╛рдЗрд▓ рд╣реИ:
@ рдЯрд╕реНрдХ
def show_hostname ():
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде (рдЫрд┐рдкрд╛рдиреЗ ('рдЪрд▓ рд░рд╣рд╛ рд╣реИ)):
рд░рди ('рд╣реЛрд╕реНрдЯрдирд╛рдо')
рднрд╛рдЧреЛ ('рддрд╛рд░реАрдЦ')

% /opt/python-2.7/bin/fab -f output.py -H X1, x2 show_hostname
[X1] рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛рд░реНрдп 'show_hostname'
[X1] рдЖрдЙрдЯ: X1mydomain.de
[X1] рдЖрдЙрдЯ: [X1] рдЖрдЙрдЯ: Thu Aug 25 10:34:10 CEST 2011
[X1] рдЖрдЙрдЯ: [x2] рдПрдХреНрдЬрд╝реЗрдХреНрдпреВрдЯрд┐рдВрдЧ рдЯрд╛рд╕реНрдХ 'show_hostname'
[x2] рдмрд╛рд╣рд░: x2.mydomain.de
[x2] рдЖрдЙрдЯ: [x2] рдЖрдЙрдЯ: рдереВ рдЕрдЧрд╕реНрдд реирел 10:34:11 CEST реирежрезрез
[x2] рдмрд╛рд╣рд░:
рдХрд┐рдпрд╛ рд╣реБрдЖред

рдФрд░ рдЬрдм рд╣рдо рдЙрд╕ рдкрд░ рд╣реИрдВ:

3) рд░рди ('hostname') рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрддрд╛ рд╣реИ рдЬреИрд╕реЗ:

[h1] рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛рд░реНрдп 'show_hostname'
[h1] рдмрд╛рд╣рд░: h1.mydomain.de
[h1] рдмрд╛рд╣рд░:

3) рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИ рдФрд░ рдХреНрдпрд╛ 1,2 рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрд╕ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рд╕реЗ рдЖ рд░рд╣реА рд╣реИрдВ?

рдзрдиреНрдпрд╡рд╛рдж,
рд╕реНрд╡реЗрди

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

  • рдХреИрд╕реЗ рднреА "рдЫрд┐рдк рдЧрдпрд╛ред" рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореБрджреНрд░рд┐рдд
  • рдХреИрд╕реЗ "my.server.com рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ..." рднреА рдЫрд┐рдкрд╛рдПрдБ?

рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рд╕рднреА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА) рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрдм рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИред

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

рдпрджрд┐ рдЖрдк рдХрдкрдбрд╝реЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдореБрдЦреНрдп: рдореБрдЦреНрдп , рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ 'рдирд┐рд╖реНрдкрд╛рджрд┐рдд' рд╣реЛрддрд╛ рд╣реИ _outside_ рдХрд╛рд░реНрдп, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИред рдПрдХ рдХрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ (рд╡реИрд╢реНрд╡рд┐рдХ!) рдЖрдк fabric.state.output ['рд░рдирд┐рдВрдЧ'] = рдЧрд▓рдд рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ --hide = рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЧреНрд░реЗрдЧ рд╕рд╣реА рд╣реИ: рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ - рдЬрдм "рдирд┐рд╖реНрдкрд╛рджрди" рд▓рд╛рдЗрдиреЗрдВ рдореБрджреНрд░рд┐рдд рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдЗрд╕рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд╛рд╢ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрддрд╛ред (рдореИрдВ рдирдИ рд╢реИрд▓реА рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрдВрддрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рд╕рдордп ...)

stdout рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрдд рдореЗрдВ Newlines рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рд╣реИрдВ, IIRC, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдпрд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреВрд░рд╕реНрде рдЫреЛрд░ рд╕реЗ рд╣реИ (рдФрд░ рдмрд╕ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдЙрдкрд╕рд░реНрдЧ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд░рд╣рд╛ рд╣реИред) ... рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдмрдЧ_рдкрд░ рд╕реЗ_ рд╣реИред

"рд▓рд╛рдкрддрд╛" рдирдИ рд░реВрдкрд░реЗрдЦрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ - рдореБрдЭреЗ рджреЛрд╣рд░реА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреАред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдмрджрд╕реВрд░рдд рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╣рдореЗрдВ рдХреБрд░реВрдкрддрд╛ рдХреЛ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдХреНрдпрд╛ рдЗрд╕ рдмрдЧ / UI рдЕрд╕рдВрдЧрддрддрд╛ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдореИрдВ рдХрдкрдбрд╝реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреВрдВрдЫрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЙрди "[hostname]" рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдорд╛рд╕реНрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ fabric.state.output['running'] = False рдХреЛрд╢рд┐рд╢ рдХреА, рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ред

@charlax рдЖрдк fab --hide=running рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд░рди рдХреЗ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рд╕реЗ рдЙрд╕ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрддрд░ рдХреЛ рдлреНрд▓рд┐рдк рдХрд░ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рднреА 'рд░рдирд┐рдВрдЧ рдЯрд╛рд╕реНрдХ x' рд╕рд╛рдорд╛рди рдХреЛ рдЫреБрдкрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдЕрдВрджрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдлрд╝реИрдмрд╛рдЗрд▓ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ (рд╢реАрд░реНрд╖) рд╕реНрддрд░ рдкрд░ рдЙрд╕ fabric.state.output рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЬрдм рдЖрдкрдиреЗ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдерд╛ рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХрд╣рд╛рдБ рд░рдЦрд╛ рдерд╛? рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЗ рдЕрдВрджрд░ рд╣реИ рддреЛ рднреА рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдУрд╣ рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдЬреЛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ [host.com] out: рд╣рд┐рд╕реНрд╕рд╛ рдЫрд┐рдкрд╛ рд╣реИ, рдЧрд▓рддрдлрд╣рдореА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

рдЕрд░реНрде _ рдЕрдиреНрдпрд╛рдп_ рд░реЗрдЦрд╛ рдХрд╛ рд╡рд╣ рднрд╛рдЧ? рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдЬреА рдХреЙрдиреНрдлрд┐рдЧ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдлреИрдм 2.0 рдХреЗ рдмрд╛рд╣рд░ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрджрд▓рдирд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рд░рд╣рд╕реНрдп рд╕реЗ рд░реВрдмрд░реВ рдХрд░рд╛рдКрдВрдЧрд╛: рдпрд╣ env.output_prefix , рдЗрд╕реЗ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдмрд╕ рдХреЛрдИ рд▓рд╛рдЗрди рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╢рд╛рдмреНрджрд┐рдХ stdout / stderr рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред

рдзрдиреНрдпрд╡рд╛рдж!

@Hosts () рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдП рдмрд┐рдирд╛ рд░рдирд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ 'рд╣реЛрд╕реНрдЯ' рднрд╛рдЧ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ

fabric.state.output['running']

рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ред рдпрд╣ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП env.hosts рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬреЛ рдХрд┐ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ env.hosts рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЗрд╕реЗ рдПрдХ рдЦрд╛рд▓реА рдкреБрдирд░рд╛рд╡реГрддреНрдд (рдпрд╛ рдХреЛрдИ рднреА) рдкрд░ рд╕реЗрдЯ рди рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рд╕реЗ рд╕реНрдерд╛рдиреАрдп_рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рд╣реЛрд╕реНрдЯ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, @hosts рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА

  • рдХреИрд╕реЗ рднреА "рдЫрд┐рдк рдЧрдпрд╛ред" рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореБрджреНрд░рд┐рдд
  • рдХреИрд╕реЗ "my.server.com рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ..." рднреА рдЫрд┐рдкрд╛рдПрдБ?

рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рд╕рднреА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА) рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрдм рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИред

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

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

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

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

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

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

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