рд▓реЗрдЦрди рдХреЗ рд╕рдордп, v2 рд╢рд╛рдЦрд╛ рдореЗрдВ Group
рд╡рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реНрд╡ рдореЗрдВ 'рднреВрдорд┐рдХрд╛рдУрдВ' рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдиреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрд░реНрдл тАЛтАЛтАЛтАЛ"рдореЗрдЬрдмрд╛рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЬреЛ рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде/рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ"ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрднреА рддрдХ Group
рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдпрд╛ рд▓реЗрдмрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ; рдпрд╣ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╢реБрджреНрдз рдПрдкреАрдЖрдИ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд "рдХрд┐рдпрд╛" рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрдкрдирд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХрд╛ рд░реЛрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реАрдПрд▓рдЖрдИ-рдЙрдиреНрдореБрдЦ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдпрд╛ рдордзреНрдпрд╡рд░реНрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХреБрдЫ рдврд╛рдВрдЪреЗ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд░рдЦреЛ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд░реЛрд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдЧрд░ рд╕реАрдПрд▓рдЖрдИ рдпрд╛ рдЯрд╛рд╕реНрдХ-рдХреЙрд▓рд┐рдВрдЧ рдмрд┐рдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЧреНрд░реБрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдмреЗрдХрд╛рд░ рд╣реИ!
v1 рдореЗрдВ, рднреВрдорд┐рдХрд╛рдПрдВ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рдлреНрд▓реИрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдереАрдВ рдЬреЛ рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрдмрд▓ рдХреЛ рдореИрдк рдХрд░рддреА рдереАрдВ рдЬреЛ рдХрд┐ v2 рдореЗрдВ рд╕рдореВрд╣ рд╣реЛрдВрдЧреЗ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕реАрдПрд▓рдЖрдИ рдкрд░ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ( fab --roles=web,db
) рдФрд░/рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд ( @task('db') \n def migrate():
), рдмрд╣реБрдд рдХреБрдЫ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рддрд░рд╣ред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЙрдиреНрд╣реЗрдВ env.roledefs
рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирд┐рд░реНрджреЗрд╢; рдЙрдиреНрдирдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдордзреНрдпрд╡рд░реНрддреА рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдШреВрдорддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ (рдкреВрд░реНрд╡-рдХрд╛рд░реНрдп рдпрд╛ рд╕рдмрд░реВрдЯреАрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рдХрднреА-рдХрднреА рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╕рдордп рдкрд░ред
Group
s рдФрд░/рдпрд╛ Connection
s рдХреЗ рдХреБрдЫ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВредLexicon
рдмрдЬрд╛рдп dict
редdb
, web
, lb
рдирд╛рдордХ рдкреНрд░рддреНрдпрдХреНрд╖ рдореИрдкрд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ prod
рдирд╛рдордХ рдПрдХ рджреНрд╡рд┐рддреАрдп-рд╕реНрддрд░реАрдп рдирд╛рдо рд╣реИ Lexicon
рдЬреЛрдбрд╝рд╛ рд╣реИред рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдБ рдЕрдиреНрдп рдорд╛рдирдЪрд┐рддреНрд░ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░рддреЗ рд╣реЛрдВредif cxn in group
рдХрд╛рдо рдХрд░реЗрдЧрд╛ рднрд▓реЗ рд╣реА cxn
рдПрдХ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рд╣реИ рдЕрдВрджрд░ рдмрд░рд╛рдмрд░ рд╕рджрд╕реНрдп рд╕реЗ group
редdb
рднреВрдорд┐рдХрд╛ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ"@group
рдЬреИрд╕реЗ @task
, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛рд░реНрдп рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЗрдХрд╛рдЗрдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рдореВрд╣ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВредрдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рд╕реЗ:
рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЖрд░рдИрдПрд╕рдЯреА рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ env.roledefs рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдлреИрдмрдлрд╛рдЗрд▓ рдореЗрдВ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдПрдореНрдмреЗрдб рди рдХрд░рдиреЗ рдпрд╛ рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ:
EnvironmentDatabaseAPIClient(
'https://rest.api.url/schema/',
env.service_name,
).apply_env()
рд╕рд░реНрд╡рд░ рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ - рдПрдХрд╛рдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рд╡реЗрд╢ (рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдирд┐рдЬреА рд╣реИрдВ, рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИрдВ) рдФрд░ рдПрдХрд╛рдзрд┐рдХ рдЙрддреНрдкрд╛рджрди рдкрд░рд┐рд╡реЗрд╢ (рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП)ред рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдореЗрдЬрдмрд╛рди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрдкрдбрд╝реЗ рдХреА рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ ( env.service_name
рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ) рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЗрдЯрд╛-рд░реЛрд▓реНрд╕ (рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рдореВрд╣) рд╣реИрдВред рдЙрдирдХреЗ рдкрд╣рд▓реЗ group-
: group-production
, group-test
, group-external
, group-internal
, group-all
ред рдпрд╣ рд╣рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рд╕рд░реНрд╡рд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП group-all
рдЙрддреНрдкрд╛рджрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рджреЛрдиреЛрдВ рдореЗрдВ рд╕рднреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред
рднреВрдорд┐рдХрд╛ рд╕рдореВрд╣реЛрдВ, рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдореБрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢реЗрд╖ рдХрдкрдбрд╝реЗ рдХрд╛рд░реНрдп рд╣реИрдВред
рд╣рдо рд░рд┐рд╡рд░реНрд╕ рдореИрдкрд┐рдВрдЧ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкрд░ рд░реЛрд▓ рдирд╛рдореЛрдВ рдкрд░ рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ (рд╣реЛрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкреНрд░рддрд┐ service_name рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ)ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЙрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рднреВрдорд┐рдХрд╛ рдореЗрдВ рд╕рднреА рд╣реЛрд╕реНрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕реНрд▓реИрдХ рд╕реВрдЪрдирд╛ рднреЗрдЬрддреЗ рд╣реИрдВред EnvironmentDatabaseAPI рд╕рд░реНрд╡рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдпрд╣ рд▓реЙрдЧ рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрдерд┐рддрд┐ рд░рдЦрддрд╛ рд╣реИ)ред рдпрд╣ рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХрдкрдбрд╝реЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдЬрд╛рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ env.host
, env.port
рдФрд░ env.service_name
(рд╕рд╛рде рд╣реА рдкреНрд░рддрд┐рдмрджреНрдз рдЬрд╛рдирдХрд╛рд░реА) рдХреЛ рд╡рд╛рдкрд╕ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдмрдорд┐рдЯ рдХрд░рддрд╛ рд╣реИред
рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдзрд┐рдХ env
рдЪрд░ рдЦреАрдВрдЪрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрдп рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдзрдиреНрдпрд╡рд╛рдж @ рдореИрдХреНрд╕-рдЕрд░реНрдиреЛрд▓реНрдб! рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЛ рдЕрддреАрдд рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рд╕реЗ рднреА рдкрд╣рдЪрд╛рдирддрд╛ рд╣реВрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░рд┐рд╡рд░реНрд╕ рдореИрдкрд┐рдВрдЧ рдмрд┐рдЯ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдХреБрдЫ рдмрд╛рд░ v1 рдореЗрдВ рдЖ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ред
рдореЗрд░реЗ рд▓рд┐рдП рдлрд╝реИрдмреНрд░рд┐рдХ v2 рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ fab
рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рдиреЛрдВ рдХрд╛ рдХреМрди рд╕рд╛ рд╕реЗрдЯ рд╣реИред
рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ fab -R ...
рдЪрд▓рд╛рдпрд╛ред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рд░реЗрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд╛рдИрдПрдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╕реВрдЪреА рдареАрдХ рд╣реЛрдЧреАред)
рдореИрдВ рдлреИрдмреНрд░рд┐рдХ v2 рдореЗрдВ рдПрдХ рд╕рдордХрдХреНрд╖ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛, рдФрд░ рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдореЗрдВ рднреА рд╡рд┐рдлрд▓ рд░рд╣рд╛:
fabric.yaml
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдпреБрдХреНрддactive_hostset: null
hostsets:
myhostset:
- ...
active_hostset = config["hostsets"][config["active_hostset"]]
рдореЗрдВ fabfile.py
env INVOKE_ACTIVE_HOSTSET=myhostset fab ...
рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реВрдЪреА рдХреЗ рдмрдЬрд╛рдп рдореБрдЭреЗ KeyError: 'active_hostset'
ред
рд╣рдо рдлреИрдмреНрд░рд┐рдХ v1 рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯреЛрдВ рдХреЛ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП role.environment:staging
рдХрд╛рд░реНрдп рдЪрд▓рд╛рдХрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдпрд╣ рдХрд╛рд░реНрдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
V2 рдореЗрдВ рд╣рдордиреЗ рдПрдХ рдХрд╕реНрдЯрдо рдЯрд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ Executor.expand_calls
рд╣рдорд╛рд░реЗ role.environment
рдХрд╛рд░реНрдп рдХреЗ рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рд░реНрдп рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдореЗрдЬрдмрд╛рди рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред
Executor.expand_calls
рдПрдХ рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдирд╛ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдмрд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддреЛ рдКрдкрд░ рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╕реНрдЯрдо Task
рдЬрд┐рд╕реЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдареАрдХ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП fab role.environment dev deploy.app
- role.environment
рдХрд╛рд░реНрдп рдЕрдм deploy.app
рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП deploy.app
рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рд╣реА рд╕реЗрдЯред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдВрдЯреЗ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд┐рдпрд╛:
https://github.com/pyinvoke/invoke/compare/master...rectalogic :expand-generator
https://github.com/fabric/fabric/compare/master...rectalogic :expand-generator
рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝реИрдмреНрд░рд┐рдХ@ 1. рдЪреВрдХ рдЧрдпрд╛ , рдЦрд╛рд╕рдХрд░ рдЬрдм $ fab -R dev
рдЪрд▓ рд░рд╣рд╛ рд╣реЛ
рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдПрдХ рд╣реА рд╕реЗрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдирд╛рдорд┐рдд рднреВрдорд┐рдХрд╛ рдФрд░ рдирд╛рдорд┐рдд рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛? рдХреЗ рд░реВрдк рдореЗрдВ, рджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╡реЗрдм рднреВрдорд┐рдХрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝реИрдмреНрд░рд┐рдХ@ 1. рдЪреВрдХ рдЧрдпрд╛ , рдЦрд╛рд╕рдХрд░ рдЬрдм
$ fab -R dev
рдЪрд▓ рд░рд╣рд╛ рд╣реЛ