рд╣рд╡рд╛рдирд╛ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдХреАрд╕реНрдЯреЛрди рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдУрдкрдирд╕реНрдЯреИрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ

рд▓реЗрдЦрдХ рд╕рд░реНрдЧреЗрдИ рдХрд╛рд╢рд╛рдмрд╛



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

рдпрд╣ рдЖрд▓реЗрдЦ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдбреЛрдореЗрди рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ



рдкреНрд░реЗрд░рдгрд╛



рд╣рдордиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдбреЛрдореЗрди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдерд╛ рдЬрдм рд╣рдорд╛рд░реЗ рдПрдХ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдУрдкрдирд╕реНрдЯреИрдХ рдбреЛрдореЗрди рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣ рдЧреНрд░рд┐рдЬрд▓реА рдЪрдХреНрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ред рд╣рдордиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ рдФрд░ рдХрд╣рд╛: тАЬрдпреЛ-рд╣реЛ-рд╣реЛ! рд╣рдо рдбреЛрдореЗрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! тАЭ рдЙрд╕ рд╕рдордп, рдпрд╣ рд╕рд┐рд░реНрдл рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред



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



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



рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ:

1. IaaS рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ (рдЕрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ) рдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЛрдореЗрди рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



2. IaaS рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреЛрдореЗрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



3. рдПрдХ рдбреЛрдореЗрди рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:



тАв рдЗрд╕ рдбреЛрдореЗрди рдХреЗ рднреАрддрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рд╣рдЯрд╛рдПрдВ, рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ рдЗрд╕ рдбреЛрдореЗрди рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред



тАв рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ CRUD рд╕рдВрдЪрд╛рд▓рди рдХрд░реЗрдВред



4. LDAP рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



5. рдХреЗрд╡рд▓ REST API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рди рддреЛ UI рдФрд░ рди рд╣реА CLI рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдЗрд╕ рдмрд╛рд░ рд╣рдордиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рд╣рд╡рд╛рдирд╛ рдореЗрдВ рдбреЛрдореЗрди, рдХрдо рд╕реЗ рдХрдо, рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдзреНрдпрд╛рди, рдорд╛рд░реНрдЪ!



рд╣рдордиреЗ рджреЗрд╡рд╕реНрдЯреИрдХ рдореЗрдВ рд╕реНрдерд┐рд░ / рд╣рд╡рд╛рдирд╛ рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдбреЛрдореЗрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рд▓реЛрдХрд▓ рдЖрд░реНрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред



рдЕрдзреНрдпрдпрди рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕реАрдПрд▓рдЖрдИ рдХреЗрд╡рд▓ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрд╣ рдФрд╕рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ ( рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рдЗрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдорд╛рдорд▓реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдпрд╣рд╛рдВ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ )ред



рдбреЛрдореЗрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

1. рдорд╛рд░реНрдХрд░ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ UUID рдореЗрдВ рдмрджрд▓реЗрдВ (рдлрд╝рд╛рдЗрд▓ рдХреАрд╕реНрдЯреЛрди.рдХреЙрдиреНрдлрд╝, рдЕрдиреБрднрд╛рдЧ [рд╣рд╕реНрддрд╛рдХреНрд╖рд░], token_format = UUID)ред Glance рдореЗрдВ PKI рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо v3 рдЯреЛрдХрди рдХреЗ рд╕рд╛рде), рдФрд░ рдЬрдм рдкреНрд░рдорд╛рдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ PKI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ 'рдмреЙрдбреА рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ' рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ (рд╕рдорд╕реНрдпрд╛ рди рдХреЗрд╡рд▓ рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЛрддреА рд╣реИ) ред



2. рдареАрдХ рд╕реЗ рдХреАрд╕реНрдЯреЛрди рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдиреАрддрд┐ред Json рдлрд╝рд╛рдЗрд▓ред рдбреЛрдореЗрди рд╕рддреНрдпрд╛рдкрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рдЧрд┐рдЯ рд╕реЗ рдХреАрд╕реНрдЯреЛрди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдЙрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП ред



3. Glas-api рдФрд░ paste.registry рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ Glance рдореЗрдВ Nova, Glance-api рдФрд░ paste.registry рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдХрд░ V3.0 рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП 'рдлрд┐рд▓реНрдЯрд░': Corttoken] рдЕрдиреБрднрд╛рдЧ рдореЗрдВ 'рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░_version = v3.0' рдЬреЛрдбрд╝реЗрдВред рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рд╣рдордиреЗ рд╡реАрдПрдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдиреЛрд╡рд╛ рдФрд░ рдЧреНрд▓реЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Nova рдФрд░ Glance рдХреНрд▓рд╛рдЗрдВрдЯ V2 рдЯреЛрдХрди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ "рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреЛрдореЗрди V2.0 рдкрд░ рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рд╣реИ" ("рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреЛрдореЗрди V2.0 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ")ред



4. рдЕрд▓рдЧ рдХреАрд╕реНрдЯреЛрди рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рддрд╛рдХрд┐ рдкрд╣рдЪрд╛рди рд╕реЗрд╡рд╛ v3 рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗ, рди рдХрд┐ v2.0ред



5. рдЙрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ рдЬрд┐рдирдХреА рд╕реЗрдЯрд┐рдВрдЧ рдмрджрд▓ рджреА рдЧрдИ рд╣реИред



рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░, рд╣рдордиреЗ рдХреЗрд╡рд▓ REST рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ CLI / PythonAPI / UI рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред



рдбреЛрдореЗрди рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ



рдбреЛрдореЗрди рдХреА рдЦреЛрдЬ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:

1. рдХреИрд╕реЗ рдПрдХ рдорд╛рд░реНрдХрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЯреЛрдХрди рдЧреБрдВрдЬрд╛рдЗрд╢ред



2. рд░рд╛рдЬрдиреЗрддрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



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



рдорд╛рд░реНрдХрд░ рдирд┐рд░реНрдорд╛рдг


рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдорд╛рд░реНрдХрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



curl -si -X POST -H "рдХрдВрдЯреЗрдВрдЯ-рдЯрд╛рдЗрдк: рдПрдкреНрд▓реАрдХреЗрд╢рди / рдЬрд╕рди" -d '{"рдСрд░реНрдЯрд┐рдХрд▓": {"рд╕реНрдХреЛрдк": {"рдбреЛрдореЗрди": {"id": "XXXXX"}}, "рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА": "" рдкрд╛рд╕рд╡рд░реНрдб ": {" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ": {" рдбреЛрдореЗрди ": {" рдирд╛рдо ":" рдбрд┐рдлрд╝реЙрд▓реНрдЯ "}," рдкрд╛рд╕рд╡рд░реНрдб ":" рдорд╛рддреНрд░рд╛ "," рдЖрдИрдбреА ":" YYYYYY "}}," рддрд░реАрдХреЗ ": [" рдкрд╛рд╕рд╡рд░реНрдб " "]}}}" 127.0.0.1 : 5000 / v3 / рд╕рд╛рдорд╛рдиреНрдп / рдЯреЛрдХрди | awk '/ X-Subject-Token / {Print $ 2}' | tr -d '\ r'



рдпрд╣рд╛рдВ рдЖрдк json рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдирд┐рдХрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЧреБрдВрдЬрд╛рдЗрд╢ред рдПрдХ рдбреЛрдореЗрди рдпрд╛ рддреЛ рдПрдХ рдбреЛрдореЗрди рдпрд╛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдорд╛рд░реНрдХрд░ рдХреНрд╖реЗрддреНрд░ рдиреАрддрд┐ рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдФрд░ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрджрд┐ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреАрд╕реНрдЯреЛрди / рдСрд░реНрдЯрд┐рдХрд▓ / рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕рд╣реЛрдо: AuthInfo._validate_and_normalize_scope_data рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рддрдм рдкреЙрд▓рд┐рд╕реА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред



рдиреАрддрд┐ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ


рдкреЙрд▓рд┐рд╕реА рдЪрд▓рд╛рдирд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдпрд╣ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЬреИрд╕реЗ рд╣реА рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЖрдк рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЛрдореЗрди рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреЙрд▓рд┐рд╕реА рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рддреАрди рдирдП рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓, рдкреЙрд▓рд┐рд╕реА рдФрд░ рд▓рдХреНрд╖реНрдпред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реИред



рд╕рд╛рдЦ (рд╕рд╛рдЦ)


рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдорд╛рд░реНрдХрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдорд╛рд░реНрдХрд░ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдорд╛рд░реНрдХрд░ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд╕рд╛рде рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реМрдВрдкреА рдЧрдИ рднреВрдорд┐рдХрд╛рдПрдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред



рдиреАрддрд┐ (рдиреАрддрд┐)


рдПрдХ рдиреАрддрд┐ OR / AND рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдпреБрдХреНрдд рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ, рдЗрд╕реЗ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреЙрд▓рд┐рд╕реА рдХреЗ рдХреБрдЫ рдЯреБрдХрдбрд╝реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВред



"Admin_required": [["рднреВрдорд┐рдХрд╛: рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ"]],



"рд╕реНрд╡рд╛рдореА": [["user_id:% (user_id) s"], ["user_id:% (target.entity.user_id) s"]],



"рдкрд╣рдЪрд╛рди: get_project": [["рдирд┐рдпрдо: admin_required",

"Domain_id:% (target.project.domain_id) s"]],



"рдкрд╣рдЪрд╛рди: list_projects": [["рдирд┐рдпрдо: admin_required", "domain_id:% (domain_id) s"]]ред



"рдкрд╣рдЪрд╛рди: list_user_projects": [["рдирд┐рдпрдо: рд╕реНрд╡рд╛рдореА"], ["рдирд┐рдпрдо: admin_request",

"Domain_id:% (domain_id) s"]],



рд╕рдм рдХреБрдЫ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ ([]) рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



рдПрдХ рдирд┐рдпрдо рдХрд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдЯреБрдХрдбрд╝рд╛ (рдЖрдк рдЗрд╕реЗ "рдкрд░рдорд╛рдгреБ" рдирд┐рдпрдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ) рд╕реАрдорд╛рдВрдХрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬреЛ рд╕реАрдорд╛рдВрдХрдХ (':') рд╣реИред рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

рдПрдХ рдФрд░ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП 1.Linkред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╛рдИрдВ рдУрд░ "рдирд┐рдпрдо" рд╣реИ, рдФрд░ рджрд╛рдИрдВ рдУрд░ рдирд┐рдпрдо рдХрд╛ рдирд╛рдо рд╣реИред



2. рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╛рдИрдВ рдУрд░ рд╡рд╣ рдХреБрдВрдЬреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реИ, рдФрд░ рд░рд╛рдЗрдЯ рд╕рд╛рдЗрдб - рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ 'рд▓рдХреНрд╖реНрдп' рдореЗрдВ рд╣реИред рдпрд╣ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓_рдмреЙрдЬреЗрдХреНрдЯ [рдмрд╛рдПрдВ_рд╕рд╛рдЗрдб] == рд░рд╛рдЗрдЯ_рд╕рд╛рдЗрдб% target_object рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдХрдИ рдкрд░рдорд╛рдгреБ рдирд┐рдпрдореЛрдВ рдХреЛ рдПрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо (,) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпреЗ рдирд┐рдпрдо AND рддрд░реНрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: ["рдирд┐рдпрдо: admin_required", "domain_id:% (domain_id) s"])ред рд╣рдо рдЗрд╕реЗ "рдФрд░ рдирд┐рдпрдо" рдХрд╣рддреЗ рд╣реИрдВред



рдпрджрд┐ рдирд┐рдпрдореЛрдВ рдХреЗ рджреЛ рд╕реЗрдЯ [] рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИрдВ, рддреЛ рд╡реЗ OR рд▓реЙрдЬрд┐рдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, [["рдирд┐рдпрдо: рд╕реНрд╡рд╛рдореА"], ["рдирд┐рдпрдо: admin_required"]] рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕реНрд╡рд╛рдореА рдХреЗ рд╢рд╛рд╕рди рдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд┐рдпрдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдирд┐рдпрдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдпрджрд┐ рдирд┐рдпрдо рдХрд┐рд╕реА рдЕрдиреНрдп рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд┐рдпрдо рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "" рдкрд╣рдЪрд╛рди: list_user_projects ": [[" рдирд┐рдпрдо: рд╕реНрд╡рд╛рдореА "], [" рдирд┐рдпрдо: admin_required "," domain_id:% (domain_id) s "]]" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИ рдЬрдм рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИред 'рд╕реНрд╡рд╛рдореА' рдирд╛рдо рдХреЗ рд╕рд╛рде рдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд┐рдпрдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЯреЛрдХрди рдХреНрд╖реЗрддреНрд░ рд╕реЗ domain_id рд▓рдХреНрд╖реНрдп рд╕реЗ рдбреЛрдореЗрди рдЖрдИрдбреА рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред ' рдЕрдм рд╣рдо рд▓рдХреНрд╖реНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред



рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ (рд▓рдХреНрд╖реНрдп)


рд▓рдХреНрд╖реНрдп рд╡рд╕реНрддреБ рднреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╣реИ:

тАв рдХреНрд╡реЗрд░реА (рдЕрдиреБрд░реЛрдз) рд╕реЗ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ;



тАв рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рд╡рд╕реНрддреБрдПрдВред



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

тАв рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд▓рдХреНрд╖реНрдп рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ



тАв рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рднреВрдорд┐рдХрд╛ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓рдХреНрд╖реНрдп рднреВрдорд┐рдХрд╛ + рдкрд░рд┐рдпреЛрдЬрдирд╛ + рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИред



тАв рдпрджрд┐ рд╣рдо рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓рдХреНрд╖реНрдп рдореВрд▓реНрдп рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдкрд╣рд▓реЗ рддреЛ рдпрд╣ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рдХреБрдЫ рдСрдкрд░реЗрд╢рди рд╣рд╡рд╛рдирд╛ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдереЗред рд▓реЗрдХрд┐рди рд╣рдо рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдереЗ, рдореБрдЭрд╕реЗ рдЧрд▓рддреА рд╣реБрдИред)



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



рдЕрдиреБрд░реЛрдз рдЙрджрд╛рд╣рд░рдг:



curl -sX GET -H "X-Auth-Token: $ OS_MYTOKEN" 127.0.0.1 : 5000 / v3 / рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕? domain_id = $ OS_DOMAIN_ID



рдЗрд╕ рдЕрдиреБрд░реЛрдз рдореЗрдВ, рдХреЗрд╡рд▓ domain_id рдХреЛ рд▓рдХреНрд╖реНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреЙрд▓рд┐рд╕реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирд┐рдпрдо .json рдлрд╝рд╛рдЗрд▓ "рдкрд╣рдЪрд╛рди: list_projects" рд╣реЛ рд╕рдХрддреА рд╣реИ: [[рдирд┐рдпрдо: admin_required "," domain_id:% (domain_id) s "]ред



рдпрд╣ рд╕рдм рдЬрд╛рдирддреЗ рд╣реБрдП рднреА рдЖрдк рдкреЙрд▓рд┐рд╕реА рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓реЗрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдбреАрдмрдЧрд┐рдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХреАрд╕реНрдЯреЛрди / рдкреЙрд▓рд┐рд╕реА / рдмреИрдХреЗрдВрдб / рд░реВрд▓реНрд╕рд╣реЛрдо рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ: рд▓реЙрдЧ рдЗрди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕, рдирд┐рдпрдо рдФрд░ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкрджреНрдзрддрд┐ рдиреЗ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХреА рдХрд┐ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред



рдХреНрд▓рд╛рдЙрдб рдПрдбрдорд┐рди


рдореМрдЬреВрджрд╛ рдкреЙрд▓рд┐рд╕реА.рдЬрд╕рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ 'рдХреНрд▓рд╛рдЙрдб_рдбрдорд┐рди' рдирд┐рдпрдо рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ:



"Cloud_admin": "рдирд┐рдпрдо: admin_required рдФрд░ domain_id: admin_domain_id",

"рдкрд╣рдЪрд╛рди: get_domain": "рдирд┐рдпрдо: cloud_admin",



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

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



рдХреНрд╖рд┐рддрд┐рдЬ рд╕рдорд░реНрдерди



рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреНрд╖рд┐рддрд┐рдЬ рдХрдИ рдбреЛрдореЗрди рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╛ рддреЛ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдХреЗрд╡рд▓ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдпрд╛ рд▓реЛрдХрд▓_рд╕реЗрдЯрд┐рдВрдЧ (рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЕрдкрдиреА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ):



OPENSTACK_API_VERSIONS = {

"рдкрд╣рдЪрд╛рди": 3

}



OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = рд╕рддреНрдп

#OPENSTACK_KEYSTONE_URL = "http: //% s: 5000 / v2.0 ACK% OPENSTACK_HOST

OPENSTACK_KEYSTONE_URL = "http: //% s: 5000 / v3 OP% OPENSTACK_HOST

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



рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд╕реАрдПрд▓рдЖрдИ)



рдЬрдирд╡рд░реА 2014 рдХреЗ рдордзреНрдп рдореЗрдВ, рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рдбреЛрдореЗрди рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:



-рдУрд╕-рдбреЛрдореЗрди-рдирд╛рдо <рдСрд░реНрдЯ-рдбреЛрдореЗрди-рдирд╛рдо>



рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЛрдореЗрди-рд╕реНрддрд░реАрдп рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдбреЛрдореЗрди рдирд╛рдо (рдкрд░реНрдпрд╛рд╡рд░рдг: OS_DOMAIN_NAME)ред



-рдУрд╕-рдбреЛрдореЗрди-рдЖрдИрдбреА <рдСрд░реНрдЯ-рдбреЛрдореЗрди-рдЖрдИрдбреА>



рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЛрдореЗрди-рд╕реНрддрд░реАрдп рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреНрд╖реЗрддреНрд░ рдХреА рдбреЛрдореЗрди рдЖрдИрдбреА (рдкрд░реНрдпрд╛рд╡рд░рдг: OS_DOMAIN_ID)ред



-OOS- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдбреЛрдореЗрди-рдирд╛рдо <рдСрд░реНрдЯ-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдбреЛрдореЗрди-рдирд╛рдо>



рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЛрдореЗрди рдирд╛рдо (рдкрд░реНрдпрд╛рд╡рд░рдг: OS_USER_DOMAIN_NAME)ред



-рдУрд╕-рдпреВрдЬрд░-рдбреЛрдореЗрди-рдЖрдИрдбреА <рдСрд░реНрдереЛрд░-рдпреВрдЬрд░-рдбреЛрдореЗрди-рдЖрдИрдбреА>



рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЛрдореЗрди рдЖрдИрдбреА (рдкрд░реНрдпрд╛рд╡рд░рдг: OS_USER_DOMAIN_ID)ред



-OO- рдкрд░рд┐рдпреЛрдЬрдирд╛-рдбреЛрдореЗрди-рдирд╛рдо <рд╡рд╕реНрддреБ-рдкрд░рд┐рдпреЛрдЬрдирд╛-рдбреЛрдореЗрди-рдирд╛рдо>



рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдбреЛрдореЗрди рдирд╛рдо, рдЬреЛ рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЛрдореЗрди-рд╕реНрддрд░реАрдп рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреНрд╖реЗрддреНрд░ рд╣реИ (рдкрд░реНрдпрд╛рд╡рд░рдг: OS_PROJECT_DOMAIN_NAME)ред



-OOs- рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рдбреЛрдореЗрди-рдЖрдИрдбреА <рд╕реНрдерд┐рддрд┐-рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рдбреЛрдореЗрди-рдЖрдИрдбреА>



рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЛрдореЗрди рдЖрдИрдбреА, рдЬреЛ рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЛрдореЗрди-рд╕реНрддрд░реАрдп рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреНрд╖реЗрддреНрд░ (рдкрд░реНрдпрд╛рд╡рд░рдг: OS_PROJECT_DOMAIN_ID) рд╣реИред

рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдорд╛рд░реНрдХрд░ рдХреНрд╖реЗрддреНрд░, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЛрдореЗрди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЛрдореЗрди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛



рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реНрд▓ рдХрдорд╛рдВрдб рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдХрд┐ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП REST рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рдЪрд▓ рд░рд╣реЗ рдереЗред



рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ:


Json рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ jq рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред



sudo apt-get install рдЬрд╛рдХ



рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (LDAP рд╕реЗ) рднреА рдмрдирд╛рдП: user0, рдбреЗрдореЛ



рдПрдХ рдЙрджрд╛рд╣рд░рдг:


рдкрд░реАрдХреНрд╖рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:



#export рдкреНрд░рд╛рд░рдВрдн рдЪрд░ред



рдирд┐рд░реНрдпрд╛рдд OS_AUTH_URL = http: //127.0.0.1: 5000 / v3



рдирд┐рд░реНрдпрд╛рдд OS_SERVICE_TOKEN = рдУрдкрдирд╕реНрдЯреИрдХ



# рд╕реВрдЪреА рдбреЛрдореЗрди



рдХрд░реНрд▓ -sX GET -H "X-Auth-Token: $ OS_SERVICE_TOKEN" 127.0.0.1 : 35357 / v3 / рдбреЛрдореЗрди | jq '.domains'



#or



рдУрдкрдирд╕реНрдЯреИрдХ-рдкрд╣рдЪрд╛рди-рдПрдкреАрдЖрдИ-рд╕рдВрд╕реНрдХрд░рдг 3 -реЛрд╕-рдпреВрдЖрд░рдПрд▓ 127.0.0.1 : 35357 / v3--рдЯреЛрдХрди рдУрдкрдирд╕реНрдЯреИрдХ рдбреЛрдореЗрди рд╕реВрдЪреА



# рдХреНрд░рд┐рдПрдЯ рдбреЛрдореЗрди



curl -sX POST -H "X-Auth-Token: $ OS_SERVICE_TOKEN" -H "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░: рдЖрд╡реЗрджрди / json" -d "{" рдбреЛрдореЗрди ": {" рд╕рдХреНрд╖рдо ": рд╕рддреНрдп," рдирд╛рдо ":" dom0 тА│} } ' 127.0.0.1 : 35357 / v3 / рдбреЛрдореЗрди | jq 'ред'



# рд╕реВрдЪреА рд╢реЛ domain0



рдХрд░реНрд▓ -s -X GET -H "X-Auth-Token: $ OS_SERVICE_TOKEN" 127.0.0.1 : 35357 / v3 / рдбреЛрдореЗрди? рдирд╛рдо = dom0 | jq '.domains'



# рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреЛрдореЗрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ



рдЖрдИрдбреА рднреВрд▓ рдЬрд╛рдУ



рдХрд░реНрд▓ -sX GET -H "X-Auth-Token: $ OS_SERVICE_TOKEN" 127.0.0.1 : 35357 / v3 / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛? рдирд╛рдо = user0 | jq '.users'



рдирд┐рд░реНрдпрд╛рдд OS_USER_ID = curl -sX GET -H "X-Auth-Token: $ OS_SERVICE_TOKEN" 127.0.0.1 : 35357 / v3 / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛? рдирд╛рдо = user0 | jq '.users []ред id' | tr -d '' ''



рдХрд░реНрд▓ -sX GET -H "X-Auth-Token: $ OS_SERVICE_TOKEN" 127.0.0.1 : 35357 / v3 / рдбреЛрдореЗрди? рдирд╛рдо = dom0 | jq '.domains'



рдирд┐рд░реНрдпрд╛рдд OS_DOMAIN_ID = curl -sX GET -H "X-Auth-рдЯреЛрдХрди: $ OS_SERVICE_TOKEN" 127.0.0.1 : 35357 / v3 / рдбреЛрдореЗрди рдирд╛рдо? = = dom0 | jq '.domains []ред id' | tr -d '""



рдХрд░реНрд▓ -sX GET -H "X-Auth-Token: $ OS_SERVICE_TOKEN" 127.0.0.1 : 35357 / v3 / рднреВрдорд┐рдХрд╛рдПрдБ? рдирд╛рдо = рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ | jq '.roles'



curl -sX PUT -H "X-Auth-Token: $ OS_SERVICE_TOKEN" 127.0.0.1 : 35357 / v3 / рдбреЛрдореЗрди / $ OS_DOMAIN_ID / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / $ OS_USER_ID / рднреВрдорд┐рдХрд╛ / bc485df1732140928ad44804a1c9b5c5465465



curl -sX GET -H "X-Auth-Token: $ OS_SERVICE_TOKEN" 127.0.0.1 : 35357 / v3 / рдбреЛрдореЗрди / $ OS_DOMAIN_ID / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / $ OS_USER_ID / рднреВрдорд┐рдХрд╛ / | | jq '.roles'



рдПрдХ рдбреЛрдореЗрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ #Authenticate



рдирд┐рд░реНрдпрд╛рдд OS_MYTOKEN = curl -si -X POST -H "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░: рдЕрдиреБрдкреНрд░рдпреЛрдЧ / json" -d "{\" рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ \ ": {\" рдЧреБрдВрдЬрд╛рдЗрд╢ \ ": {\" рдбреЛрдореЗрди \ ": {\" рдЖрдИрдбреА \ " : \ "$ OS_DOMAIN_ID \"}}, \ "рдкрд╣рдЪрд╛рди \": {\ "рдкрд╛рд╕рд╡рд░реНрдб \": {\ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ \": {\ "рдбреЛрдореЗрди \": {\ "рдирд╛рдо \": \ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ \"} , \ "рдкрд╛рд╕рд╡рд░реНрдб \": \ "рдХреНрд╡рд░реНрдЯреА \", \ "рдЖрдИрдбреА \": \ "$ OS_USER_ID \"}}, \ "рддрд░реАрдХреЗ \": [\ "рдкрд╛рд╕рд╡рд░реНрдб \"]}}}} " 127.0.0.1 : 5000" / v3 / рд╕рд╛рдорд╛рдиреНрдп / рдЯреЛрдХрди | awk '/ X-Subject-Token / {Print $ 2}' | tr -d '\ r'



#create рдкреНрд░реЛрдЬреЗрдХреНрдЯ



curl -sX POST -H "X-Auth-Token: $ OS_MYTOKEN" -H "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░: рдЕрдиреБрдкреНрд░рдпреЛрдЧ / json" -d "{\" рдкреНрд░реЛрдЬреЗрдХреНрдЯ \ ": {\" name \ ": \" dom0p0 \ ", \ "рд╕рдХреНрд╖рдо \": рд╕рд╣реА, \ "рдбреЛрдореЗрди_рдЖрдИрдбреА \": \ "$ OS_DOMAIN_ID \", \ "рд╡рд┐рд╡рд░рдг \": \ "\"}} " 127.0.0.1 : 5000 / v3 / рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ | jq 'ред"



curl -sX GET -H "X-Auth-Token: $ OS_MYTOKEN" 127.0.0.1 : 5000 / v3 / рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕? domain_id = $ OS_DOMAIN_ID \ & name = dom000ред jq '.projects'



рдирд┐рд░реНрдпрд╛рдд OS_PROJECT_ID = curl -sX GET -H "X-Auth-Token: $ OS_MYTOKEN" 127.0.0.1 : 5000 / v3 / рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕? domain_id = $ OS_DOMO_ID \ & name = dom0p0 | jq '.projects []ред id' | tr -d '""



#add рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП



рдХрд░реНрд▓ -sX GET -H "X-Auth-Token: $ OS_MYTOKEN" 127.0.0.1 : 35357 / v3 / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛? рдирд╛рдо = рдбреЗрдореЛ | jq '.users'



рдирд┐рд░реНрдпрд╛рдд OS_DEMOUSER_ID = curl -sX GET -H "X-Auth-Token: $ OS_MYTOKEN" 127.0.0.1 : 35357 / v3 / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛? рдирд╛рдо = рдбреЗрдореЛ | jq '.users []ред id' | tr -d '' ''



рдХрд░реНрд▓ -sX GET -H "X-Auth-Token: $ OS_MYTOKEN" 127.0.0.1 : 35357 / v3 / рднреВрдорд┐рдХрд╛рдПрдБ? рдирд╛рдо = рд╕рджрд╕реНрдп | jq '.roles'



рдХрд░реНрд▓ -X PUT -H "X-Auth-Token: $ OS_MYTOKEN" 127.0.0.1 : 5000 / v3 / рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ / $ OS_PROJECT_ID / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ / $ OS_DEMOUSER.ID / рднреВрдорд┐рдХрд╛рдУрдВ / c861b57d824d4619a739823d86308686646b6



рдХрд░реНрд▓ -X GET -H "X-Auth-Token: $ OS_MYTOKEN" 127.0.0.1 : 5000 / v3 / рдкреНрд░реЛрдЬреЗрдХреНрдЯ / $ OS_PROJECT_ID / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / $ OS_DEMOUSER_ID / рднреВрдорд┐рдХрд╛ / 'jq' .roles '|



рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ #authenticate



рдирд┐рд░реНрдпрд╛рдд OS_DEMOTOKEN_ID = рдХрд░реНрд▓ -si -X POST -H "рдХрдВрдЯреЗрдВрдЯ-рдЯрд╛рдЗрдк: рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдЬрд╕рди" -d "{\" рдСрд░реНрдЯрд┐рдХрд▓ \ ": {\" рд╕реНрдХреЛрдк \ ": {\" рдкреНрд░реЛрдЬреЗрдХреНрдЯ \ ": {" рдЖрдИрдбреА " : \ "$ OS_PROJECT_ID \", \ "рдбреЛрдореЗрди \": {\ "рдЖрдИрдбреА \": \ "$ OS_DOMAIN_ID \"}}}, \ "рдкрд╣рдЪрд╛рди \": {\ "рдкрд╛рд╕рд╡рд░реНрдб \": \ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ \" : {\ "рдбреЛрдореЗрди \": {\ "рдирд╛рдо \": \ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ \"}, \ "рдкрд╛рд╕рд╡рд░реНрдб \": \ "рдУрдкрдирд╕реНрдЯреИрдХ \", \ "рдЖрдИрдбреА \": \ "$ OS_DEMOUSER_ID \"}}, \ "рд╡рд┐рдзрд┐рдпрд╛рдБ \": [\ "рдкрд╛рд╕рд╡рд░реНрдб \"]}}}} " 127.0.0.1 : 5000 / v3 / рдкрд░ / рдЯреЛрдХрди | awk '/ X-Subject-Token / {Print $ 2}' | tr -d '\ r'



# рд╡реАрдПрдо рдкрд░



curl -si -X POST -H "X-Auth-Token: $ OS_DEMOTOKEN_ID" -H "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░: рдЕрдиреБрдкреНрд░рдпреЛрдЧ / json" -d '{"рд╕рд░реНрд╡рд░": {"flavorRef": "1", "рдирд╛рдо": "Ksn", "imageRef": "c0843d76-0cc8-4a19-a9e3-169afd3aace2 тА│}}} ' 127.0.0.1 : 8774 / v2 / рдЕрдиреНрдп iPhone_PROJECT_ID / рд╕рд░реНрд╡рд░



рдкреНрд░рд╢реНрди рдЦреЛрд▓реЗрдВ



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕реЗ рдПрдХ рд╕рдлрд▓рддрд╛ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдирд╕реБрд▓рдЭреЗ рдореБрджреНрджреЗ рд╣реИрдВ:

1. рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрд╖рд┐рддрд┐рдЬ, V3 рдиреАрддрд┐ рдХреЛ рдХреАрд╕реНрдЯреЛрди рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╢рд╛рд╕рдХ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред



2. рдпрджрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдПрдХ рдбреЛрдореЗрди рдХреЛ рд╣рдЯрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд╕рдорд╕реНрдпрд╛ ред



рдирд┐рд╖реНрдХрд░реНрд╖



рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд╖рд┐рддрд┐рдЬ рдореЗрдВ рдбреЛрдореЗрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХреАрд╕реНрдЯреЛрди рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдХрд░рдг V3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдиреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдпреЛрдЬрдирд╛ рдХреЛ UUID рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдлрд┐рд░ рдЖрдкрдХреЛ рдЯреЛрдХрди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрдкрдпреБрдХреНрдд рдиреАрддрд┐рдпрд╛рдВ рдмрдирд╛рдПрдВ рдФрд░ рдЪрд▓рд╛рдПрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдбреЛрдореЗрди рдмрдирд╛рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рд╕реЗ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдХреНрд╖рд┐рддрд┐рдЬ рдпрд╛ рдирдП рд╕реАрдПрд▓рдЖрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдореВрд▓ рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ ред



All Articles