Ansible рдорд╛ рдЪрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдгрд╛рд▓реА рджреГрд╖реНрдЯрд┐рдХреЛрдг

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

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

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

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

рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдХрдореНрдкрдиреАрдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рдпреА рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдпреМрдВ, рдЬрд╕рдХреЛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд░реВрдк рд╣рд╛рдореА рд╣рд╛рдореНрд░рд╛ рдкреНрд▓реЗрдмреБрдХрд╣рд░реВрдорд╛ рдЪрд░рд╣рд░реВ рдврд╛рдБрдЪрд╛рдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдорд╣рд░реВрдорд╛ рдЖрдПрдХрд╛ рдЫреМрдВ, рдЬрд╕рд▓реЗ рдХреЗрд╣реА рд╣рджрд╕рдореНрдо рдпреА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдпреЛред

Ansible рдорд╛ рдЪрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдгрд╛рд▓реА рджреГрд╖реНрдЯрд┐рдХреЛрдг

рднреВрдорд┐рдХрд╛рд╣рд░реВрдорд╛ рдЪрд░рд╣рд░реВ

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

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

Ansible рдорд╛ рдЪрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдгрд╛рд▓реА рджреГрд╖реНрдЯрд┐рдХреЛрдг

рднреВрдорд┐рдХрд╛ рдЪрд░рд╣рд░реВрд▓рд╛рдИ рдкреНрд░рдХрд╛рд░рджреНрд╡рд╛рд░рд╛ реи рдкреНрд░рдХрд╛рд░рдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

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

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

рдХреНрд╡реЗрд░реА рдЪрд░ рдЪрд░рд╣рд░реВ рд╣реБрдиреН рдЬрд╕рдХреЛ рдорд╛рди рднреВрдорд┐рдХрд╛рдорд╛ рдмрд╛рд╣реНрдп рд╕реНрд░реЛрддрд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред

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

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

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

  • рдЪрд░рдХреЛ рдирд╛рдо рднреВрдорд┐рдХрд╛рдХреЛ рдирд╛рдордмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреБрдкрд░реНрдЫред рдпрд╕рд▓реЗ рднрд╡рд┐рд╖реНрдпрдорд╛ рднреНрдпрд╛рд░реАрдПрдмрд▓ рдХреБрди рднреВрдорд┐рдХрд╛рдмрд╛рдЯ рд╣реЛ рд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрджрдЫред
  • рднреВрдорд┐рдХрд╛рд╣рд░реВрдорд╛ рдЪрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ encapsulation рдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрддрдХреЛ рдкрд╛рд▓рдирд╛ рдЧрд░реНрди рд░ рднреВрдорд┐рдХрд╛рдорд╛ рд╡рд╛ рд╣рд╛рд▓рдХреЛ рдирд┐рд░реНрднрд░ рд╣реБрдиреЗ рднреВрдорд┐рдХрд╛рд╣рд░реВрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиреБрдкрд░реНрдЫред
  • рдЪрд░рдХрд╛ рд▓рд╛рдЧрд┐ рд╢рдмреНрджрдХреЛрд╢рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред 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 рд╕рдХреНрд╖рдо рдЧрд░реНрди рд╕рдХреЗрдиреМрдВред рд╣рд╛рдореАрд▓реЗ рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реЗрдкрдЫрд┐, рдпреЛ рдордзреНрдпрдо рд╕реНрд╡рддрдиреНрддреНрд░ рднрдпреЛ рд░ рдкреНрд▓реЗрдмреБрдХ рдЪрд░рд╣рд░реВрдорд╛ рд╕рд╛рд░рд┐рдпреЛред

рд╕рдореВрд╣рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдореНрдкрддреНрддрд┐ рдЪрд░

рдлрд░рдХ рдЬрд╛рднрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рд╕рд╛рде, рддрд░ рдлрд░рдХ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд╕рдБрдЧ рд╕рд░реНрднрд░рдХрд╛ реи рд╕рдореВрд╣рд╣рд░реВ рдердкреЗрд░ рдЪрд┐рддреНрд░ рез рдорд╛ рд╣рд╛рдореНрд░реЛ рдореЛрдбреЗрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реМрдВред

Ansible рдорд╛ рдЪрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдгрд╛рд▓реА рджреГрд╖реНрдЯрд┐рдХреЛрдг

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдкреНрд▓реЗрдмреБрдХ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

- hosts: myapi
  roles:
    - api

- hosts: bbauth
  roles:
    - auth

- hosts: ghauth
  roles:
    - auth

рд╣рд╛рдореАрд╕рдБрдЧ рдкреНрд▓реЗрдмреБрдХрдорд╛ рддреАрдирд╡рдЯрд╛ рд╕рдореВрд╣рд╣рд░реВ рдЫрдиреН, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ group_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. рджрд╕реНрддрд╛рд╡реЗрдЬ

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

Kalyuzhny рдбреЗрдирд┐рд╕ Alexandrovich

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди