рдЖрдЬ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдПрд╕рд╕реАрдПрдо рдХреНрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рд┐рдЬреНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдХрд╣рд╛рдирд┐рдпрд╛рдВ рдмрддрд╛рдПрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╣рдо рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирддреЗ рд╣реБрдП, рдРрдиреНрд╕рд┐рдмрд▓, рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ, рд╢реЗрдл рдФрд░ рдкрдкреЗрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рд╕рд╛рдордЧреНрд░реА
рдЖрдВрджреНрд░реЗрдИ рдлрд┐рд▓рд╛рдЯреЛрд╡ рдХреА рдПрдХ
рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рдИрдкреАрдПрдПрдо рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓реАрдб рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдЕрдХреНрдЯреВрдмрд░ рджреЗрд╡реЛрдкреНрд╕ 2017 рд╕рдореНрдореЗрд▓рди рд╕реЗ рд╣реИред
SCM рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

SCM рдХреНрдпрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬреЛ рд░рд╛рдЬреНрдп рдП рд╕реЗ рд╣рдорд╛рд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдХреБрдЫ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рд░рд╛рдЬреНрдп рдмреА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ DevOps рдЗрдВрдЬреАрдирд┐рдпрд░ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд" рддрд░реАрдХреЗ рд╕реЗ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ред
"рд╕реНрд╡рдЪрд╛рд▓рд┐рдд" рдкрджреНрдзрддрд┐ рд╣рдореЗрдВ SCM (рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди) рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ? рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд╕реБрд╕рдВрдЧрдд рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдПред SCM CI / CD рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЛрдб рд╣реИ, рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: Git, Mercurialред рдпрд╣ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред
рдЕрдВрддрд┐рдо рдмрдВрдж рд╕реНрд╡рдЪрд╛рд▓рди рдЪрдХреНрд░ рд╣реИ: рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рд▓реЗрдХрд░ рдЗрд╕реЗ рддреИрдирд╛рдд рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рддрдХ, рд╕рдм рдХреБрдЫ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
SCM рдХреНрдпрд╛ рд╣реИ: Ansible

рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкрд╣рд▓рд╛ Ansible рд╣реИред рдЗрд╕рдХреА рдПрдХ рдПрдЬреЗрдВрдЯ рд░рд╣рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ рдпрдорд▓ рдЬреИрд╕рд╛ рдбреАрдПрд╕рдПрд▓ рд╣реИ, рдпрд╣ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрд╛рд░рдг рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рд╣рд▓реНрдХрд╛ рд╣реИред Ansible рдХреЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рдХрдо рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛ рд╣реИ - рдЖрдк рдХрд┐рд╕реА рдХреЛ рднреА рд╕рд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдиреБрднрд╡ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рд╡реНрдпрдХреНрддрд┐, рдкрд╛рдпрдерди рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рдПрд╕рд╕реАрдПрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рдХреЗрд╡рд▓ рджреЛ рджрд┐рдиреЛрдВ рдореЗрдВ рдЕрдиреНрд╕рд┐рдмрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдиреАрдЪреЗ ChatOps рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: рд╕реНрд▓реИрдХ рдореЗрдВ рдПрдХ рдиреЛрдЯрд┐рдлрд╝рд╛рдпрд░ред рдпрдорд▓ рдХреЛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓рд╛ рдЕрдВрд╕рд┐рдмрд▓ рдХреЛрдб рдХреЛрдИ рдирдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред
- block: - name: "SlackNotify : Deploy Start" local_action: module: slack token: "{{ slack_url }}" attachments: - title: "Deploy to {{ inventory_hostname }} has been Started" text: "<!here> :point_up_2:" color: "#551a8b" - include: configure.yml tags: - configure - include: remote-fetch.yml tags: - remote - include: assets.yml
рдПрд╕рд╕реАрдПрдо рдХреНрдпрд╛ рд╣реИ: рдмрд╛рд╡рд░реНрдЪреА

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

рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ рдПрдЬреЗрдВрдЯ рд░рд╣рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реИ рдЬреЛ рд╕рд╛рд▓реНрдЯ-рдПрд╕рдПрд╕рдПрдЪ рдФрд░ рдирдордХ-рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреБрд╢ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреЛрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕реНрд╡рдЪрд╛рд▓рди рдкрд░ рд╣реИ, рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдпрдорд▓ рдЬреИрд╕реА рднрд╛рд╖рд╛, рдХреЛрдб Ansible рдХреЗ рд╕рдорд╛рди рд╣реИред
#ntp-packages: pkg.installed: - pkgs: - ntp - ntpdate #/etc/ntp.conf: file: - managed - source: salt:
рдПрд╕рд╕реАрдПрдо рдХреНрдпрд╛ рд╣реИ: рдХрдардкреБрддрд▓реА

рд╣рдорд╛рд░реЗ рдмреЛрд▓реАрджрд╛рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдЖрдЦрд┐рд░реА рдХрдардкреБрддрд▓реА рд╣реИред рдЗрд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рднреА рд╣реИ, рд╢реЗрдл рдХреА рддрд░рд╣, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЦреЛрдЬ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд░реВрдмреА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдкрдкреЗрдЯ-рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ "рддрдереНрдпреЛрдВ" рдкрд░ рд░реВрдмреА рдЬреИрд╕рд╛ рдбреАрдПрд╕рдПрд▓ рд╣реИред рд▓реЗрдХрд┐рди рдХрдардкреБрддрд▓реА рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдореИрдирд┐рдлреЗрд╕реНрдЯреЛрдВ рдореЗрдВ рд╢реБрджреНрдз рд░реВрдмреА рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкреНрд▓рд╕ рдФрд░ рдорд╛рдЗрдирд╕ рджреЛрдиреЛрдВ рд╣реИред рдпрд╣ рдкреБрдкреЗрдЯ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдХреЛрдб рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
class { 'mysql::server' : root_password => 'password' } mysql::db{ ['test', 'test2', 'test3']: ensure => present, charset => 'utf8', require => Class['mysql::server'], } mysql::db{ 'test4': ensure => present, charset => 'latin1', } mysql::db{ 'test5': ensure => present, charset => 'binary', collate => 'binary', }
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдПрд╕.рд╕реА.рдПрдо.
рдПрдХ рдзреНрд╡рд╕реНрдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╣рдорд╛рд░реА рдкрд┐рдЫрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рд╕рдмрд╕реЗ рддрд╛рдЬрд╝рд╛ рджрд░реНрдж рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рддрд╛рдЬрд╝рд╛ рджрд░реНрдж рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рджрд░реНрджрдирд╛рдХ рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдЧреНрд░рд╛рд╣рдХ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реИ - рдпрд╣ GPFS, GlusterFS рдкрд░ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрд╣реЗ рдХреЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рдмрдирд╛рддрд╛ рд╣реИред рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдпрд╛:
- USB / DVD рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдмрдирд╛рдирд╛ред рдЖрдкрдХреЛ рдПрдХ рдореАрдбрд┐рдпрд╛ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛред рдпрд╣ рдЙрди рдЧреНрд░рд╛рд╣рдХ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдмрдВрдж рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╣рдореЗрдВ рдПрдХ рдЖрдИрдПрд╕рдУ рдореЗрдВ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлреАрд▓реНрдб рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рднреЗрдЬреЗрдВ рдЬреЛ рд╕рд╛рдЗрдЯ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рддреИрдирд╛рдд рдХрд░реЗрдВрдЧреЗред
- рдПрдХ рдЙрддреНрдкрд╛рдж рдХреНрд▓рд╕реНрдЯрд░ рддреИрдирд╛рдд рдХрд░реЗрдВред рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдкрд╛рд╕ рдХрдИ рдмрдбрд╝реЗ рдЙрддреНрдкрд╛рдж рд╣реИрдВ, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд╕реАрдПрд▓рдЖрдИ-рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди, рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ред рд╣рдорд╛рд░реЗ рдврд╛рдВрдЪреЗ рдХреЛ рдлреАрд▓реНрдб рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдЧреНрд░рд╛рд╣рдХ рдХреА рдХрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдереАрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкрд╛рдпрдерди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рд╕реА рдФрд░ рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░реНрд╕ред рдЧреНрд░рд╛рд╣рдХ рдиреЗ рддреБрд░рдВрдд рдХрд╣рд╛: "рд╣рдо рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдЪрд╛рд╣рддреЗ рд╣реИрдВ", рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдЫреЛрдбрд╝рддреЗред
рд╣рдо рдХреНрдпрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рдХрдИ рдЙрддреНрдкрд╛рдж рд╣реИрдВ, рд╕рднреА рдХреЛ рд╕рд╛рд▓реНрдЯ-рдорд╛рд╕реНрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдорд▓реНрдЯреА-рдорд╛рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NODE рдЗрдиреНрдлреЛ (рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд┐рддрд┐) рдореЗрдВ, рд╣рдордиреЗ рджреЛ-рдорд╛рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛, рддреАрди рдорд╛рд╕реНрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕реЗрдХрдВрдб, рдФрд░ рдкрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдХрднреА рднреА рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдорд▓реНрдЯреАрдорд╛рд╕реНрдЯрд░ рдПрдХ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдирд╣реАрдВ рд╣реИред
рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдЬреЛ рд╣рдореЗрдВ рдорд┐рд▓реА, рд╡рд╣ рдереА рдЯреАрдо рд╡рд░реНрдХ: рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдореЗрдВ рд░рдирд░ рдФрд░ рдореЙрдбреНрдпреВрд▓ред рдореЙрдбреНрдпреВрд▓ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ рдЬреЛ рдорд╢реАрди рдХреА рддрд░рдл рд╕реЗ рдирдордХ рдорд┐рдирд┐рдпрди рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рд░рдирд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдмреАрдЪ рдЕрдХреНрд╕рд░ рд▓рдбрд╝рд╛рдЗрдпрд╛рдБ рд╣реЛрддреА рдереАрдВ: рд░рдирд░ рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
рддрдм рд╣рдореЗрдВ cache.mine рд╕реЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ:
ime = ImeActions() id = __grains__['id'] if id == ime.master_id: ret = __salt__['mine.get'](id, 'ime_actions.make_bfs_uuid') ime_dict = ret.get(id, None) if not ime_dict: try: result = __salt__['mine.send']('ime_actions.make_bfs_uuid') except Exeption, e: log.error("Failed to generate uuid: {0}.".format(str(e))) result = False else:
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬреЛ рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдИрдбреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрд░рдорд╢рдГ, рд╣рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдкрд░ рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдорд╢реАрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВред рд╣рдордиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП cache.mine рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╡рд╣ рдПрдХ рд░рд┐рдмреВрдЯ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

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

рдЖрдк
GitHub рдХреЛ
рджреЗрдЦ рд╕рдХрддреЗ
рд╣реИрдВ ред
рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рдХреНрдпрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдПрдХ DMZ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ SaltStack

- DMZред рд╢реЗрдл рдорд╣рд╛рди рдкреИрдХ, рдХрдардкреБрддрд▓реА рднреА рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдиреНрд╕рд┐рдмрд▓ рдХреЗ рд╕рд╛рде, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ - рдЕрдЧрд░ рдХреЛрдИ рдЯреЙрд╡рд░ рдирд╣реАрдВ рд╣реИ - рд╣рдорд╛рд░реЗ рдиреЛрдбреНрд╕ рд╕реЗ рдкреБрд▓ рдореЛрдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд┐ рдбрд┐рдорд┐рд▓рд┐рдЯреНрд░рд╛рдЗрдЬреНрдб рдЬрд╝реЛрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд▓рд┐рдП рд░реВрдкрд░реЗрдЦрд╛ (рдкрд╛рдпрдерди рдореЗрдВ)ред рдмрд╛рд╡рд░реНрдЪреА рдФрд░ рдХрдардкреБрддрд▓реА рдмрд╣реБрдд рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рд░реВрдмреА рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рд╡рд░реНрдЪреА рдпрд╛ рдХрдардкреБрддрд▓реА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Ansible рдЯреВрд▓рдХрд┐рдЯ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
- рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдмрдВрдзрдиред рд╢реЗрдл рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ, рдХрдардкреБрддрд▓реА рднреА, рдФрд░ рдПрдВрдЬрд╝рд┐рдмрд▓ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдореЗрдЬрд╝реЕрди рдкрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рдмрдбрд╝реЗ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдмрд╛рд╡рд░реНрдЪреА
рдЧреНрд░рд╛рд╣рдХ рдПрдХ рдмрд╛рджрд▓ рдореЗрдВ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ - рдпрд╣ рдУрдкрдирд╕реНрдЯреИрдХ рдерд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╕рдм рдХреБрдЫ рдмрд┐рдЦрд░рд╛ рд╣реБрдЖ рдерд╛: рд░реИрдХрд╕реНрдкреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдХреБрдЫ, рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░ рдпрд╛ рдЙрдирдХреЗ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдкрд░ рдХреБрдЫред
рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди рдЪрд╛рд╣рддреЗ рдереЗ, рдФрд░ рдпрд╣ рднреА рдХрд┐ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЙрдирдХреЗ рдЖрд╡реЗрджрди рд╕реНрд╡рдпрдВ рдореЗрдВ рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЧрддрд┐рд╢реАрд▓ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рджреЛрдиреЛрдВ рдХреЛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдХреА рдУрд░ред
рд╕реАрдбреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдареАрдХ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдордиреЗ рдЙрдирдХреЗ рд▓рд┐рдП SDLC - Software Development Lifecycle рдмрдирд╛рдпрд╛ рдФрд░ SCM рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рд╡реЗ рди рдХреЗрд╡рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ, рдмрд▓реНрдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рднреА рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рддрджрдиреБрд╕рд╛рд░, рдЬрдм рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо, рдиреЗрдЯрдлреНрд▓рд┐рдХреНрд╕ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рджреЛрд╖рдкреВрд░реНрдг рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдорд╛рд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рд╕реНрдерд╛рди рдкрд░ рдирдП рдФрд░ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдореЗрдВ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛:
- рдпрд╣ 2013 рдерд╛, рд╢реЗрдл 10 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред рд╣рдордиреЗ рдЦреЛрдЬ рд╢реБрд░реВ рдХреА, рд╕рднреА рдХрд╛рд░реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддреЗ рд╣реБрдП, рдФрд░ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓реЗ рд▓рд┐рдпрд╛ред рд╣рдордиреЗ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЪрдпрди рдФрд░ fqdn рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЗрд╕рдиреЗ рдЦреЛрдЬ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХреА рд╡рдЬрд╣ рд╕реЗ рдЗрд╕рдореЗрдВ рддреЗрдЬреА рдЖрдИред
рд▓реЗрдХрд┐рди рдХреБрдЫ рдСрдкрд░реЗрд╢рди рдкреВрд░реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЦреЛрдЬ рдХреЛ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд░реВрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдордиреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛: рд╣рдордиреЗ рдЙрди рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рдереА рдФрд░ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рд╡рд╣ рдХрд┐рдпрд╛ред
if !Chef::Config[:solo] search(:node, "fqdn:*metro-#{node[:env]}-mongodb*").each do |mongo| @mongodbs << mongo.fqdn end else @mongodbs = ["lvs-metro-#{node[:env]}-mongodb3001.qa.example.com"] end
рдиреАрдЪреЗ рдкрдВрдХреНрддрд┐: рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЦреЛрдЬ рдХреЛ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдПрдВ, рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- "Node.save" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рд╕рд╛рд╡рдзрд╛рди рдФрд░ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред MySQL рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдФрд░ рдЕрдзреВрд░рд╛ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ MySQL рдиреЛрдб рдкрд░ рдиреБрд╕реНрдЦрд╛ рдХреЗ рдЕрдВрджрд░ рдиреЛрдбред Save рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдФрд░ рд╕реНрдХреЗрд▓-рдЕрдк рдХреЗ рд╕рдордп, рдХреБрдЫ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдиреЗ 500 рддреНрд░реБрдЯрд┐ рджреАред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдо рдЧрд▓рдд рд╕рдордп рдкрд░ рдиреЛрдб рдХреЛ рдмрдЪрд╛ рд░рд╣реЗ рдереЗ: рдпрд╣ рд╢реЗрдл рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣реАрдВ рдпреВрдЖрдИ рдкрд░ рд╢реЗрдл рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рдирдпрд╛ рдиреЛрдб рдЪреБрдирддрд╛ рд╣реИ рдЬреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- "рд╕реНрдкреНрд▓реЗ" рдХрд╛ рдЕрднрд╛рд╡ рд╢реЗрдл рд╕рд░реНрд╡рд░ рдХреЛ рдорд╛рд░ рд╕рдХрддрд╛ рд╣реИред Splay рдПрдХ рд╢реЗрдл рдХреНрд▓рд╛рдЗрдВрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рдиреЗ рдкрд░ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рднрд╛рд░реА рднрд╛рд░ рдХреЗ рд╕рд╛рде, рдЬрдм рдЖрдкрдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдиреЛрдбреНрд╕ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЛ рдирд╣реАрдВ рдорд╛рд░реЗрдЧрд╛ред
рд╣рдо рд╢реЗрдл рдХреЗ рдмрдЬрд╛рдп рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

- рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рд╛рд╡рдзрд╛рди SaltStack рд╕рд╣реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ SaltCloud рд╣реИ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╣реАрдВ рднреА рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред рдХрдардкреБрддрд▓реА рдореЗрдВ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдХрдардкреБрддрд▓реА рдЙрджреНрдпрдо рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдкреИрд╕реЗ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдХрдВрдкрдиреА рдЕрдореЗрдЬрди рдореЗрдВ "рд░рд╣рддреА" рд╣реИ, рддреЛ рдЕрдиреНрд╕рд┐рдмрд▓ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ, рдЕрдЧрд░ рдХреБрдЫ рдФрд░ - рдЖрдк рдЗрд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдмрд╛рдБрдз рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред
- SDLCред рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдл рдХреЗ рдкрд╛рд╕ рдЯреЗрд╕реНрдЯ рдХрд┐рдЪрди рд╕реЗ рд▓реЗрдХрд░ рд╕рдм рдХреБрдЫ рд╣реИред рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдореЗрдВ рдЕрдЬрдЧрд░ рдХреЗ рд╕рднреА рдЙрдкрдХрд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЕрдм рдХрдардкреБрддрд▓реА рдХреЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИред Ansible рдореЗрдВ рдПрдХ рд░реЛрд▓ рд╕реНрдкреЗрд╕ рд╣реИ, рдЖрдк рд╢реЗрдл рдХреА рдЯреЗрд╕реНрдЯ рдХрд┐рдЪрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рджреЗрд╢реА рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИред
- рд╕рдВрд╕рд╛рдзрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред рд╢реЗрдл рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдореЗрдВ рдЖрдк рд╕реЙрд▓реНрдЯрдХреНрд▓рд╛рдЙрдб рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдардкреБрддрд▓реА рдЯреВрд▓реНрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реИрдВ, рдФрд░ Ansible рдХреЗрд╡рд▓ рдЕрдореЗрдЬрд╝реЕрди рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╢реЗрдл рдХреЗ рд╕рд╛рде EPAM рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХреНрд▓рд╛рдЙрдб
AWS OpsWorks рдХреЗ рдЖрдЧрдорди рд╕реЗ рдбреЗрдврд╝ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╣рдо Chef рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдХреЗ рдПрдХ рдЙрдиреНрдирдд Amazon CloudFormation рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рддрд╛рдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рди рдХреЗрд╡рд▓ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдмрд▓реНрдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рджреВрд╕рд░рд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░реНрдп рдПрдХ рд╕реЗрд╡рд╛ рдХреИрдЯрд▓реЙрдЧ рдмрдирд╛рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рдПрд▓рдПрдПрдордкреА рд╕реНрдЯреИрдХ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред

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

CloudFormation + OpsWork рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА SCM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд░ рдХреЛрдИ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдПрдХ рдХреИрдЯрд▓реЙрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП - рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╣рд░ рдХреЛрдИ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░реЗрдЧрд╛ред рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдХреА рдЕрдкрдиреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ: рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЛ рдЦреЛрдЬрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬреЛ рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреИрдЯрд▓реЙрдЧ рдХреЛ рднрд░ рд╕рдХрддрд╛ рд╣реИред
EPAM рдореЗрдВ SCM рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛

рдпреЗ EPAM рдХреЗ рднреАрддрд░ SCM рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЗ рдЖрдБрдХрдбрд╝реЗ рд╣реИрдВред рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рдмрд╣реБрдд рдкреАрдЫреЗ рд╣реИред рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ, рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рдкреНрд░рд╡реЗрд╢ рдХреА рдХрдо рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рд╣реИред рдЬрдм рд╣рдо SCM рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рдЬрд╛рд░ рдЙрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реИред
Ansible рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдЯрд┐рдкреНрд╕ рдЬреЛ рдореИрдВ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрдм рдореИрдВ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
- 'рдЧрддрд┐' рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╣ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ SSH рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2-6 рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ (el6 рдХреЗ рд▓рд┐рдП)ред рдмрд╛рдХреА рд╕рднреА рдХреЗ рд▓рд┐рдП, 'рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд┐рдВрдЧ' рд╣реИред рдпрд╣ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рдЗрдк рд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
- 'With_items' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
- name: project apt dependencies installed apt: name: "{{ item }}" become: yes with_items: - build-essential - acl - git - curl - gnupg2 - libpcre3-dev - python-apt - python-pycurl - python-boto - imagemagick - libmysqlclient-dev
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдзреНрдпрд╛рди рд╕реЗ 'local_action' рдФрд░ 'рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдкрд╣рд▓рд╛ рдЖрдкрдХреЛ рд╕рд╛рд▓реНрдЯрд╕реНрдЯреИрдХ рд░рдирд░ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╢реАрдиреЛрдВ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реМрдВрдкрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
- name: create postgresql database postgresql_db: name: "{{ database_name }}" login_host: "{{ database_host }}" login_user: "{{ database_master_user }}" login_password: "{{ database_master_password }}" encoding: "UTF-8" lc_collate: "en_US.UTF-8" lc_ctype: "en_US.UTF-8" template: "template0" state: present delegate_to: "{{ groups.pg_servers|random}}"
рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИред рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд┐рдирд╛, рдСрдкрд░реЗрд╢рди рдХрдИ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЙрд╕реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рджреВрд╕рд░реЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛ред
- рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВред рдпрд╣ рд▓реАрдб рд╕рдордп рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореЗрд░реЗ рд▓рд┐рдП, Ansible рдПрдХ рдкрд╕рдВрджреАрджрд╛ рд╣реИред SaltStack рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛, рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди Python рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрдирдХреЗ рдмрд┐рдирд╛ SaltStack рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд╢реЗрдлрд╝ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдФрд░ рдХрд┐рд╕реА рднреА рдкреИрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЪрд╛рдВрджреА рдХреА рдЧреЛрд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдкрдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреМрди рдХрд░рддрд╛ рд╣реИ - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдмрд╛рд╡рд░реНрдЪреА рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЕрдкрдиреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред
рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрд╛ рдорд┐рдирдЯред рдпрджрд┐ рдЖрдкрдХреЛ рджреЗрд╡рдУрдкреНрд╕ рд╕рдореНрдореЗрд▓рди рд╕реЗ рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдкрд╕рдВрдж рдЖрдИ - рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 14 рдЕрдХреНрдЯреВрдмрд░ рдХреЛ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдореЗрдВ рдирдпрд╛ рджреЗрд╡рдУрдкреНрд╕ 2018 рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд╣реЛрдВрдЧреАред рд╕рд╛рдЗрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкреАрдХрд░ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИрдВред