Ansible рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг

ansible рдбреЗрд╡реЙрдкреНрд╕ рдХреЛрдбрд╕реНрдЯрд╛рдЗрд▓

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

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

  • рдХреЛрдб рдореЗрдВ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдорд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рддреБрд░рдВрдд рд╕рдордЭрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ;
  • рдХрдИ рднреВрдорд┐рдХрд╛рдПрдБ рд╣реИрдВ, рдФрд░ рдЪрд░ рдХреЛ рдПрдХ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ;
  • рджреВрд╕рд░реЛрдВ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рдЖрдкрдХреА рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдЪрд░ рдХрд╛ рддрд░реНрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

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

Ansible рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг

рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓

рднреВрдорд┐рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рддрд░рд╣, рдЗрд╕рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рднреВрдорд┐рдХрд╛ рдЪрд░ рдПрдХ рдРрд╕рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рднреВрдорд┐рдХрд╛ рдХреЛ рд╣реА рд▓реАрдЬрд┐рдП api, рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХреМрди рд╕реЗ рдЪрд░ рд╣реИрдВ?

Ansible рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг

рднреВрдорд┐рдХрд╛ рдЪрд░ рдХреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ 2 рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

1. ╨б╨▓╨╛╨╣╤Б╤В╨▓╨░
    a) ╨╜╨╡╨╖╨░╨▓╨╕╤Б╨╕╨╝╤Л╨╡ ╨╛╤В ╤Б╤А╨╡╨┤╤Л
    ╨▒) ╨╖╨░╨▓╨╕╤Б╨╕╨╝╤Л╨╡ ╨╛╤В ╤Б╤А╨╡╨┤╤Л
2. ╨б╨▓╤П╨╖╨╕
    a) ╤Б╨╗╤Г╤И╨░╤В╨╡╨╗╨╕ 
    ╨▒) ╨╖╨░╨┐╤А╨╛╤Б╤Л ╨▓╨╜╤Г╤В╤А╨╕ ╤Б╨╕╤Б╤В╨╡╨╝╤Л
    ╨▓) ╨╖╨░╨┐╤А╨╛╤Б╤Л ╨▓ ╤Б╤А╨╡╨┤╤Г

рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЧреБрдг рд╡реЗ рдЪрд░ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рднреВрдорд┐рдХрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдХреНрд╡реЗрд░реА рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╡реЗ рдЪрд░ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рднреВрдорд┐рдХрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╢реНрд░реЛрддрд╛ рд╡реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд╡реЗрд░реА рд╡реЗрд░рд┐рдПрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рджреВрд╕рд░реА рдУрд░, 1рдП, 2рдП, 2рдмреА рд╡реЗрд░рд┐рдПрдмрд▓ рд╣реИрдВ рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг (рд▓реЛрд╣рд╛, рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрди, рдЖрджрд┐) рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднреВрдорд┐рдХрд╛ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рд╕реЗ рднрд░реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, 1.b рдФрд░ 2.c рдЬреИрд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ 'рдЙрджрд╛рд╣рд░рдг' рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдорд╛рдиреЛрдВ рд╕реЗ рдирд╣реАрдВ рднрд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдЯреИрдВрдб рд╕реЗ рд╕реНрдЯреИрдВрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдВрдЧреЗред

рдХреЛрдб рд╢реИрд▓реА

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

    рдЦрд╝рд░рд╛рдм рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

    myrole_user:
        login: admin
        password: admin

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

    myrole_user_login: admin
    myrole_user_password: admin

рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдЪрд░

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

рдХрд┐рд╕реА рдкреНрд▓реЗрдмреБрдХ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣реЗрдВ рддреЛ, рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рднреВрдорд┐рдХрд╛ рдЪрд░ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ: рдкреНрд▓реЗрдмреБрдХ рдЪрд░ рдореЗрдВ рдФрд░ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдЪрд░ рдореЗрдВред

mydeploy                        # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨┤╨╡╨┐╨╗╨╛╤П
тФЬтФАтФА deploy.yml                  # ╨Я╨╗╨╡╨╣╨▒╤Г╨║ ╨┤╨╡╨┐╨╗╨╛╤П
тФЬтФАтФА group_vars                  # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е ╨┐╨╗╨╡╨╣╨▒╤Г╨║╨░
тФВ   тФЬтФАтФА all.yml                 # ╨д╨░╨╣╨╗ ╨┤╨╗╤П ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е ╤Б╨▓╤П╨╖╨╕ ╨▓╤Б╨╡╨╣ ╤Б╨╕╤Б╤В╨╡╨╝╤Л
тФВ   тФФтФАтФА myapi.yml               # ╨д╨░╨╣╨╗ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е ╤Б╨▓╨╛╨╣╤Б╤В╨▓ ╨│╤А╤Г╨┐╨┐╤Л myapi
тФФтФАтФА inventories                 #
    тФФтФАтФА prod                    # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨╛╨║╤А╤Г╨╢╨╡╨╜╨╕╤П prod
        тФЬтФАтФА prod.ini            # ╨Ш╨╜╨▓╨╡╨╜╤В╨╛╤А╨╕ ╤Д╨░╨╣╨╗
        тФФтФАтФА group_vars          # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨┤╨╗╤П ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е ╨╕╨╜╨▓╨╡╨╜╤В╨╛╤А╨╕
            тФФтФАтФА myapi           #
                тФЬтФАтФА vars.yml    # ╨б╤А╨╡╨┤╨╛╨╖╨░╨▓╨╕╤Б╨╕╨╝╤Л╨╡ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╨╡ ╨│╤А╤Г╨┐╨┐╤Л myapi
                тФФтФАтФА vault.yml   # ╨б╨╡╨║╤А╨╡╤В╤Л (╨▓╤Б╨╡╨│╨┤╨░ ╤Б╤А╨╡╨┤╨╛╨╖╨░╨▓╨╕╤Б╨╕╨╝╤Л) *

*тАФ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдФрд░ рд╡реЙрд▓реНрдЯреНрд╕

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

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдкреНрд▓реЗрдмреБрдХ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рдФрд░ рдлрд┐рд░ рдПрдХ рд╣реА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧреАред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЖрдкрдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЪрд░ рдкрд░реНрдпрд╛рд╡рд░рдг-рдирд┐рд░реНрднрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдЗрд╕реЗ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд░рдЦреЗрдВред

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

рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдЪрд░

рдЖрдЗрдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЗ 1 рд╕рдореВрд╣реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЪрд┐рддреНрд░ 2 рдореЗрдВ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред

Ansible рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд▓реЗрдмреБрдХ рдХреИрд╕реА рджрд┐рдЦреЗрдЧреА:

- hosts: myapi
  roles:
    - api

- hosts: bbauth
  roles:
    - auth

- hosts: ghauth
  roles:
    - auth

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

рдХреЛрдб рд╢реИрд▓реА

  • рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд╣реЛрд╕реНрдЯ_рд╡рд░реНрд╕ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛: "рдпрд╣ рд╣реЛрд╕реНрдЯ рдмрд╛рдХрд┐рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХреНрдпреЛрдВ рд╣реИ?", рдЬрд┐рд╕рдХрд╛ рдЙрддреНрддрд░ рд╣реИ рдвреВрдВрдврдирд╛ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛.

рдЪрд░ рд▓рд┐рдВрдХ рдХрд░реЗрдВ

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд┐рдВрдХ рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдЙрдирдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЙрдирдХрд╛ рдореВрд▓реНрдп рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╣рд╛рдБ рдерд╛ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдкрддреНрд░ рдХреЗ рдПрдХ рд░рд╛рдХреНрд╖рд╕реА рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
hostvars[groups['bbauth'][0]]['auth_bind_port'], рд▓реЗрдХрд┐рди рдЗрд╕реЗ рддреБрд░рдВрдд рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛
рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рднрд╛рд░реАрдкрди. рджреВрд╕рд░реЗ, рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдЬрдмрд╛рди рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ред рддреАрд╕рд░рд╛, рдпрджрд┐ рд╣рдо рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рддреИрдирд╛рддреА рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдореЗрдЬрдмрд╛рдиреЛрдВ рд╕реЗ рддрдереНрдп рдПрдХрддреНрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓рд┐рдВрдХ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред

рдЪрд░ рд▓рд┐рдВрдХ рдХрд░реЗрдВ рд╡реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рд╣реИрдВ рдЬреЛ рдкреНрд▓реЗрдмреБрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред

рд▓рд┐рдВрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рд╕реНрдЯрдо рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рднрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВ group_vars/all/vars рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рд╕реЗ рд╕рднреА рд╢реНрд░реЛрддрд╛ рдЪрд░ рдХреЛ рд╣рдЯрд╛рдХрд░, рдФрд░ рдЙрд╕ рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо рдЬреЛрдбрд╝рдХрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рд╢реНрд░реЛрддрд╛ рдХреЛ рдЪрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд╛рдореЛрдВ рдХреА рдПрдХрд░реВрдкрддрд╛ рдФрд░ рдЧреИрд░-рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдЗрдП рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдмрд╛рдЗрдВрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

Ansible рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рд╣реИрдВ рдЬреЛ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ:

# roles/api/defaults:
# ╨Я╨╡╤А╨╡╨╝╨╡╨╜╨╜╨░╤П ╨╖╨░╨┐╤А╨╛╤Б╨░
api_auth1_address: "http://example.com:80"
api_auth2_address: "http://example2.com:80"

# roles/auth/defaults:
# ╨Я╨╡╤А╨╡╨╝╨╡╨╜╨╜╨░╤П ╤Б╨╗╤Г╤И╨░╤В╨╡╨╗╤М
auth_bind_port: "20000"

рдЖрдЗрдП рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░реЛрдВ рдореЗрдВ рд░рдЦреЗрдВ group_vars/all/vars рд╕рднреА рд╢реНрд░реЛрддрд╛, рдФрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо рдЬреЛрдбрд╝реЗрдВ:

# group_vars/all/vars
bbauth_auth_bind_port: "20000"
ghauth_auth_bind_port: "30000"

# group_vars/bbauth/vars
auth_bind_port: "{{ bbauth_auth_bind_port }}"

# group_vars/ghauth/vars
auth_bind_port: "{{ ghauth_auth_bind_port }}"

# group_vars/myapi/vars
api_auth1_address: "http://{{ bbauth_auth_service_name }}:{{ bbauth_auth_bind_port }}"
api_auth2_address: "http://{{ ghauth_auth_service_name }}:{{ ghauth_auth_bind_port }}"

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

рдХреЛрдб рд╢реИрд▓реА

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

рдкрд░реНрдпрд╛рд╡рд░рдг рдлрд╝рд╛рдЗрд▓реЗрдВ

рднреВрдорд┐рдХрд╛рдПрдБ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИрдВред

рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ
рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ. рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ api_ssl_key_file: "/path/to/file".

рдЪреВрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреБрдВрдЬреА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг-рдирд┐рд░реНрднрд░ рдЪрд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
group_vars/myapi/vars рдЪрд░реЛрдВ рдХреА рд╕реВрдЪреА, рдФрд░ 'рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП' рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдХреБрдВрдЬреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрде рдХреЗ рд╕рд╛рде рдкреНрд▓реЗрдмреБрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд░рдЦрдирд╛ рд╣реИ
files/prod/certs/myapi.key, рддреЛ рдЪрд░ рдХрд╛ рдорд╛рди рд╣реЛрдЧрд╛:
api_ssl_key_file: "prod/certs/myapi.key". рд╕реБрд╡рд┐рдзрд╛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯреИрдВрдб рдкрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рдорд░реНрдкрд┐рдд рд╕реНрдерд╛рди рднреА рд╣реЛрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдпрджрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд░рд╣рддрд╛ рд╣реИред

рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рд╕реНрдЯреИрдВрдб

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

рдпрд╣ рдЧреНрд░реБрдк_рд╡рд░реНрд╕ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдФрд░ рд╕реАрдзреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред

рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛:

mydeploy                        # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨┤╨╡╨┐╨╗╨╛╤П
тФЬтФАтФА deploy.yml                  # ╨Я╨╗╨╡╨╣╨▒╤Г╨║ ╨┤╨╡╨┐╨╗╨╛╤П
тФЬтФАтФА files                       # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨┤╨╗╤П ╤Д╨░╨╣╨╗╨╛╨▓ ╨┤╨╡╨┐╨╗╨╛╤П
тФВ   тФЬтФАтФА prod                    # ╨Ъ╨░╤В╨╛╨╗╨╛╨│ ╨┤╨╗╤П ╤Б╤А╨╡╨┤╨╛╨╖╨░╨▓╨╕╤Б╨╕╨╝╤Л╤Е ╤Д╨░╨╣╨╗╨╛╨▓ ╤Б╤В╨╡╨╜╨┤╨░ prod
тФВ   тФВ   тФФтФАтФА certs               # 
тФВ   тФВ       тФФтФАтФА myapi.key       #
тФВ   тФФтФАтФА test1                   # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨┤╨╗╤П ╤Б╤А╨╡╨┤╨╛╨╖╨░╨▓╨╕╤Б╨╕╨╝╤Л╤Е ╤Д╨░╨╣╨╗╨╛╨▓ ╤Б╤В╨╡╨╜╨┤╨░ test1
тФЬтФАтФА group_vars                  # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е ╨┐╨╗╨╡╨╣╨▒╤Г╨║╨░
тФВ   тФЬтФАтФА all.yml                 # ╨д╨░╨╣╨╗ ╨┤╨╗╤П ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е ╤Б╨▓╤П╨╖╨╕ ╨▓╤Б╨╡╨╣ ╤Б╨╕╤Б╤В╨╡╨╝╤Л
тФВ   тФЬтФАтФА myapi.yml               # ╨д╨░╨╣╨╗ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е ╤Б╨▓╨╛╨╣╤Б╤В╨▓ ╨│╤А╤Г╨┐╨┐╤Л myapi
тФВ   тФЬтФАтФА bbauth.yml              # 
тФВ   тФФтФАтФА ghauth.yml              #
тФФтФАтФА inventories                 #
    тФЬтФАтФА prod                    # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨╛╨║╤А╤Г╨╢╨╡╨╜╨╕╤П prod
    тФВ   тФЬтФАтФА group_vars          # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨┤╨╗╤П ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╤Е ╨╕╨╜╨▓╨╡╨╜╤В╨╛╤А╨╕
    тФВ   тФВ   тФЬтФАтФА myapi           #
    тФВ   тФВ   тФВ   тФЬтФАтФА vars.yml    # ╨б╤А╨╡╨┤╨╛╨╖╨░╨▓╨╕╤Б╨╕╨╝╤Л╨╡ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╨╡ ╨│╤А╤Г╨┐╨┐╤Л myapi
    тФВ   тФВ   тФВ   тФФтФАтФА vault.yml   # ╨б╨╡╨║╤А╨╡╤В╤Л (╨▓╤Б╨╡╨│╨┤╨░ ╤Б╤А╨╡╨┤╨╛╨╖╨░╨▓╨╕╤Б╨╕╨╝╤Л)
    тФВ   тФВ   тФЬтФАтФА bbauth          # 
    тФВ   тФВ   тФВ   тФЬтФАтФА vars.yml    #
    тФВ   тФВ   тФВ   тФФтФАтФА vault.yml   #
    тФВ   тФВ   тФФтФАтФА ghauth          #
    тФВ   тФВ       тФЬтФАтФА vars.yml    #
    тФВ   тФВ       тФФтФАтФА vault.yml   #
    тФВ   тФФтФАтФА prod.ini            # ╨Ш╨╜╨▓╨╡╨╜╤В╨╛╤А╨╕ ╤Б╤В╨╡╨╜╨┤╨░ prod
    тФФтФАтФА test                    # ╨Ъ╨░╤В╨░╨╗╨╛╨│ ╨╛╨║╤А╤Г╨╢╨╡╨╜╨╕╤П test
        тФЬтФАтФА group_vars          #
        тФВ   тФЬтФАтФА myapi           #
        тФВ   тФВ   тФЬтФАтФА vars.yml    #
        тФВ   тФВ   тФФтФАтФА vault.yml   #
        тФВ   тФЬтФАтФА bbauth          #
        тФВ   тФВ   тФЬтФАтФА vars.yml    #
        тФВ   тФВ   тФФтФАтФА vault.yml   #
        тФВ   тФФтФАтФА ghauth          #
        тФВ       тФЬтФАтФА vars.yml    #
        тФВ       тФФтФАтФА vault.yml   #
        тФЬтФАтФА test1.ini           # ╨Ш╨╜╨▓╨╡╨╜╤В╨╛╤А╨╕ ╤Б╤В╨╡╨╜╨┤╨░ test1 ╨▓ ╤Б╤А╨╡╨┤╨╡ test
        тФФтФАтФА test2.ini           # ╨Ш╨╜╨▓╨╡╨╜╤В╨╛╤А╨╕ ╤Б╤В╨╡╨╜╨┤╨░ test2 ╨▓ ╤Б╤А╨╡╨┤╨╡ test

рдЙрдкрд╕рдВрд╣рд╛рд░

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

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

рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдХреЛ рдЕрдм рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рд╕рдлрд▓ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рднрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕рд╛рд╣рд┐рддреНрдп

  1. рдЕрднрд┐рд▓реЗрдЦ

рд▓реЗрдЦрдХ

рдХрд▓рдпреБрдЬрд╝рдиреА рдбреЗрдирд┐рд╕ рдЕрд▓реЗрдХреНрдЬреЗрдВрдбреНрд░реЛрд╡рд┐рдЪ

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ