Fabric: 'рд╣реЛрд╕реНрдЯ' рд╕реЗ рдкрд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реЛрд▓рдбреЗрдлрд╝ рдХреБрдВрдЬрд┐рдпрд╛рдБ env . рдореЗрдВ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рдлрд╝рд░ре░ 2015  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: fabric/fabric

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдпрд╣ рд╕реНрдирд┐рдкреЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ env рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреБрдВрдЬреА 'foo' рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдХрд░рд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ 'рд╣реЛрд╕реНрдЯ' рдХреБрдВрдЬреА рдХреЛ рдмрд╛рдж рдореЗрдВ рдлреИрдмреНрд░рд┐рдХ рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (env.hosts рдореЗрдВ)

from fabric.api import env

env.roledefs = {
    'web': {
        'hosts': ['www1', 'www2', 'www3'],
        'foo': 'bar'
    },
    'dns': {
        'hosts': ['ns1', 'ns2'],
        'foo': 'baz'
    }
}

рдЗрд╕ рд╕реНрдЯреИрдХрдУрд╡рд░рд▓реЛ рдкреНрд░рд╢реНрди рдкрд░ рдЖрдЧреЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛

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

@bitpropet рдЗрд╕реЗ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЕрддрд┐рд░рд┐рдХреНрдд рд░реЛрд▓рдбреЗрдлрд╝ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдпрд╣ "рдареАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛"?

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

рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ fabfiles.py рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ

рдЬреИрд╕реЗ: list.db
рдЗрдВрдЯрд░рдлрд╝реЗрд╕|рдЖрдИрдкреА|рдкрд╛рд╕рд╡рд░реНрдб|рднреВрдорд┐рдХрд╛....
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдирд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреИрдмреНрд░рд┐рдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдИ рдПрдирд╡реА рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рднреВрдорд┐рдХрд╛рдПрдБ, рдкреНрд░рднрд╛рд╡реА_рд░реЛрд▓, рд╣реЛрд╕реНрдЯ, рд╣реЛрд╕реНрдЯ_рд╕реНрдЯреНрд░рд┐рдВрдЧред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдЬреНрдЬрд╛рдХрд╛рд░ рднреАред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, roledefs рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рд╕рдореВрд╣рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдирд╛рдо рдорд╛рдирдЪрд┐рддреНрд░рдг рд╣реИ, рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ env.hosts рдореЗрдВ рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рдПред

рд░реЛрд▓рдбреЗрдлрд╝реНрд╕ рдХреЛ рдПрдХ рддрд╛рдирд╛рд╢рд╛рд╣реА рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдЕрдиреНрдп рдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ, рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рдмрдЧрд▓ рдореЗрдВ, рдЬреЛ рдХрд┐ рднреВрдорд┐рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреВрд░реНрдг env рдкрде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд env.roledefs.web.foo

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

env.roledefs.web.foo рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ: AttributeError: 'dict' object has no attribute 'web'

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рдирд┐рд░реНрджреЗрд╢ рдХреА рддрд░рд╣ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, env.roledefs['web']['foo'] рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдлреИрдмреНрд░рд┐рдХ рдореЗрдВ рдХреНрдпреЛрдВ рдореМрдЬреВрдж рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рджрд╛ рдирд┐рд░реНрджреЗрд╢ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереА?

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡реИрд╕реЗ рд╣реА рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдкрдХреЛ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЕрдзрд┐рдХ рднреВрдорд┐рдХрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЕрдиреНрдп рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди, рдЬрдм рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ 1.11 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ #1092 рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

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

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

рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░ рд░реЛрд▓рдбреЗрдлрд╝ рдХреЗ рдмрд╛рд╣рд░ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВред

@bitpropet рдЗрд╕реЗ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЕрддрд┐рд░рд┐рдХреНрдд рд░реЛрд▓рдбреЗрдлрд╝ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдпрд╣ "рдареАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛"?

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