Ansible рдордзреАрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдХрдбреЗ рдкреНрд░рдгрд╛рд▓реАрдЪрд╛ рджреГрд╖реНрдЯреАрдХреЛрди

рдЙрддреНрддрд░рджрд╛рдпреА devops codestyle

рдЕрд╣реЛ! рдорд╛рдЭрдВ рдирд╛рд╡рдВ рдЖрд╣реЗ рдбреЗрдирд┐рд╕ рдХрд▓реНрдпреБрдЭрдиреА рдореА рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдСрдЯреЛрдореЗрд╢рди рд╡рд┐рднрд╛рдЧрд╛рдд рдЕрднрд┐рдпрдВрддрд╛ рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рддреЛ. рджрд░рд░реЛрдЬ, рд╢реЗрдХрдбреЛ рдореЛрд╣рд┐рдо рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдирд╡реАрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдЖрдгрд┐ рдпрд╛ рд▓реЗрдЦрд╛рдд рдореА рдпрд╛ рд╣реЗрддреВрдВрд╕рд╛рдареА рдЙрддреНрддрд░рджрд╛рдпреА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдорд╛рдЭрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рддреЛ.

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

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

рдЖрдордЪреНрдпрд╛ рдХрдВрдкрдиреАрддреАрд▓ рдкреНрд░рдХрд▓реНрдкрд╛рдВрд╡рд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЖрд▓реНрдпрд╛, рдкрд░рд┐рдгрд╛рдореА рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдкреНрд▓реЗрдмреБрдХрдордзреНрдпреЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдбрд┐рдЭрд╛рдЗрди рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдирд┐рдпрдорд╛рдВрд╡рд░ рдЖрд▓реЛ, рдЬреНрдпрд╛рдореБрд│реЗ рдХрд╛рд╣реА рдкреНрд░рдорд╛рдгрд╛рдд рдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдЭрд╛рд▓реЗ.

Ansible рдордзреАрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдХрдбреЗ рдкреНрд░рдгрд╛рд▓реАрдЪрд╛ рджреГрд╖реНрдЯреАрдХреЛрди

рднреВрдорд┐рдХрд╛рдВрдордзреНрдпреЗ рдЪрд▓

рднреВрдорд┐рдХрд╛ рдЙрдкрдпреЛрдЬрди рдкреНрд░рдгрд╛рд▓реАрдЪрд╛ рдПрдХ рд╡реЗрдЧрд│рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд╣реЗ. рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рд┐рд╕реНрдЯреАрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдорд╛рдгреЗ, рддреНрдпрд╛рд╕ рдЙрд░реНрд╡рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдорд╕рд╣ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рд╕рд╛рдареА рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЕрд╕рд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореНрд╣рдгрдЬреЗ рд░реЛрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рднреВрдорд┐рдХрд╛ рдШреЗрдК api, рдЬреЗ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ Java рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ. рддреНрдпрд╛рдд рдХреЛрдгрддреЗ рдЪрд▓ рдЕрд╕реВ рд╢рдХрддрд╛рдд?

Ansible рдордзреАрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдХрдбреЗ рдкреНрд░рдгрд╛рд▓реАрдЪрд╛ рджреГрд╖реНрдЯреАрдХреЛрди

рдкреНрд░рдХрд╛рд░рд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рднреВрдорд┐рдХрд╛ 2 рдкреНрд░рдХрд╛рд░рд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд:

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

рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЧреБрдгрдзрд░реНрдо рд╣реЗ рдЪрд▓ рдЖрд╣реЗрдд рдЬреЗ рднреВрдорд┐рдХреЗрдЪреЗ рд╡рд░реНрддрди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛рдд.

рдХреНрд╡реЗрд░реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ - рд╣реЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрд╣реЗрдд рдЬреНрдпрд╛рдВрдЪреЗ рдореВрд▓реНрдп рднреВрдорд┐рдХреЗрд╕рд╛рдареА рдмрд╛рд╣реНрдп рд╕рдВрд╕рд╛рдзрдиреЗ рдирд┐рдпреБрдХреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ.

рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╢реНрд░реЛрддреЗ - рд╣реЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрд╣реЗрдд рдЬреНрдпрд╛рдВрдЪреЗ рдореВрд▓реНрдп рд╡рд┐рдирдВрддреА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ.

рджреБрд╕рд░реАрдХрдбреЗ, 1a, 2a, 2b рд╣реЗ рдЪрд▓ рдЖрд╣реЗрдд рдЬреЗ рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдирд╛рд╣реАрдд (рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░, рдмрд╛рд╣реНрдп рд╕рдВрд╕рд╛рдзрдиреЗ рдЗ.) рдЖрдгрд┐ рдбреАрдлреЙрд▓реНрдЯ рднреВрдорд┐рдХреЗрдд рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпрд╛рдВрдиреА рднрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рддрдерд╛рдкрд┐, рдкреНрд░рдХрд╛рд░ 1.b рдЖрдгрд┐ 2.c рдЪреНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдирд╛ тАШрдЙрджрд╛рд╣рд░рдгтАЩ рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд рдЗрддрд░ рдореВрд▓реНрдпрд╛рдВрд╕рд╣ рднрд░рдгреЗ рдЕрд╢рдХреНрдп рдЖрд╣реЗ, рдХрд╛рд░рдг рддреЗ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдиреБрд╕рд╛рд░ рд╕реНрдЯрдБрдб рдЯреВ рд╕реНрдЯрдБрдб рдмрджрд▓рддреАрд▓.

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

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

    рдЦрд░рд╛рдм рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪреЗ рдЙрджрд╛рд╣рд░рдг:

    myrole_user:
        login: admin
        password: admin

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

    myrole_user_login: admin
    myrole_user_password: admin

рдЙрдкрдпреЛрдЬрди рдкреНрд▓реЗрдмреБрдХрдордзреАрд▓ рдЪрд▓

рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдкреНрд▓реЗрдмреБрдХ (рдпрд╛рдкреБрдвреЗ рдкреНрд▓реЗрдмреБрдХ рдореНрд╣рдгреВрди рд╕рдВрджрд░реНрднрд┐рдд) рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛рдирд╛, рдЖрдореНрд╣реА рдирд┐рдпрдорд╛рдЪреЗ рдкрд╛рд▓рди рдХрд░рддреЛ рдХреА рддреЗ рд╡реЗрдЧрд│реНрдпрд╛ рднрд╛рдВрдбрд╛рд░рд╛рдд рдареЗрд╡рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рднреВрдорд┐рдХрд╛рдВрдкреНрд░рдорд╛рдгреЗрдЪ: рдкреНрд░рддреНрдпреЗрдХ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ git рднрд╛рдВрдбрд╛рд░рд╛рдд. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдХреА рднреВрдорд┐рдХрд╛ рдЖрдгрд┐ рдкреНрд▓реЗрдмреБрдХ рд╣реЗ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд╡рд╕реНрддреВ рдЖрд╣реЗрдд рдЖрдгрд┐ рдПрдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреАрд▓ рдмрджрд▓рд╛рдВрдЪрд╛ рджреБрд╕рд▒реНрдпрд╛рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирд╡рд░ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдК рдирдпреЗ. рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреА рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпреЗ рдмрджрд▓реВрди рд╣реЗ рд╕рд╛рдзреНрдп рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

рдкреНрд▓реЗрдмреБрдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛рдирд╛, рдереЛрдбрдХреНрдпрд╛рдд, рд░реЛрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреА рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпреЗ рджреЛрди рдард┐рдХрд╛рдгреА рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ: рдкреНрд▓реЗрдмреБрдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреНрдпреЗ рдЖрдгрд┐ рдЗрдиреНрд╡реНрд╣реЗрдВрдЯрд░реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреНрдпреЗ.

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

*- рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрдгрд┐ рд╡реНрд╣реЙрд▓реНрдЯреНрд╕

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

рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ рдХреА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдкреНрд░рд╛рдпреЙрд░рд┐рдЯреА рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд▓реЗрдмреБрдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреНрдпреЗ рдкреНрд░рдердо рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░реВ рджреЗрдгрд╛рд░ рдирд╛рд╣реА рдЖрдгрд┐ рдирдВрддрд░ рдПрдХрд╛ рдЗрдиреНрд╡реНрд╣реЗрдВрдЯрд░реАрдордзреНрдпреЗ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ.

рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдард░рд╡рдгреЗ рдЖрдгрд┐ рддреЗ рдпреЛрдЧреНрдп рдард┐рдХрд╛рдгреА рдареЗрд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

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

рдЧрдЯрд╛рдВрд╕рд╛рдареА рдорд╛рд▓рдорддреНрддрд╛ рдЪрд▓

рднрд┐рдиреНрди Java рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╣, рдкрд░рдВрддреБ рднрд┐рдиреНрди рд╕реЗрдЯрд┐рдВрдЧреНрдЬрд╕рд╣ рд╕рд░реНрд╡реНрд╣рд░рдЪреЗ 1 рдЧрдЯ рдЬреЛрдбреВрди рдЖрдХреГрддреА 2 рдордзреАрд▓ рдЖрдордЪреЗ рдореЙрдбреЗрд▓ рд╡рд┐рд╕реНрддреГрдд рдХрд░реВ.

Ansible рдордзреАрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдХрдбреЗ рдкреНрд░рдгрд╛рд▓реАрдЪрд╛ рджреГрд╖реНрдЯреАрдХреЛрди

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдкреНрд▓реЗрдмреБрдХ рдХрд╕реЗ рджрд┐рд╕реЗрд▓ рдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдХрд░реВрдпрд╛:

- hosts: myapi
  roles:
    - api

- hosts: bbauth
  roles:
    - auth

- hosts: ghauth
  roles:
    - auth

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

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

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

рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕

рддрдерд╛рдкрд┐, рдкреНрд░реЙрдкрд░реНрдЯреА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп, рдкрдг рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреЗ рдХрд╛рдп?
рддреНрдпрд╛рдВрдЪрд╛ рдлрд░рдХ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЧрдЯрд╛рдВрдордзреНрдпреЗ рддреНрдпрд╛рдВрдЪрд╛ рд╕рдорд╛рди рдЕрд░реНрде рдЕрд╕рд╛рд╡рд╛.

рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рддреЗ рд╣реЛрддреЗ рдХрд▓реНрдкрдирд╛ рдПрдХ рд░рд╛рдХреНрд╖рд╕реА рдмрд╛рдВрдзрдХрд╛рдо рд╡рд╛рдкрд░рд╛ рдЬрд╕реЗ:
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 }}"

рдЖрддрд╛, рдХрдиреЗрдХреНрдЯрд░рдЪреЗ рдореВрд▓реНрдп рдмрджрд▓реВрди, рдЖрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рддреНрд░реА рд╣реЛрдИрд▓ рдХреА рд╡рд┐рдирдВрддреА рддреНрдпрд╛рдЪ рдард┐рдХрд╛рдгреА рдЬрд╛рдИрд▓ рдЬрд┐рдереЗ рдкреЛрд░реНрдЯ рдЖрд╣реЗ.

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

  • рднреВрдорд┐рдХрд╛ рдЖрдгрд┐ рдЧрдЯ рднрд┐рдиреНрди рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рддреНрдпрд╛рдВрдирд╛ рднрд┐рдиреНрди рдирд╛рд╡реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдирдВрддрд░ рд▓рд┐рдВрдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЕрдЪреВрдХрдкрдгреЗ рд╕реВрдЪрд┐рдд рдХрд░рддреАрд▓ рдХреА рддреЗ рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрдЯрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗрдд, рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдордордзреАрд▓ рднреВрдорд┐рдХреЗрд╢реА рдирд╛рд╣реА.

рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕

рднреВрдорд┐рдХрд╛ рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рдиреБрд╕рд╛рд░ рднрд┐рдиреНрди рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд.

рдЕрд╢рд╛ рдлрд╛рдЗрд▓реНрд╕рдЪреЗ рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгрдЬреЗ SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ. рддреНрдпрд╛рдВрдирд╛ рдордЬрдХреВрд░ рд╕реНрд╡рд░реВрдкрд╛рдд рд╕рд╛рдард╡рд╛
рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рдлрд╛рд░ рд╕реЛрдпреАрд╕реНрдХрд░ рдирд╛рд╣реА. рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдЬрд╛рдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреЗ рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдкрдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╡рд╛рдкрд░рддреЛ api_ssl_key_file: "/path/to/file".

рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ рдХреА рдХреА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рдкрд╛рд╕реВрди рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рдд рдмрджрд▓реЗрд▓, рд╣реЗ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг-рдЕрд╡рд▓рдВрдмрд┐рдд рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЖрд╣реЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рддреЗ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕реНрдерд┐рдд рдЕрд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.
group_vars/myapi/vars рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреА рдпрд╛рджреА рдЖрдгрд┐ рддреНрдпрд╛рдд 'рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде' рдореВрд▓реНрдп рдЕрд╕рддреЗ.

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

рдПрдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдЕрдиреЗрдХ рд╕реНрдЯрдБрдб

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

рддреЗ group_vars рдЗрдиреНрд╡реНрд╣реЗрдВрдЯрд░реАрдЪрд╛ рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░ рдХрд░реЗрд▓ рдЖрдгрд┐ рдХрд╛рд╣реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдереЗрдЯ рд╕реНрд╡рддрдГрд╕рд╛рдареА рдкреБрдиреНрд╣рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕реЗрд▓.

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛