рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рдпреЛ рдЯреНрд░рд╛рдиреНрд╕рдХреНрд░рд┐рдкреНрдЯ рд╣реЛ рдкреНрд░рджрд░реНрд╢рди рдорд╛ DevOps-40 реирежреиреж-режрей-резрео:

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

рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рдЬрдиреНрдо

рджрд┐рди #1: рд░реЛрдЧреА рд╢реВрдиреНрдп

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рджрд┐рди #89: рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рдЬрдиреНрдо

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рдпреЛ рдЖрдлреИрд▓рд╛рдИ рдзреНрдпрд╛рди рдирджрд┐рдИ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдХреЗрд╕рдореНрдо рд░рд╛рдореНрд░реЛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдереЗ, рддрд░ рдпреЛ рд╡рд┐рд░рд╛рд╕рдд рднрдпреЛред рдпреЛ рдХрд╕рд░реА рд╣реБрдиреНрдЫ?

  • рд╣рд╛рдореАрд╕рдБрдЧ рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдЕрддреНрдпрд╛рд╡рд╢реНрдпрдХ рдХрд╛рдо рдЫ, рдлреЛрд╣реЛрд░ рд╣реНрдпрд╛рдХ рдЧрд░реМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдареАрдХ рдЧрд░реМрдВред
  • рддрдкрд╛рдИрдВрд▓реЗ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рд▓реЗрдЦреНрдиреБ рдкрд░реНрджреИрди рд░ рдпрд╣рд╛рдБ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдкрд╖реНрдЯ рдЫред
  • рдорд▓рд╛рдИ Ansible/Python/Bash/Terraform рдерд╛рд╣рд╛ рдЫ! рд╣реЗрд░ рдо рдХрд╕рд░реА рдЪрдХрд┐рдд рдЧрд░реНрди рд╕рдХреНрдЫреБ!
  • рдо рдкреВрд░реНрдг рд╕реНрдЯреНрдпрд╛рдХ рдУрднрд░рдлреНрд▓реЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╣реБрдБ рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдЯреНрдпрд╛рдХрдУрднрд░рдлреНрд▓реЛрдмрд╛рдЯ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реЗрдХреЛ рдЫреБ, рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ, рддрд░ рдпреЛ рд░рд╛рдореНрд░реЛ рджреЗрдЦрд┐рдиреНрдЫ рд░ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫред

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рддрдкрд╛рдИрд▓реЗ рдмреБрдЭреНрди рдирд╕рдХрд┐рдиреЗ рдкреНрд░рдХрд╛рд░рдХреЛ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рдХрд╛рдЧрдЬрд╛рдд рдЫреИрди, рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЫреИрди рдХрд┐ рдпрд╕рд▓реЗ рдХреЗ рдЧрд░реНрдЫ, рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдЫреИрди, рддрд░ рд╕рдорд╕реНрдпрд╛ рдпреЛ рд╣реЛ рдХрд┐ рддрдкрд╛рдИрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди, рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрди, рдмреИрд╕рд╛рдЦреА рд░ рд╕рдорд░реНрдердирд╣рд░реВ рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред , рд╕реНрдерд┐рддрд┐ рдЭрдиреИ рдмрд┐рдЧреНрд░рдиреНрдЫ ред

- hosts: localhost
  tasks:
    - shell: echo -n Z >> a.txt && cat a.txt
      register: output
      delay: 1
      retries: 5
      until: not output.stdout.find("ZZZ")

рджрд┐рди #109: рд╕рдорд╕реНрдпрд╛рдХреЛ рдЬрд╛рдЧрд░реВрдХрддрд╛

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

IaC рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░рд┐рдВрдЧ

рджрд┐рди #139: рдХреЗ рддрдкрд╛рдИрд▓рд╛рдИ рд╕рд╛рдБрдЪреНрдЪреИ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░рд┐рдВрдЧ рдЪрд╛рд╣рд┐рдиреНрдЫ?

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рддрдкрд╛рдИрдВ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░рдорд╛ рд╣рддрд╛рд░ рдЧрд░реНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдзреЗрд░реИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рдиреБрдкрд░реНрдЫ:

  1. рддрдкрд╛рдИрд▓рд╛рдИ рдпреЛ рд╕рдмреИ рдХрд┐рди рдЪрд╛рд╣рд┐рдиреНрдЫ?
  2. рдХреЗ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рд╕рдордп рдЫ?
  3. рдХреЗ рдЬреНрдЮрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рдЫ?

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рдХрд╕рд░реА рджрд┐рдиреЗ рднрдиреНрдиреЗ рдерд╛рд╣рд╛ рдЫреИрди рднрдиреЗ, рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░рд┐рдЩ рд╕реБрд░реБ рд╣реБрдиреБ рдЕрдШрд┐ рдиреИ рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗрдЫ, рд╡рд╛ рдпреЛ рдЕрдЭ рдЦрд░рд╛рдм рд╣реБрди рд╕рдХреНрдЫред рдХрд┐рдирднрдиреЗ рдЕрдиреБрднрд╡ рдерд┐рдпреЛ ( 200 рд▓рд╛рдЗрдирд╣рд░реВ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдХреЛрдбрдХреЛ рдкрд░реАрдХреНрд╖рдгрдмрд╛рдЯ рдореИрд▓реЗ рдХреЗ рд╕рд┐рдХреЗрдВ), рддреНрдпрд╕рдкрдЫрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рднреВрдорд┐рдХрд╛рд╣рд░реВ рдареАрдХ рдЧрд░реНрди рд░ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рдорджреНрджрддрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреЛред

рджрд┐рди #149: рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░рд┐рдЩрдХреЛ рддрдпрд╛рд░реА рдЧрд░реНрджреИ

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдпрд╛рд╕рд╣рд░реВ

рд╣рд╛рдореАрд▓реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдЬрд╡рд╛рдлрджреЗрд╣реА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдХрд╕рд░реА рдХрднрд░ рдЧрд░реНрдпреМрдВ рднрдиреЗрд░ рд╡рд░реНрдгрди рдЧрд░реНрди рдЬрд╛рдиреБ рдЕрдШрд┐, рдо рдирд┐рд░реНрдгрдпрд╣рд░реВрдХреЛ рд╕рдиреНрджрд░реНрдн рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдореМрдХрд╛ рдкрд╛рдПрдХреЛ рдкреНрд░рдпрд╛рд╕ рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗрдЫреБред

рджрд┐рди рдирдореНрдмрд░ -997: SDS рдкреНрд░рд╛рд╡рдзрд╛рди

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рдореИрд▓реЗ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ Ansible рдкрд░реАрдХреНрд╖рдг рдЧрд░реЗрдВ SDS (рд╕рдлреНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рднрдгреНрдбрд╛рд░рдг) рдХреЛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдерд┐рдпреЛред рдпрд╕ рд╡рд┐рд╖рдпрдорд╛ рдЫреБрдЯреНрдЯреИ рд▓реЗрдЦ рдЫ
рддрдкрд╛рдИрдВрдХреЛ рд╡рд┐рддрд░рдг рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджрд╛ рдмреИрд╕рд╛рдЦреАрдорд╛рдерд┐ рд╕рд╛рдЗрдХрд▓рд╣рд░реВ рдХрд╕рд░реА рддреЛрдбреНрдиреЗ, рддрд░ рдЫреЛрдЯрдХрд░реАрдорд╛, рд╣рд╛рдореАрд▓реЗ рдПрдХ рдЙрд▓реНрдЯреЛ рдкрд░реАрдХреНрд╖рдг рдкрд┐рд░рд╛рдорд┐рдбрдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдЧрд░реНрдпреМрдВ рд░ рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рднреВрдорд┐рдХрд╛рдорд╛ 60-90 рдорд┐рдиреЗрдЯ рдмрд┐рддрд╛рдпреМрдВ, рдЬреБрди рд▓рд╛рдореЛ рд╕рдордп рд╣реЛред рдЖрдзрд╛рд░ e2e рдкрд░реАрдХреНрд╖рдг рдерд┐рдпреЛ, рдЕрд░реНрдерд╛рддреНред рд╣рд╛рдореАрд▓реЗ рдкреВрд░реНрдг рд╕реНрдерд╛рдкрдирд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдпреМрдВ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдпрд╕рд▓рд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНтАНрдпреМрдВред рддреНрдпреЛрднрдиреНрджрд╛ рдкрдирд┐ рдкреАрдбрд╛рджрд╛рдпреА рдХреБрд░рд╛ рдЙрдирдХреЛ рдЖрдлреНрдиреИ рд╕рд╛рдЗрдХрд▓рдХреЛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдерд┐рдпреЛред рддрд░ рдореИрд▓реЗ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ, рдпреЛ рд╕рдорд╛рдзрд╛рдирд▓реЗ рдХрд╛рдо рдЧрд░реНрдпреЛ рд░ рд╕реНрдерд┐рд░ рд░рд┐рд▓реАрдЬрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдпреЛред

рджрд┐рди # -701: рдЙрддреНрддрд░рджрд╛рдпреА рд░ рдкрд░реАрдХреНрд╖рдг рднрд╛рдиреНрд╕рд╛

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдЪрд╛рд░рдХреЛ рд╡рд┐рдХрд╛рд╕ рднрдиреЗрдХреЛ рд░реЗрдбрд┐рдореЗрдб рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧ рдерд┐рдпреЛ, рдЬрд╕реНрддреИ рдХрд┐рдЪрди/рдХрд┐рдЪрди-рд╕реАрдЖрдИ рд░ рдирд┐рд░реАрдХреНрд╖рдг рдкрд░реАрдХреНрд╖рдгред рдЫрдиреЛрдЯ рд░реБрдмреА рдХреЛ рдЬреНрдЮрд╛рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ (рдердк рд╡рд┐рд╡рд░рдг рдХреЛ рд▓рд╛рдЧреА, Habr├й рдорд╛ рд▓реЗрдЦ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН: рдХреЗ YML рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрд▓реЗ рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреЗ рд╕рдкрдирд╛ рджреЗрдЦреНрдЫрдиреН?) рдЫрд┐рдЯреЛ рдХрд╛рдо рдЧрд░реНрдпреЛ, 40 рднреВрдорд┐рдХрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд▓рдЧрднрдЧ 10 рдорд┐рдиреЗрдЯред рд╣рд╛рдореАрд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдХреЛ рдкреНрдпрд╛рдХ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдпреМрдВ рд░ рднрд┐рддреНрд░ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдпреМрдВред

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╕рдорд╛рдзрд╛рдирд▓реЗ рдХрд╛рдо рдЧрд░реНрдпреЛ, рддрд░ рд╡рд┐рд╖рдорддрд╛рдХрд╛ рдХрд╛рд░рдг рдХреЗрд╣реА рддрд▓рдЫрдЯ рдерд┐рдпреЛред рдЬрдм рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХрд╛ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ 13 рдЖрдзрд╛рд░рднреВрдд рднреВрдорд┐рдХрд╛рд╣рд░реВ рд░ 2 рдореЗрдЯрд╛ рднреВрдорд┐рдХрд╛рд╣рд░реВ рд╕рд╛рдирд╛ рднреВрдорд┐рдХрд╛рд╣рд░реВрдХреЛ рд╕рдВрдпреЛрдЬрдирдорд╛ рдмрдврд╛рдЗрдпреЛ, рддреНрдпрд╕рдкрдЫрд┐ рдЕрдЪрд╛рдирдХ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ 70 рдорд┐рдиреЗрдЯрд╕рдореНрдо рдЪрд▓реНрди рдерд╛рд▓реНрдпреЛ, рдЬреБрди рд▓рдЧрднрдЧ 2 рдЧреБрдгрд╛ рд▓рд╛рдореЛ рдЫред XP (рдЪрд░рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ) рдЕрднреНрдпрд╛рд╕рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рдерд┐рдпреЛ рдХрд┐рдирднрдиреЗ ... рдХреЛрд╣реА рдкрдирд┐ 70 рдорд┐рдиреЗрдЯ рдкрд░реНрдЦрди рдЪрд╛рд╣рдБрджреИрдирдиреНред рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рдХрд╛рд░рдг рдерд┐рдпреЛ

рджрд┐рди # -601: рдЙрддреНрддрд░рджрд╛рдпреА рд░ рдЕрдгреБ

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдкрдорд╛, рдпреЛ testkitchen рдЬрд╕реНрддреИ рдЫ, рдХреЗрд╡рд▓ рд╣рд╛рдореАрд▓реЗ рднреВрдорд┐рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдбрдХрд░рдорд╛ рд╕рд╛рд░рд┐рдпреЛ рд░ рд╕реНрдЯреНрдпрд╛рдХ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдпреМрдВред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╕рдордп 20 рднреВрдорд┐рдХрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд┐рд░ 25-7 рдорд┐рдиреЗрдЯрдорд╛ рдШрдЯрд╛рдЗрдПрдХреЛ рдерд┐рдпреЛред

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХрд╛ рднреВрдорд┐рдХрд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ 17 рдорд╛ рдмрдврд╛рдПрд░ рд░ 45 рднреВрдорд┐рдХрд╛рд╣рд░реВ рд▓рд┐рдЗрдиреНрдЯ рдЧрд░реЗрд░, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ 28 рдорд┐рдиреЗрдЯрдорд╛ 2 рдЬреЗрдиреНрдХрд┐рдиреНрд╕ рджрд╛рд╕рд╣рд░реВрдорд╛ рджреМрдбреНрдпреМрдВред

рджрд┐рди #167: рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдердкреНрджреИ

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

refactoring рд╕рд░рд▓ рдЫ:

  • рдЦрд╛рдиреБрд╣реЛрд╕реНред
  • рдирд┐рджреНрд░рд╛
  • рдХреЛрдб
  • IaC рдкрд░реАрдХреНрд╖рдгред
  • рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реН

рд░ рд╣рд╛рдореА рдпреЛ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдБрдЫреМрдВ рдЬрдмрд╕рдореНрдо рд╣рд╛рдореА рдЗрдЪреНрдЫрд┐рдд рд▓рдХреНрд╖реНрдпрдорд╛ рдкреБрдЧреНрджреИрдиреМрдВред

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рджрд┐рди #181: рдЧреНрд░реАрди рдмрд┐рд▓реНрдб рдорд╛рд╕реНрдЯрд░

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

  • рд░рд╛рддреЛ рдкрд░реАрдХреНрд╖рдг рдЦрд░рд╛рдм рдЫред
  • рдо рдХреЗрд╣рд┐ рдареАрдХ рдЧрд░реНрди рдЖрдПрдХреЛ рд╣реБрдБ рд░ рдПрдХреИ рд╕рдордпрдорд╛ рдХреЛрдбрд▓рд╛рдИ рддрдкрд╛рдИ рдЕрдШрд┐рдХреЛ рднрдиреНрджрд╛ рдЕрд▓рд┐ рд░рд╛рдореНрд░реЛ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реНред

рджрд┐рди #193: linting рджреЗрдЦрд┐ рдПрдХрд╛рдЗ рдкрд░реАрдХреНрд╖рдг рд╕рдореНрдо

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рджрд┐рди #211: рдПрдХрд╛рдИ рджреЗрдЦрд┐ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд╕рдореНрдо

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рдЬреЗрдирдХрд┐рдиреНрд╕ + рдбрдХрд░ + рдЙрддреНрддрд░рджрд╛рдпреА = рдкрд░реАрдХреНрд╖рдг

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

  1. рд░рд┐рдкреЛ рдЪреЗрдХрдЖрдЙрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдгрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  2. рд╕рдорд╛рдирд╛рдиреНрддрд░рдорд╛ рд▓рд┐рдиреНрдЯ рдкреНрд▓реЗрдмреБрдХ рдЪрд░рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
  3. рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛ рд▓рд┐рдиреНрдЯ рднреВрдорд┐рдХрд╛ рдЪрд░рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
  4. рд╕рдорд╛рдирд╛рдиреНрддрд░рдорд╛ рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рдЬрд╛рдБрдЪ рд░реЛрд▓ рдЪрд░рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
  5. рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛ рдкрд░реАрдХреНрд╖рдг рднреВрдорд┐рдХрд╛ рдЪрд░рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
    1. рд▓рд┐рдиреНрдЯ рднреВрдорд┐рдХрд╛ред
    2. рдЕрдиреНрдп рднреВрдорд┐рдХрд╛рд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░рддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
    3. рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
    4. рдбрдХрд░ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
    5. molecule/default/playbook.yml рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
    6. рдЗрдбрдореНрдкреЛрдЯреЗрдиреНрд╕реА рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  6. рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН
  7. рд╕рдорд╛рдкреНрдд

рджрд┐рди #271: рдмрд╕ рдХрд╛рд░рдХ

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рд░ рдпреЛ рдпрд╣рд╛рдБ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реБрдиреБрдкрд░реНрдЫред рдпреЛ рдПрдХ рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ, рдпреЛ рдХреЗ рдХрд╛рд░реНрдп рднрдпреЛ рдХреЛ рд░реВрдкрд░реЗрдЦрд╛ рднрд┐рддреНрд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН, рд░ рдЫрд▓рдлрд▓ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕ред рд╣рд╛рдореАрд▓реЗ рдЬреЗрдирдХрд┐рдиреНрд╕ + рдмрд┐рдЯрдмрдХреЗрдЯ + рдЬрд┐рд░рд╛рд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реЗрдХрд╛ рдЫреМрдВред

рддрд░ рдпрд╕реНрддреЛ рд░реВрдкрдорд╛, рд╕рдореАрдХреНрд╖рд╛ рдПрдХ рд░рд╛рдордмрд╛рдг рд╣реЛрдЗрди; рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛, рд╣рд╛рдореА рдорд╛рд╕реНрдЯрд░ рдХреЛрдбрдорд╛ рдкреБрдЧреНрдпреМрдВ, рдЬрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдлреНрд▓рдк рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдпреЛ:

- get_url:
    url: "{{ actk_certs }}/{{ item.1 }}"
    dest: "{{ actk_src_tmp }}/"
    username: "{{ actk_mvn_user }}"
    password: "{{ actk_mvn_pass }}"
  with_subelements:
    - "{{ actk_cert_list }}"
    - "{{ actk_certs }}"
  delegate_to: localhost

- copy:
    src: "{{ actk_src_tmp }}/{{ item.1 }}"
    dest: "{{ actk_dst_tmp }}"
  with_subelements:
    - "{{ actk_cert_list }}"
    - "{{ actk_certs }}"

рддреНрдпрд╕рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдареАрдХ рдЧрд░реЗ, рддрд░ рдЕрд╡рд╢реЗрд╖ рд░рд╣реНрдпреЛред

get_url:
    url: "{{ actk_certs }}/{{ actk_item }}"
    dest: "{{ actk_src_tmp }}/{{ actk_item }}"
    username: "{{ actk_mvn_user }}"
    password: "{{ actk_mvn_pass }}"
  loop_control:
    loop_var: actk_item
  with_items: "{{ actk_cert_list }}"
  delegate_to: localhost

- copy:
    src: "{{ actk_src_tmp }}/{{ actk_item }}"
    dest: "{{ actk_dst_tmp }}"
  loop_control:
    loop_var: actk_item
  with_items: "{{ actk_cert_list }}"

рджрд┐рди #311: рдкрд░реАрдХреНрд╖рдгрдХреЛ рдЧрддрд┐ рдмрдврд╛рдЙрдБрджреИ

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рдХрдбрд╛ рд╢рдмреНрджрдорд╛, рддреНрдпрд╣рд╛рдБ рдЙрдкрд╛рдпрд╣рд░реВрдХреЛ рд╕реЗрдЯ рдерд┐рдпреЛ:

  1. рдбрдХрд░рдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  2. рднреВрдорд┐рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╣рдЯрд╛рдЙрдиреБрд╣реЛрд╕реН, рдЬреБрди рдирд┐рд░реНрднрд░рддрд╛рдХрд╛ рдХрд╛рд░рдг рдирдХреНрдХрд▓ рдЧрд░рд┐рдПрдХреЛ рдЫред
  3. рджрд╛рд╕рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрдврд╛рдЙрдиреБрд╣реЛрд╕реНред
  4. рдкрд░реАрдХреНрд╖рдг рд░рди рдЕрд░реНрдбрд░ред
  5. рд▓рд┐рдиреНрдЯ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рд╕рдмреИ рд╕реНрдерд╛рдиреАрдп рдПрдХ рдЖрджреЗрд╢ рд╕рдВрдЧред

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдЬреЗрдиреНрдХрд┐рдиреНрд╕рдорд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкрдирд┐ рдПрдХреАрдХреГрдд рднрдпреЛ

  1. рдирд┐рд░реНрдорд╛рдг рдЪрд░рдгрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  2. рд╕рдмреИ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд▓рд┐рдиреНрдЯред
  3. рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛ рдкрд░реАрдХреНрд╖рдг рднреВрдорд┐рдХрд╛ рдЪрд░рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
  4. рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╕рд┐рдХреЗрдХрд╛ рдкрд╛рдард╣рд░реВ

рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЪрд░рд╣рд░реВрдмрд╛рдЯ рдмрдЪреНрдиреБрд╣реЛрд╕реН

Ansible рд▓реЗ рдЧреНрд▓реЛрдмрд▓ рдЪрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рддреНрдпрд╣рд╛рдБ рдлрд╛рд░рдордорд╛ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рдЫ рдирд┐рдЬреА_рднреВрдорд┐рдХрд╛_vars, рддрд░ рдпреЛ рдПрдХ рд░рд╛рдордмрд╛рдг рдЙрдкрд╛рдп рд╣реЛрдЗрдиред

рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдиреНрдЫреБред рдЧрд░реМрдВ role_a ╨╕ role_b

# cat role_a/defaults/main.yml
---
msg: a

# cat role_a/tasks/main.yml
---
- debug:
    msg: role_a={{ msg }}

# cat role_b/defaults/main.yml
---
msg: b

# cat role_b/tasks/main.yml
---
- set_fact:
    msg: b
- debug:
    msg: role_b={{ msg }}

- hosts: localhost
  vars:
    msg: hello
  roles:
    - role: role_a
    - role: role_b
  tasks:
    - debug:
        msg: play={{msg}}

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

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

рдирд░рд╛рдореНрд░реЛ: рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЪрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

# cat roles/some_role/tasks/main.yml
---
debug:
  var: java_home

рдЕрд╕рд▓: рд╡рд┐ defaults рдЖрд╡рд╢реНрдпрдХ рдЪрд░рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

# cat roles/some_role/defaults/main.yml
---
r__java_home:
 "{{ java_home | default('/path') }}"

# cat roles/some_role/tasks/main.yml
---
debug:
  var: r__java_home

рдЙрдкрд╕рд░реНрдЧ рднреВрдорд┐рдХрд╛ рдЪрд░

рдирд░рд╛рдореНрд░реЛ: рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЪрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

# cat roles/some_role/defaults/main.yml
---
db_port: 5432

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

# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432

рд▓реВрдк рдирд┐рдпрдиреНрддреНрд░рдг рдЪрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдирд░рд╛рдореНрд░реЛ: loops рдорд╛ рдорд╛рдирдХ рдЪрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН item, рдпрджрд┐ рдпреЛ рдХрд╛рд░реНрдп/рдкреНрд▓реЗрдмреБрдХ рдХрддреИ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдпрд╕рд▓реЗ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫ

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item }}"
      loop:
        - item1
        - item2

рдЕрд╕рд▓: рдорд╛рд░реНрдлрдд рд▓реВрдкрдорд╛ рдЪрд░ рдкреБрди: рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН loop_var.

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item_name }}"
      loop:
        - item1
        - item2
      loop_control:
        loop_var: item_name

рдЗрдирдкреБрдЯ рдЪрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН

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

рдЕрд╕рд▓: рдЪрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

- name: "Verify that required string variables are defined"
  assert:
    that: ahs_var is defined and ahs_var | length > 0 and ahs_var != None
    fail_msg: "{{ ahs_var }} needs to be set for the role to work "
    success_msg: "Required variables {{ ahs_var }} is defined"
  loop_control:
    loop_var: ahs_var
  with_items:
    - ahs_item1
    - ahs_item2
    - ahs_item3

рд╣реНрдпрд╛рд╕ рд╢рдмреНрджрдХреЛрд╢рд╣рд░реВ рдирджрд┐рдиреБрд╣реЛрд╕реН, рд╕рдорддрд▓ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

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

рдирд░рд╛рдореНрд░реЛ: рд╣реНрдпрд╛рд╕/рд╢рдмреНрджрдХреЛрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

---
user:
  name: admin
  group: admin

рдЕрд╕рд▓: рд╕рдорддрд▓ рдЪрд░ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

---
user_name: admin
user_group: "{{ user_name }}"

рдЗрдореНрдкреЛрдЯреЗрдиреНрдЯ рдкреНрд▓реЗрдмреБрдХ рд░ рднреВрдорд┐рдХрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рднреВрдорд┐рдХрд╛рд╣рд░реВ рд░ рдкреНрд▓реЗрдмреБрдХрд╣рд░реВ рдирд┐рд░реНрджреЛрд╖ рд╣реБрдиреБрдкрд░реНрдЫ, рдХрд┐рдирднрдиреЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдмрд╣рд╛рд╡ рд░ рдХреЗрд╣рд┐ рддреЛрдбреНрдиреЗ рдбрд░ рдХрдо рдЧрд░реНрджрдЫред рддрд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЕрдгреБ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдпреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛред

рдХрдорд╛рдгреНрдб рд╢реЗрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН

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

рдЕрдгреБ рдорд╛рд░реНрдлрдд рдЖрдлреНрдиреЛ рднреВрдорд┐рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдЕрдгреБ рдПрдХ рдзреЗрд░реИ рд▓рдЪрд┐рд▓реЛ рдХреБрд░рд╛ рд╣реЛ, рдХреЗрд╣рд┐ рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВ рд╣реЗрд░реМрдВред

рдЕрдгреБ рдмрд╣реБ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ

╨Т molecule.yml рдЦрдгреНрдбрдорд╛ platforms рддрдкрд╛рдЗрдБ рдзреЗрд░реИ рд╣реЛрд╕реНрдЯрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬреБрди рддрдкрд╛рдЗрдБ рддреИрдирд╛рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

---
    driver:
      name: docker
    platforms:
      - name: postgresql-instance
        hostname: postgresql-instance
        image: registry.example.com/postgres10:latest
        pre_build_image: true
        override_command: false
        network_mode: host
      - name: app-instance
        hostname: app-instance
        pre_build_image: true
        image: registry.example.com/docker_centos_ansible_tests
        network_mode: host

рддрджрдиреБрд╕рд╛рд░, рдпреА рд╣реЛрд╕реНрдЯрд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреН converge.yml рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

---
- name: Converge all
  hosts: all
  vars:
    ansible_user: root
  roles:
    - role: some_role

- name: Converge db
  hosts: db-instance
  roles:
    - role: some_db_role

- name: Converge app
  hosts: app-instance
  roles:
    - role: some_app_role

рдЙрддреНрддрд░рджрд╛рдпреА рдкреНрд░рдорд╛рдгрд┐рдХрд░рдгрдХрд░реНрддрд╛

рдЕрдгреБ рдорд╛ рдпреЛ рдЙрджрд╛рд╣рд░рдг рд╕рд╣реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрди ansible рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ, рдпрд╕рдмрд╛рд╣реЗрдХ, рдпреЛ рд░рд┐рд▓реАрдЬ 3 рджреЗрдЦрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рднрдПрдХреЛ рдЫред рдпреЛ testinfra/inspec рдЬрддреНрддрд┐рдХреИ рд▓рдЪрд┐рд▓реЛ рдЫреИрди, рддрд░ рд╣рд╛рдореА рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рдлрд╛рдЗрд▓рдХрд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╣рд╛рдореНрд░рд╛ рдЕрдкреЗрдХреНрд╖рд╛рд╣рд░реВрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ:

---
- name: Verify
  hosts: all
  tasks:
    - name: copy config
      copy:
        src: expected_standalone.conf
        dest: /root/wildfly/bin/standalone.conf
        mode: "0644"
        owner: root
        group: root
      register: config_copy_result

    - name: Certify that standalone.conf changed
      assert:
        that: not config_copy_result.changed

рд╡рд╛ рд╕реЗрд╡рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпреЛ рдЙрдкрд▓рдмреНрдз рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБрд╣реЛрд╕реН рд░ рдзреБрдореНрд░рдкрд╛рди рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН:

---
  - name: Verify
    hosts: solr
    tasks:
      - command: /blah/solr/bin/solr start -s /solr_home -p 8983 -force
      - uri:
          url: http://127.0.0.1:8983/solr
          method: GET
          status_code: 200
        register: uri_result
        until: uri_result is not failed
        retries: 12
        delay: 10
      - name: Post documents to solr
        command: /blah/solr/bin/post -c master /exampledocs/books.csv

рдореЛрдбреНрдпреБрд▓ рд░ рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдорд╛ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН

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

рд╕реБрдЭрд╛рд╡ рд░ рдпреБрдХреНрддрд┐рд╣рд░реВ рд╕рдВрдХреНрд╖реЗрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН

  1. рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЪрд░рд╣рд░реВрдмрд╛рдЯ рдмрдЪреНрдиреБрд╣реЛрд╕реНред
  2. рдЙрдкрд╕рд░реНрдЧ рднреВрдорд┐рдХрд╛ рдЪрд░ред
  3. рд▓реВрдк рдирд┐рдпрдиреНрддреНрд░рдг рдЪрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  4. рдЗрдирдкреБрдЯ рдЪрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  5. рд╣реНрдпрд╛рд╕ рд╢рдмреНрджрдХреЛрд╢рд╣рд░реВ рдирджрд┐рдиреБрд╣реЛрд╕реН, рд╕рдорддрд▓ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  6. рдЗрдореНрдкреЛрдЯреЗрдиреНрдЯ рдкреНрд▓реЗрдмреБрдХ рд░ рднреВрдорд┐рдХрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  7. рдХрдорд╛рдгреНрдб рд╢реЗрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред
  8. рдЕрдгреБ рдорд╛рд░реНрдлрдд рдЖрдлреНрдиреЛ рднреВрдорд┐рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  9. рдореЛрдбреНрдпреБрд▓ рд░ рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдорд╛ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред

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

рдХрд╕рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдПрдХ рд╡рд░реНрд╖рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд╛рдЧрд▓ рдирд╣реБрдиреБрд╣реЛрд╕реН

рддрдкрд╛рдИрдВрд╕рдБрдЧ IaC рдЫ рднрдиреЗ рдкрдирд┐, рддрдкрд╛рдИрдВ рдЧрдПрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛтАЛтАЛрдкреВрд░реНрд╡рд╛рдзрд╛рд░рд▓рд╛рдИ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред рдпреЛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛ рдЬрд╕рд▓рд╛рдИ рдзреИрд░реНрдп, рд╕рдордп рд░ рдЬреНрдЮрд╛рди рдЪрд╛рд╣рд┐рдиреНрдЫред

UPD1 2020.05.01 20:30 - рдкреНрд▓реЗрдмреБрдХрд╣рд░реВрдХреЛ рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ callback_whitelist = profile_tasks рд▓рд╛рдореЛ рд╕рдордпрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХреЗ рдХрд╛рдо рдЧрд░реНрджрдЫ рднрдиреЗрд░ рдмреБрдЭреНрдиред рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдЬрд╛рдиреНрдЫреМрдВ рдЙрддреНрддрд░рджрд╛рдпреА рддреНрд╡рд░рдг рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ред рддрдкрд╛рдИрдВ рдкрдирд┐ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдорд╛рдЗрдЯреЛрдЬреЗрди
UPD2 2020.05.03 16:34 - рд╕рдВрд╕реНрдХрд░рдг fran├зaise

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

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