{"id":305111,"date":"2020-06-09T21:00:21","date_gmt":"2020-06-09T21:00:21","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=305111"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=305111","title":{"rendered":"Make your operations easy"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/505922\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6-\/xn\/_4\/6-xn_4d3nh2s_dbvt67229lwodc.png\" alt=\"image\"><\/p>\n<p>  \u0423 \u0432\u0441\u0435\u0445 \u0435\u0441\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0438 \u0432\u0441\u0435\u0445 \u043e\u043d\u0430 \u0440\u0430\u0437\u043d\u0430\u044f: \u043a\u043e\u043c\u0443-\u0442\u043e \u043c\u0438\u043b\u0435\u0439 \u0440\u043e\u0434\u043d\u043e\u0439 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440, \u043a\u0442\u043e-\u0442\u043e \u0436\u0438\u0432\u0435\u0442 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 \u0438\u043b\u0438 multi-cloud. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u2014 \u044d\u0442\u043e 1500+ \u0445\u043e\u0441\u0442\u043e\u0432 \u043d\u0430 \u043f\u043e\u043b\u0443\u0441\u043e\u0442\u043d\u0438 \u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0443 VPC, \u0430 \u0442\u0435 \u2014 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c AWS-\u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430: \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u0435\u0442\u0438\u043f\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, Legacy \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438, \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. <\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0435\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Ansible, Molecule, Docker, Gitlab CI \u0438 Packer. <br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435: <\/p>\n<ul>\n<li>\u041a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u043e\u043b\u0435\u0439, \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0443\u0447\u0435\u0442\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435. <\/li>\n<li>\u041a\u0430\u043a \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 \u0445\u043e\u0441\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/li>\n<li>\u041a\u0430\u043a\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442, \u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c.<\/li>\n<\/ul>\n<p>  \u041e \u0447\u0435\u043c \u044f <b>\u041d\u0415 <\/b>\u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c: <\/p>\n<ul>\n<li>\u041a\u0430\u043a \u043c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u2014 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0445 \u0432\u044b\u0431\u0440\u0430\u043b\u0438. <\/li>\n<li>\u041d\u0435 \u0431\u0443\u0434\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441 \u0430\u043d\u0430\u043b\u043e\u0433\u0430\u043c\u0438. \u041d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0437\u043e\u0440\u043e\u0432 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u2014 \u043d\u0435 \u0432\u0438\u0436\u0443 \u0441\u043c\u044b\u0441\u043b\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d.<\/li>\n<li>\u041d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e \u043e\u0441\u043d\u043e\u0432\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/li>\n<\/ul>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043f\u0440\u043e <a href=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/470543\/\">\u043d\u0430\u0448 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Terraform<\/a>. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043e\u0442\u0441\u044b\u043b\u043a\u0438. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c\u2026<\/p>\n<h2>\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/h2>\n<p>  \u041c\u044b, \u043a\u0430\u043a Operations Team, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d. \u041d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043d\u0438\u0436\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0433\u043e, \u0432\u043e \u0447\u0442\u043e \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0432\u043e\u0438 \u043d\u0430\u0442\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0437\u043e\u043b\u0438\u0441\u0442\u044b\u0435 \u0440\u0443\u043a\u0438, \u0438 \u043f\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430 \u0441\u043b\u043e\u0432\u043e: \u0437\u0430\u0434\u0430\u0447 \u043c\u043d\u043e\u0433\u043e \u0438 \u043e\u043d\u0438 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u044b\u0435. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c \u043f\u043e\u0434 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ax\/nf\/-6\/axnf-6hlidmhtygiu8dh4xsvdlc.png\" alt=\"image\"><\/p>\n<p>  \u041d\u0430\u043c \u043f\u043e\u0432\u0435\u0437\u043b\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u0442\u0440\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 Amazon: \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u0430 AWS. <\/p>\n<p>  \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Terraform \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0447 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u043f\u0435\u0440\u0435\u043b\u043e\u0436\u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043d\u0430 Terraform, \u044f \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b <a href=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/470543\/\">\u0437\u0434\u0435\u0441\u044c<\/a>. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u044f\u0442\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c. \u0414\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u0437\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043e\u043d \u0431\u044b\u043b \u043f\u043e\u043a\u0440\u044b\u0442 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e. \u0415\u0433\u043e \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0438 \u043c\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. <\/p>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u044e\u0430\u043d\u0441. \u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0443\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0441\u0442\u0440\u0430\u043d\u043d\u0443\u044e \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0443 SWE. \u041e\u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <b>Software Environment<\/b> \u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0436\u0438\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b \u0443\u0436\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0441 SWE, \u043f\u0440\u043e\u0441\u0442\u043e \u0443 \u0432\u0430\u0441 \u043e\u043d\u043e \u0437\u043e\u0432\u0435\u0442\u0441\u044f \u0438\u043d\u0430\u0447\u0435: golden image, \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0438\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0437.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/za\/k-\/yk\/zak-ykgd2vl65wf6fglulroudyk.png\" alt=\"image\"><\/p>\n<p>  SWE \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f:<\/p>\n<ul>\n<li>\u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439, \u0432\u044b\u0448\u0435\u0434\u0448\u0438\u0445 \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443<\/li>\n<li>\u0412\u0435\u0440\u0441\u0438\u044e \u044f\u0434\u0440\u0430<\/li>\n<li>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f<\/li>\n<li>\u0422\u044e\u043d\u0438\u043d\u0433 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/li>\n<li>\u0428\u0430\u0431\u043b\u043e\u043d \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438 \u043d\u0430\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c<\/li>\n<\/ul>\n<p>  \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u00ab\u0441\u043b\u0435\u043f\u043e\u043a\u00bb \u043f\u0440\u0435\u0434\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043d\u0430\u0441 \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438. \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u043d \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0433\u0434\u0435 \u043d\u0430 \u0435\u0433\u043e \u0431\u0430\u0437\u0435 \u0438\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430, \u043f\u043e\u0442\u043e\u043c \u0432\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0447\u0438\u0435 \u2014 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e, \u0441\u0442\u0435\u0439\u0434\u0436\u0438\u043d\u0433\u0438 \u0438 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d.<\/p>\n<p>  \u041c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u0431\u0430\u0437\u0435 AMI (Amazon Machine Images), \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u0430 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u0438\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0441 \u043d\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043b\u0430\u0441\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c: \u043c\u044b \u0447\u0435\u0442\u043a\u043e \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 runtime \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0435\u043b\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u0442\u0438\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043f\u0440\u0438 \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0435 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0441\u0431\u043e\u0440\u0430 \u043b\u043e\u0433\u043e\u0432 \u0432 \u043b\u0430\u0431\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u2014 \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. <\/p>\n<p>  \u0412 \u043a\u0430\u043a\u043e\u0439 \u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0445\u0432\u0430\u0442\u0438\u0442 \u044d\u0442\u043e \u0442\u0435\u0440\u043f\u0435\u0442\u044c, \u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. <\/p>\n<h2>\u0414\u044c\u044f\u0432\u043e\u043b \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445 <\/h2>\n<p>  \u041d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0436\u0438\u0432\u0435\u0442 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 Amazon (AWS). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043c\u044b \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u043b\u0438 \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0439. \u0425\u043e\u0442\u044f \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0436\u0438\u0432\u0435\u0442 \u0432 \u0441\u0432\u043e\u0435\u043c \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0435.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u044f \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043a\u0443\u0440\u0441\u044b, \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u0438\u043b\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u044b \u043d\u0430 \u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u0442\u0430\u043c \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u0442\u0430\u043a:  <\/p>\n<blockquote><p>\u00ab\u0411\u0435\u0440\u0435\u0442\u0435 \u0432\u044b, \u0437\u043d\u0430\u0447\u0438\u0442, \u0441\u0432\u043e\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043e\u0431\u043c\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0435 \u044d\u0442\u043e \u0432\u0441\u0435 \u0432 Git (\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u0430\u043a \u043a\u043e\u0434 \u0436\u0435, \u0432\u0441\u0435 \u0434\u0435\u043b\u0430) \u2014 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0441\u0447\u0430\u0441\u0442\u044c\u0435!\u00bb   <\/p><\/blockquote>\n<p>  \u0412\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043d\u0443\u0436\u043d\u043e\u0435. <\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u044d\u0442\u043e \u0442\u0430\u043a \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0441\u044f \u0432\u0430\u0448\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u2014 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u043e\u0434\u0430\u043c\u0438 \u0436\u0438\u0432\u0443\u0442 \u0443 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0445\u043e\u0441\u0442\u0435\u0440\u0430. \u0423 \u043d\u0430\u0441 \u0432\u0441\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435: \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u0442\u044b\u0441\u044f\u0447 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c \u0441\u043b\u043e\u0435\u043c \u00ab\u0440\u0430\u0437\u043c\u0430\u0437\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u043e \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043f\u043e\u043b\u0443\u0441\u043e\u0442\u043d\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439. \u041e\u043d\u0438 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0443 VPC, \u0430 \u0442\u0435 \u2014 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c AWS-\u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c. \u0422\u0430\u043a \u0431\u0438\u0437\u043d\u0435\u0441\u0443 \u0443\u0434\u043e\u0431\u043d\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0431\u044e\u0434\u0436\u0435\u0442\u043e\u0432 \u0438 \u0431\u0438\u043b\u043b\u0438\u043d\u0433\u0430, \u0430 \u043d\u0430\u043c \u0441 \u044d\u0442\u0438\u043c \u043d\u0430\u0434\u043e \u0436\u0438\u0442\u044c. \u041d\u043e \u043d\u0430 \u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u043c \u2014 \u0443 \u0440\u0435\u0431\u044f\u0442 \u0438\u0437 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0438\u043b\u0438 \u0412\u041a \u0436\u0438\u0437\u043d\u044c \u044f\u0432\u043d\u043e \u0432\u0435\u0441\u0435\u043b\u0435\u0439.<\/p>\n<p>  \u00ab\u041f\u043e\u0434\u0443\u043c\u0430\u0435\u0448\u044c, \u0432\u0441\u0435\u0433\u043e \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u043f\u043e\u043b\u0442\u043e\u0440\u044b \u0442\u044b\u0441\u044f\u0447\u0438 \u0445\u043e\u0441\u0442\u043e\u0432 \u2014 \u0441\u043a\u0430\u0436\u0435\u0442 \u043a\u0442\u043e \u0442\u043e, \u2014 \u042f \u043c\u043e\u0433\u0443 \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u0439 \u0440\u043e\u043b\u0435\u0439, \u0438 \u0447\u0442\u043e?\u00bb. \u0428\u0443\u0442\u043a\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e. \u041f\u0440\u043e \u043d\u043e\u0443\u0442\u0431\u0443\u043a, \u043d\u0435 \u043f\u0440\u043e \u0445\u043e\u0434 \u043c\u044b\u0441\u043b\u0435\u0439. \u041e\u0442\u0432\u0435\u0447\u0430\u044e: \u0434\u044c\u044f\u0432\u043e\u043b, \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445.<\/p>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e\u0440\u043e\u0439 \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u043e\u0433\u0443\u0442 \u0443\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b Linux \u0438\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d \u043e\u0434\u0438\u043d.<\/p>\n<p>  \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u044d\u0442\u0438 \u0445\u043e\u0441\u0442\u044b \u2014 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439. \u041d\u0430 \u043d\u0438\u0445, \u043a\u0440\u043e\u043c\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e\u0431\u044b\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435: \u043e\u0442 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0441\u0431\u043e\u0440\u0430 \u043b\u043e\u0433\u043e\u0432 \u0434\u043e \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 IDS, \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0435\u0449\u0435\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b Security. <\/p>\n<p>  \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0441\u043a\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438, \u0441\u0442\u0440\u0435\u0441\u0441-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0441\u0442\u0435\u0439\u0434\u0436\u0438\u043d\u0433\u0438, UAT, \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d \u0438 \u0434\u0435\u043c\u043e-\u0441\u0442\u0435\u043d\u0434\u044b \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u00ab\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0438\u00bb \u0441 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u0435\u0442\u0438\u043f\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439. \u042d\u0442\u0443 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u0438 \u0436\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0441\u0445\u043e\u0434\u0443 \u0437\u0430\u0432\u0435\u0434\u0435\u0442\u0441\u044f, \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  \u041d\u0443 \u0438 \u00ab\u0432\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435\u00bb \u2014 \u044d\u0442\u043e \u0433\u043e\u0440\u044f\u0447\u043e \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u043d\u0430\u043c\u0438 Legacy \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u0433. \u042d\u0442\u043e \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440, \u043a\u0430\u043a \u043e\u043d \u0431\u044b\u043b \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u043e\u043c. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0433\u043b\u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0442\u044c, \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441-\u0437\u0430\u0434\u0430\u0447\u0443. <\/p>\n<p>  \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u043b\u044c\u0437\u044f. \u042d\u0442\u043e \u0434\u043e\u0440\u043e\u0433\u043e, \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435, \u0430 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u00ab\u0410\u0432\u0433\u0438\u0435\u0432\u044b\u043c\u0438 \u043a\u043e\u043d\u044e\u0448\u043d\u044f\u043c\u0438\u00bb. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430 \u043c\u043e\u0440\u0430\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0434\u0435\u043c\u043e\u0442\u0438\u0432\u0438\u0440\u0443\u044f \u043b\u044e\u0434\u0435\u0439 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. <\/p>\n<h2><s>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/s> \u0417\u0430\u0434\u0430\u0447\u0438<\/h2>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0430\u0448\u0438\u0445 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u0439 \u043c\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u0438 3 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ul>\n<li><b>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b>. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b: \u0431\u0435\u0440\u0435\u0448\u044c \u043b\u044e\u0431\u0438\u043c\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439, \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0448\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0438, \u0438 \u0432\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e. \u041d\u043e \u0443 \u043d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b \u0438\u043b\u0438 \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0438, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (java, nodejs, python) \u0438 \u0442\u0438\u043f\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (\u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043a\u0435\u0448\u0438). \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0443\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c.<\/li>\n<li><b>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. <\/b> \u041e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0443 \u043d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e, \u043e\u043d\u0438 \u0440\u0430\u0437\u043d\u044b\u0435, \u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0441\u0432\u043e\u0435\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0438. \u0414\u0435\u0440\u0436\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u2014 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f. \u0414\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a \u043d\u0435\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u2014 \u0443\u0436\u0435 \u043b\u0443\u0447\u0448\u0435, \u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u0410 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0434\u043b\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0441\u0430\u043c\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u043b\u043e \u043d\u044e\u0430\u043d\u0441\u044b \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u043b\u043e, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u0438\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f.<\/li>\n<li><b>\u0421\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 SWE.<\/b> \u042d\u0442\u0438 \u043e\u0431\u0440\u0430\u0437\u044b \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043d\u043e\u0432\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0435\u0441\u0442\u044c \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b, \u043d\u043e \u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0435. \u0418 \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0437\u0430\u0433\u0432\u043e\u0437\u0434\u043a\u0430. \u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u0432\u0437\u0434\u0443\u043c\u0430\u0435\u0442\u0441\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435. \u0410 \u0435\u0441\u043b\u0438 \u043c\u044b \u0447\u0442\u043e-\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0447\u0435\u0442\u043a\u0438\u0439 \u043f\u043b\u0430\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u043e\u0442\u043a\u0430\u0442\u0430 \u043d\u0430 \u043b\u044e\u0431\u043e\u0435 \u0432\u043d\u043e\u0441\u0438\u043c\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u043e \u043c\u044b \u0442\u043e\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0445 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c.<\/li>\n<\/ul>\n<p>  \u041b\u043e\u0436\u043a\u043e\u0439 \u0434\u0435\u0433\u0442\u044f \u0441\u0442\u0430\u043b \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u043e\u043a\u0430 \u043c\u044b \u043d\u0435 \u0437\u0430\u0431\u0440\u0430\u043b\u0438 \u0438\u0445 \u0441\u0435\u0431\u0435, \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043b\u0435\u0436\u0430\u043b\u0438 \u043d\u0430 \u043f\u043b\u0435\u0447\u0430\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438, \u0432\u0435\u0434\u044c \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u043d\u0435\u043f\u043e\u0434\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b. <\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 SWE \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u043d\u0430\u0448\u0438\u043c\u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041f\u043e\u0441\u043b\u0435 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e SWE, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u043d\u0430 \u0435\u0433\u043e \u0431\u0430\u0437\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0430 \u0435\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Security. \u0422\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u0430\u0432\u0430\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430. \u041c\u044b \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u0441\u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043e\u043d \u0432 \u0446\u0435\u043b\u043e\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0441 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c \u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u043c. <\/p>\n<h2>\u041d\u0435 \u0437\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u0445\u0430, \u043d\u0435 \u0432\u0435\u0434\u0430\u044f \u043f\u0440\u0435\u0433\u0440\u0430\u0434<\/h2>\n<p>  \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0440\u0435\u0448\u0430\u0442\u044c \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u043d\u0430\u0431\u043e\u0440\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432:  <\/p>\n<ul>\n<li>\u041c\u044b \u0445\u043e\u0442\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u044b\u043b\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0430 \u043b\u0443\u0447\u0448\u0435 \u2014 \u043e\u0434\u0438\u043d. <\/li>\n<li>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c. <\/li>\n<li>\u041c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c API \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0434\u043b\u044f \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u042d\u0442\u043e \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0437\u0430\u0432\u0442\u0440\u0430 \u043c\u044b \u0440\u0435\u0448\u0438\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441 30 \u0434\u043e 50 \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435.<\/li>\n<li>\u041d\u0430\u043c \u0431\u044b\u043b\u0430 \u043d\u0443\u0436\u043d\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 CI \u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 CI pipeline. \u041c\u044b \u0443\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Terraform, \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f <a href=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/470543\/\"> \u0447\u0435\u0440\u0435\u0437 CI <\/a>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0448\u0430\u0433\u043e\u043c. <\/li>\n<\/ul>\n<p>  \u0412\u0441\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u043b Ansible. \u0421 \u043d\u0438\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0432\u0435\u043d\u0442\u043e\u0440\u0438. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c dynamic inventory \u0447\u0435\u0440\u0435\u0437 AWS API, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u043a \u0442\u0435\u0433\u0430\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Paralell SSH \u0438 bash-\u043f\u043e\u0440\u043d\u043e \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0432\u0441\u0435 \u043c\u0430\u0448\u0438\u043d\u044b, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u043e\u043b\u044f root \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430.<\/p>\n<p>  <b>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/b><br \/>  \u0417\u0430\u043c\u0435\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 Ansible (\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 ad-hoc \u043a\u043e\u043c\u0430\u043d\u0434\u044b):  <\/p>\n<pre><code class=\"bash\">ansible ${SERVER_GROUP} -m replace \\    -a &quot;path=${CONFIG_PATH} \\    regexp='ORIGINAL_STRING' \\    replace='NEW_STRING' \\    backup=yes&quot; <\/code><\/pre>\n<p>  \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441 bash+pssh:   <\/p>\n<pre><code class=\"bash\">DATE=$(date +&quot;%H:%M:%S_%m-%d-%Y&quot;) pssh -h ${SERVER_GROUP}_hosts_files -- \\     cp ${CONFIG_PATH}  ${CONFIG_PATH}.backup_${DATE} pssh -h ${SERVER_GROUP}_hosts_files -- \\     sed -i -e 's\/ORIGINAL_STRING\/NEW_STRING\/g' ${CONFIG_PATH} <\/code><\/pre>\n<p>  \u041d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0435 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u044b\u0439. \u0418 \u0434\u0430, sed \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043d\u043e \u0431\u044d\u043a\u0430\u043f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d.<\/p>\n<p>  <b>\u041f\u0440\u0438\u043c\u0435\u0440 2<\/b>: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Ansible (\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 ad-hoc \u043a\u043e\u043c\u0430\u043d\u0434\u044b):   <\/p>\n<pre><code class=\"bash\">ansible ${SERVER_GROUP} -m user \\    -a &quot;name=${USER_NAME} \\    groups=${GROUP_LIST} \\    shell=\/sbin\/nologin \\    append=yes \\    state=present&quot; <\/code><\/pre>\n<p>  \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e bash+pssh:   <\/p>\n<pre><code class=\"bash\">pssh -h ${SERVER_GROUP}_hosts_files -- \\     useradd -G ${GROUP_LIST} -s \/sbin\/nologin ${USER_NAME} <\/code><\/pre>\n<p>  \u041e\u043f\u044f\u0442\u044c \u043d\u0435 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e. \u041f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u043e\u0432\u044b\u0439 \u044e\u0437\u0435\u0440 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d, \u043d\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f Ansible \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0435\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c. \u042d\u0442\u0430 \u0444\u0438\u0447\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043d\u043e\u0432\u044b\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432, \u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0434\u043e\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u043f\u0440\u043e\u0449\u0435 \u0441\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u0412\u044b\u0431\u0440\u0430\u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u043b\u0430\u043a\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0432\u0435\u043d\u0442\u043e\u0440\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434. \u041d\u0435\u043f\u043b\u043e\u0445\u043e, \u0434\u0430?<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e SWE \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u043c\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0440\u043e\u043b\u0435\u0439. \u0421\u043e\u0435\u0434\u0438\u043d\u044f\u044f \u0438\u0445 \u0432 playbooks, \u043c\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439.<\/p>\n<h2>\u0420\u043e\u043b\u0438<\/h2>\n<p>  \u0412 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u043e\u043b\u0435\u0439. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 <a href=\"https:\/\/galaxy.ansible.com\/\">Ansible Galaxy<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/github.com\/geerlingguy?tab=repositories&amp;q=ansible&amp;type=&amp;language=\">GitHub<\/a>. \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u0441\u0435 \u0440\u043e\u043b\u0438 \u0441\u0430\u043c\u0438, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0435. \u041f\u043e\u0434\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0448\u0442\u0443\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0430\u0440\u0430\u043b\u0435\u043b\u044c\u043d\u043e \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u0438 stackoverflow. \u041d\u0430\u043c \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u0435\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u043f\u0443\u0441\u0442\u0438\u043b\u0438, \u0438 \u0440\u043e\u043b\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043c, \u0438 \u0442\u0430\u043a, \u043a\u0430\u043a \u043c\u044b \u0445\u043e\u0442\u0438\u043c.<\/p>\n<p>  \u0425\u043e\u0447\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u043e\u043b\u0435\u0439 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435. \u0418\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u0432\u0435\u0434\u044c \u043f\u0440\u043e \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Ansible \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0442\u0435\u0439, \u0434\u0430 \u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u0430\u0441\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u0442\u0432\u0435\u0442.<\/p>\n<p>  \u041d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e: \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 9 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u0412\u0441\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0432 \u0440\u043e\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u043e\u0432 \u0438 \u0432\u043d\u043e\u0441\u044f\u0442 \u0441\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u043e\u043b\u0435\u0439. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0440\u043e\u043b\u0435\u0439 \u0438 \u0432\u0435\u0440\u0441\u0438\u0439.<\/p>\n<p>  \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e: \u0432\u044b \u0441\u043a\u0430\u0447\u0430\u043b\u0438 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043d\u0430\u0431\u043e\u0440 \u0440\u043e\u043b\u0435\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043d\u0430 \u0438\u0445 \u0431\u0430\u0437\u0435 playbook \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u041f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u0440\u0435\u043c\u044f, \u0432\u0430\u0448 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u0432\u0438\u0434\u043e\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u0442\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0438 \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u043d\u043e\u0432\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0435 \u0443\u0437\u043b\u044b. \u041e\u043d \u0441\u043d\u043e\u0432\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0440\u043e\u043b\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0435\u0435.<\/p>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u0438 \u0440\u043e\u043b\u0438, \u0438 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b \u0432\u0430\u0448 \u043a\u043e\u043b\u043b\u0435\u0433\u0430, \u043f\u0440\u043e\u0448\u043b\u043e \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0438 \u0440\u043e\u043b\u0438 \u043c\u043e\u0433\u043b\u0438 \u043f\u0440\u0435\u0442\u0435\u0440\u043f\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0433\u043b\u0430 \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u043c\u0430\u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c, \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043b\u0438 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b, \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0440\u043e\u043b\u044f\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442. \u042d\u0442\u043e \u0433\u0440\u043e\u0437\u0438\u0442 \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u0439\u0442\u0438 \u0432 \u043d\u0435 \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0438, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0438\u0437 \u043b\u0430\u0431\u044b \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d. \u0415\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0437\u043b\u043e\u0432\u0435\u0449\u0438\u043c\u0438 \u043a\u0440\u0430\u0441\u043a\u0430\u043c\u0438 \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 (\u043a\u0430\u043a \u0438 \u0443 \u043d\u0430\u0441) \u043c\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0438, \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0440\u043e\u043b\u0438 \u0438\u0437 \u043b\u0430\u0431\u044b \u0432 \u043f\u0440\u043e\u0434. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043b\u0430\u0431\u0435 \u043e\u043d\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0430\u0449\u0435, \u0432\u0435\u0434\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0435, \u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0440\u0430\u0441\u0442\u0435\u0442.<\/p>\n<p>  \u041c\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0435\u0449\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435, \u0438 \u0440\u0435\u0448\u0438\u043b\u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0435 \u043d\u0430 \u043a\u043e\u0440\u043d\u044e. \u0411\u043b\u0430\u0433\u043e \u0443\u0436\u0435 \u0431\u044b\u043b <a href=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/470543\/\">\u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043e\u043f\u044b\u0442 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Terraform <\/a> \u0438 IaC.<\/p>\n<p>  Ansible Roles \u0438 Ansible Playbooks \u2014 \u044d\u0442\u043e \u043a\u043e\u0434, \u043f\u0443\u0441\u0442\u044c \u0438 YAML-\u043a\u043e\u0434. \u0410 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d:  <\/p>\n<ul>\n<li>\u0412\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f<\/li>\n<li>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f<\/li>\n<li>\u0412\u0435\u0441\u0442\u0438 \u0443\u0447\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/li>\n<\/ul>\n<p>  \u041f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0443\u0447\u0435\u0442\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439.<\/p>\n<h3>\u0412\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p>  \u041a\u0430\u0436\u0434\u0430\u044f \u0440\u043e\u043b\u044c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e Git. \u041c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u043e\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u0440\u0430\u0437\u0443. <b>\u041e\u0434\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430, \u043e\u0434\u043d\u0430 \u0440\u043e\u043b\u044c, \u043e\u0434\u0438\u043d \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/b>. \u0422\u0443\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u043e:<b> \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e \u043d\u0435 \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0447\u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0447\u0435\u0433\u043e \u0443\u0431\u0440\u0430\u0442\u044c<\/b>. <\/p>\n<p>  \u0414\u0430, \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0440\u043e\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442 \u043e\u0431\u0449\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0438 \u0432\u043d\u043e\u0441\u044f\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0437\u043e\u043d\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 UTC. \u041d\u043e \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b\u0435 \u043a\u043e \u0432\u0441\u0435\u043c \u043d\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c.   <\/p>\n<pre><code class=\"bash\">$ tree -L 1 ansible\/roles\/ops\/ ansible\/roles\/ops\/ \u251c\u2500\u2500 audit \u251c\u2500\u2500 awslogs \u251c\u2500\u2500 base \u251c\u2500\u2500 dnsmasq \u251c\u2500\u2500 cronjob \u251c\u2500\u2500 filebeat \u251c\u2500\u2500 sudoers \u251c\u2500\u2500 telegraf \u251c\u2500\u2500 zabbix_agent \u251c\u2500\u2500 hardening \u251c\u2500\u2500 ldap_client \u251c\u2500\u2500 mailx \u251c\u2500\u2500 ntp \u251c\u2500\u2500 osquery_rc \u251c\u2500\u2500 proxy \u251c\u2500\u2500 snmp \u251c\u2500\u2500 ssh \u251c\u2500\u2500 symantec \u2514\u2500\u2500 wazuh_agent <\/code><\/pre>\n<p>  \u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u0435\u0436\u0438\u0442 \u0432 \u0432\u0435\u0442\u043a\u0435 <b>master<\/b>. \u0415\u0441\u043b\u0438 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0435\u0442\u043a\u0443 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0438 \u0432 \u043d\u0435\u0439 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0442\u044c \u0438 \u043f\u0443\u0448\u0438\u0442\u044c. \u0421\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u0447\u0442\u043e \u043d\u0430 \u043e\u0434\u043d\u043e \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043c\u0438\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0448\u0430\u0431\u043b\u043e\u043d \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0438 \u043d\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0432 \u0440\u043e\u043b\u044c, \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0434\u0442\u0438 \u043e\u0434\u043d\u0438\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c, \u0447\u0442\u043e \u0438 \u0437\u0430\u0447\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e. \u041a\u0430\u043a \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u2014 \u043d\u043e\u043c\u0435\u0440 Jira-\u0442\u0438\u043a\u0435\u0442\u0430 \u0441 \u043a\u0440\u0430\u0442\u043a\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c.<\/p>\n<p>  \u042d\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 merge request \u0432 master, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u0433\u043e-\u0442\u043e \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u0433. \u0410\u0432\u0442\u043e\u0440 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043b\u043b\u0435\u0433\u043e\u0439 \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442 \u0440\u0435\u0432\u044c\u044e, \u0432\u043d\u043e\u0441\u044f\u0442 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0440\u0430\u0432\u043a\u0438. \u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435 \u0432\u043d\u043e\u0441\u0438\u043b\u0438\u0441\u044c \u043d\u0435 \u0435\u0434\u0438\u043d\u043e\u043b\u0438\u0447\u043d\u043e, \u0438\u043d\u0430\u0447\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442 \u0431\u0430\u0440\u0434\u0430\u043a \u0438\u0437 \u0447\u044c\u0438\u0445-\u0442\u043e \u0438\u043c\u0445\u043e. \u0415\u0449\u0435 \u043c\u044b \u0442\u0430\u043a \u0441\u0442\u0440\u0430\u0445\u0443\u0435\u043c \u043c\u0435\u043d\u0435\u0435 \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u0433, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u043c \u0438\u043c \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rt\/53\/lh\/rt53lhynfj5msame_km8jksb74w.png\" alt=\"image\"><\/p>\n<p>  \u041c\u044b \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430 \u00ab\u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u0432\u0435\u0442\u043e\u043a\u00bb \u0432 git: \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0432\u0435\u0447\u043d\u044b\u0445 develop, feature \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041e\u0434\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u2014 \u043e\u0434\u043d\u0430 \u0432\u0435\u0442\u043a\u0430.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u043e\u043b\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e, \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u0441\u0442\u0435\u0440-\u0432\u0435\u0442\u043a\u0438 \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0433\u043e\u043c \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/semver.org\/\">\u043d\u043e\u0442\u0430\u0446\u0438\u0438 SemVer<\/a>. \u041d\u043e\u043c\u0435\u0440 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0430 \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439: \u043c\u0430\u0436\u043e\u0440\u043d\u043e\u0435 \u0438\u043b\u0438 \u043c\u0438\u043d\u043e\u0440\u043d\u043e\u0435, \u043b\u043e\u043c\u0430\u044e\u0449\u0435\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u0442\u0447. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/a_\/2g\/ej\/a_2gejeay0o8c6l3ktipzemntrg.png\" alt=\"image\"><\/p>\n<p>  \u041a\u0430\u0436\u0434\u0430\u044f \u0440\u043e\u043b\u044c \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c README \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 (mandatory) \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0441\u043f\u0438\u0441\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gz\/k5\/_q\/gzk5_qvoxcqh9leauvhisypfqmm.jpeg\" alt=\"image\"><\/p>\n<p>  \u0427\u0442\u043e-\u0442\u043e \u0438\u0437 \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u043d\u043e \u043c\u043e\u0439 \u043e\u043f\u044b\u0442 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430\u043c\u0438, \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0435. <\/p>\n<h3>\u0423\u0447\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/h3>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u0438\u043c\u0435\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u043e\u043b\u0438, \u043c\u044b \u0441\u0442\u0430\u043b\u0438 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0442\u044c \u0437\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u043d\u0435\u043c \u0440\u043e\u043b\u0435\u0439 \u0438 \u0432\u0435\u0440\u0441\u0438\u0439. \u042d\u0442\u0438\u043c \u043c\u044b \u0443\u0431\u0438\u0432\u0430\u0435\u043c \u0434\u0432\u0443\u0445 \u0437\u0430\u0439\u0446\u0435\u0432: \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0438\u043d\u0436\u0435\u043d\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e, \u2014 \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u0434 \u0433\u043b\u0430\u0437\u0430\u043c\u0438. \u0410 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043c\u044b \u043e\u0431\u0435\u0440\u0435\u0433\u0430\u0435\u043c \u0441\u0435\u0431\u044f \u043e\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439. \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0410 \u0438 \u0412 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0434\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439, \u0442\u043e \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0437\u0436\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0421 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0435\u0439.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0440\u043e\u043b\u0435\u0439 \u043d\u0430 \u0441\u0432\u043e\u044e \u043c\u0430\u0448\u0438\u043d\u0443, \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043b\u0435\u0436\u0438\u0442 \u0444\u0430\u0439\u043b requirements.yml \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:  <\/p>\n<pre><code class=\"bash\">--- - src: git@SERVER_FQDN:PATH\/role_1.git   scm: git   version: '1.8.0'  - src: git@SERVER_FQDN:PATH\/role_2.git   scm: git   version: '0.9.1'  - src: git@SERVER_FQDN:PATH\/role_3.git   scm: git   version: '2.12.0'  - src: git@SERVER_FQDN:PATH\/role_4.git   scm: git   version: '1.5.2' \u2026 <\/code><\/pre>\n<p>  \u041e\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0435 ansible-galaxy, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0440\u043e\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e \u043f\u0443\u0442\u0430\u043d\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u0440\u043e\u043b\u044f\u043c\u0438, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u044d\u0442\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043b\u0435\u0436\u0438\u0442 <b>ansible.cfg<\/b>. \u041e\u043d \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442\u0435 <b>ansible-galaxy<\/b>, \u0447\u0442\u043e \u0440\u043e\u043b\u0438 \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430 \u0432 \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e roles. \u041e\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043c \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b gitignore, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0438\u0442 git \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u0430\u044f \u0440\u043e\u043b\u044c \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<h2>\u0415\u0449\u0435 \u043d\u0430 \u0448\u0430\u0433 \u0431\u043b\u0438\u0436\u0435 \u043a IaC<\/h2>\n<p>  \u0412\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u043e \u0432\u0430\u043c \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443 IaC. \u041d\u0430\u043c \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u043e, \u0432\u0435\u0434\u044c \u043c\u044b \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a Terraform. <\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 terraform-\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c \u0434\u043b\u044f Ansible \u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0440\u043e\u043b\u0435\u0439 \u0441 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438. \u041d\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438. \u0418\u0445 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p>  \u0421\u043a\u0430\u0437\u0430\u043d\u043e \u2014 \u0441\u0434\u0435\u043b\u0430\u043d\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 <b>group_vars<\/b> \u0438 <b>host_vars <\/b>(https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/intro_inventory.html#organizing-host-and-group-variables). \u0412 \u043d\u0438\u0445 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438 \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438\u043b\u0438 \u0445\u043e\u0441\u0442\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445:  <\/p>\n<pre><code class=\"bash\">$ tree -L 2 group_vars\/ group_vars\/ \u251c\u2500\u2500 all \u2502   \u2514\u2500\u2500 vars.yml \u251c\u2500\u2500 service_1 \u2502   \u2514\u2500\u2500 vars.yml \u2514\u2500\u2500 service_2     \u2514\u2500\u2500 vars.yml <\/code><\/pre>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440. \u041d\u043e \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0441 \u043b\u043e\u0433\u0438\u043d\u0430\u043c\u0438, \u043f\u0430\u0440\u043e\u043b\u044f\u043c\u0438, \u043a\u043b\u044e\u0447\u0430\u043c\u0438, \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439?<\/p>\n<p>  \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432\u0440\u043e\u0434\u0435 Hashicorp Vault \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 Ansible-vault. \u041c\u044b \u0432 \u0438\u0442\u043e\u0433\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <a href=\"https:\/\/docs.aws.amazon.com\/systems-manager\/latest\/userguide\/systems-manager-parameter-store.html\">AWS SSM parameter store<\/a>.<\/p>\n<p>  \u041e\u043d \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439, \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439, \u0435\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0442\u044c. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f, \u043d\u0443\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 AWS \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0433\u043e. \u0412 \u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0442\u0430\u043a \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u2014 \u0432 \u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0433\u0438\u0431\u043a\u0443\u044e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zx\/lv\/6_\/zxlv6_qylpsvk9qyfpvrs6dritu.png\" alt=\"image\"><\/p>\n<p>  \u0422\u0443\u0442 \u0432\u0438\u0434\u043d\u043e \u043a\u0430\u043a \u043e\u0431\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0442\u0430\u043a \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<br \/>  \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u0432 \u043e\u0431\u0449\u0435\u043c \u0444\u0430\u0439\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u2014 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0432 ssm:<\/p>\n<pre><code class=\"bash\">--- ansible_user: root ansible_password: &quot;{{ lookup('aws_ssm', '\/ec2\/root-password', region='us-east-1', decrypt=True) }}&quot; telegraf_influx_server: &quot;influxdb.fqdn&quot; telegraf_influx_server_port: &quot;8086&quot; zabbix_agent_package_name: zabbix-agent-2.2.12 zabbix_hosts:   - server_name.fqdn zabbix_host_port: &quot;10051&quot; zabbix_agent_port: &quot;10050&quot; root_password: &quot;{{ lookup('aws_ssm', '\/ec2\/root-password', region='us-east-1', decrypt=True) }}&quot; base_hostname: &quot;{{ inventory_hostname }}&quot; <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u0442 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u2014 \u0434\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0432\u0441\u0435\u0445 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e!  <\/p>\n<blockquote><p>\u0415\u0449\u0435 \u0440\u0430\u0437: \u043e\u0434\u0438\u043d \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 = \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.  <\/p><\/blockquote>\n<p>  \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f:  <\/p>\n<ul>\n<li>\u041a\u043e\u0434 Terraform \u0441 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 (\u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0438) <\/li>\n<li>\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b (tfvar- \u0444\u0430\u0439\u043b) <\/li>\n<li>\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (remote-states \u0438 outputs) <\/li>\n<li>\u041a\u043e\u0434 Ansible \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0440\u043e\u043b\u0435\u0439 \u0438 \u0432\u0435\u0440\u0441\u0438\u0439<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Ansible \u0438 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f (\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0449\u0438\u0435).<\/li>\n<\/ul>\n<h2>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 \u0445\u043e\u0441\u0442\u043e\u0432<\/h2>\n<p>  \u0412\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0441\u043a\u0430\u0436\u0435\u0442\u0435 \u0432\u044b, \u043d\u043e \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u0445\u043e\u0441\u0442\u043e\u0432 \u0432\u0435\u0441\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f? <\/p>\n<p>  \u041e\u0442\u0432\u0435\u0447\u0430\u044e: \u0432\u0435\u0441\u0442\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u0433\u0440\u0443\u043f\u043f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0438 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u043d\u043e \u044d\u0442\u043e \u0440\u0443\u0442\u0438\u043d\u0430, \u0442\u0440\u0430\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043e\u0448\u0438\u0431\u043a\u0438: \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0437\u0430\u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. <\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e inventory \u043d\u0435 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043d\u0430 \u043a\u0440\u0430\u0439\u043d\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439.<\/p>\n<p>  \u041c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 dynamic inventory \u043d\u0430 \u0431\u0430\u0437\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f AWS EC2. Ansible inventory \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u0442 lookup \u0447\u0435\u0440\u0435\u0437 AWS EC2 API, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u044b. <br \/>  \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u043a \u0442\u0435\u0433\u0430\u043c. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043b\u044e\u0431\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0432 AWS, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u0449\u0435\u0439, \u043a\u0430\u043a \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0433\u043e \u0431\u0438\u043b\u043b\u0438\u043d\u0433\u0430 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430. <br \/>  \u041e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0441\u0445\u0435\u043c\u044b \u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/470543\/\">\u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e Terraform<\/a>. \u041d\u0438\u0436\u0435 \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>  \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 EC2 \u0435\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 (\u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432) \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 (\u0430 \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0430\u0448\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u0430) \u0442\u0435\u0433\u043e\u0432. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0438\u0445 \u0434\u043b\u044f \u0431\u0438\u043b\u043b\u0438\u043d\u0433\u0430, \u043d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0433\u0438:  <\/p>\n<ul>\n<li><b>Name<\/b> \u2014 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430<\/li>\n<li><b>Team<\/b> \u2014 \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442. \u041e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0432 Dev-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u0445.<\/li>\n<li><b>Department<\/b> \u2014 \u0432 \u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0430\u043a\u043e\u0433\u043e \u0434\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u044d\u0442\u043e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 (\u0438\u0437 \u0447\u044c\u0435\u0433\u043e \u043a\u0430\u0440\u043c\u0430\u043d\u0430 \u043f\u043b\u0430\u0442\u0438\u043c): Dev, QA, Ops \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. <\/li>\n<li><b>Environment<\/b> \u2014 \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441. \u041c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435.<\/li>\n<\/ul>\n<p>  \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0433\u0438:  <\/p>\n<ul>\n<li><b>Subsystem<\/b> \u2014 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442. <\/li>\n<li><b>Type<\/b> \u2014 \u0442\u0438\u043f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430: \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<li><b>Component<\/b> \u2014 \u0441\u0430\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u0435\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043d\u043e\u0442\u0430\u0446\u0438\u0438.<\/li>\n<li><b>Termination date<\/b> \u2014 \u0434\u0430\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c. \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0438\u0442\u0441\u044f, \u0441\u0442\u0430\u0432\u0438\u043c \u00abPermanent\u00bb. \u0423 \u043d\u0430\u0441 \u0432 \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0441\u043a\u0438\u0445 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u0435\u0439\u0434\u0436\u043e\u0432\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u0445 \u0435\u0441\u0442\u044c \u0441\u0442\u0435\u0439\u0434\u0436 \u0434\u043b\u044f \u0441\u0442\u0440\u0435\u0441\u0441-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0435\u0441\u0441-\u0441\u0435\u0441\u0441\u0438\u0438. \u041c\u044b \u043d\u0435 \u0434\u0435\u0440\u0436\u0438\u043c \u044d\u0442\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u0442\u0443, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d. <\/li>\n<li><b>Pool<\/b> \u2014 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u0437\u043d\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043b\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440.<\/li>\n<\/ul>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2e\/oq\/x9\/2eoqx9ocq7xvutikzcrgn2rkbwm.png\" alt=\"image\"><\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u0448 Dynamic Inventory. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0435\u0433 \u00abEnvironment\u00bb, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0432 \u0442\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u0422\u0430\u043a \u043f\u0440\u0438 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043e\u0434\u043d\u043e \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0441\u043a\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043c\u044b \u043d\u0435 \u0437\u0430\u0446\u0435\u043f\u0438\u043c \u0434\u0440\u0443\u0433\u043e\u0435. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0433\u0438 \u2014 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: Component, Pool, Type \u0438 \u0434\u0440\u0443\u0433\u0438\u0435. \u0422\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e \u043e\u0441\u043e\u0431\u043e\u043c\u0443 \u043d\u0430\u0431\u043e\u0440\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<pre><code class=\"bash\">plugin: aws_ec2 regions:  - us-east-1 filters:  tag:Environment: ENV_NAME hostnames:  - tag:Name  - dns-name  - private-ip-address keyed_groups:  - key: tags.Component    separator: ''  - key: tags.Pool    separator: ''  - key: tags.Type    separator: '' compose:  ansible_host: private_ip_address <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 Terraform \u0442\u0435\u0433\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e. \u0423 \u043d\u0430\u0441 \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c \u043f\u043e \u0433\u0440\u0443\u043f\u043f\u0430\u043c. \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043c\u044b \u0441\u0432\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u0434\u043d\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f inventory \u043c\u044b \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b\u0438\u0441\u044c. \u041c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c <a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/plugins\/inventory\/constructed.html\">\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c constructed<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u043c\u0435\u0442\u0430-\u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u043d\u0430\u043c \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e: \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043b\u043e\u0434\u0438\u0442\u044c \u0438 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0442\u0435\u0433\u043e\u0432. \u0410 \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432 \u044d\u0442\u0438 \u043c\u0435\u0442\u0430-\u0433\u0440\u0443\u043f\u043f\u044b, \u043c\u043e\u0436\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0438 \u0447\u0430\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0447\u0442\u0435\u043d\u043e \u0438 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043e. \u0411\u043e\u043d\u0443\u0441\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 ansible-inventory, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a \u0438\u043d\u0432\u0435\u043d\u0442\u043e\u0440\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430:  <\/p>\n<pre><code class=\"bash\">ansible-inventory --graph @all:   |--@aws_ec2:   |  |--xxx-yyy-srv01   |  |--xxx-yyy-srv02   |--@component01:   |  |--xxx-yyy-srv01   |--@component02:   |  |--xxx-yyy-srv02 <\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u0441 \u043d\u0438\u043c:  <\/p>\n<pre><code class=\"bash\">ansible-inventory --graph @all:   |--@aws_ec2:   |  |--xxx-yyy-srv01   |  |--xxx-yyy-srv02   |  |--xxx-yyy-srv03   |  |--xxx-yyy-srv04   |--@subsystem_1:   |  |--@component_1:   |  |  |--xxx-yyy-srv01   |  |--@component_2:   |  |  |--xxx-yyy-srv02   |--@subsystem_1:   |  |--@component_3:   |  |  |--xxx-yyy-srv03   |  |--@component_4:   |  |  |--xxx-yyy-srv04 <\/code><\/pre>\n<h2>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>  \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u043e\u043b\u0435\u0439 \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:  <\/p>\n<ul>\n<li>\u0412\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/li>\n<li>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/li>\n<li>\u0412\u0435\u0434\u0435\u043d\u0438\u0435 \u0443\u0447\u0435\u0442\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/li>\n<\/ul>\n<p>  \u041f\u0435\u0440\u0432\u0443\u044e \u0438 \u0442\u0440\u0435\u0442\u044c\u044e \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0430 \u0432\u043e\u0442 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0441 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u2014 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u044f\u0441\u043d\u044b\u043c. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0440\u043e\u043b\u0435\u0439 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0430 \u043e\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u0442\u0430\u0434\u0438\u044e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u044d\u0442\u043e \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c SDLC (Software Development Life Cycle). <\/p>\n<p>  \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u043e\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u0412\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u043b\u0438\u0447\u043d\u043e \u044f:  <\/p>\n<ul>\n<li><b>\u041e\u0442\u043a\u0430\u0437 \u043e\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/b> \u2014 \u0441\u0430\u043c\u044b\u0439 \u0445\u0443\u0434\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0423 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0440\u043e\u043b\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043a, \u043a\u0430\u043a \u043c\u044b \u044d\u0442\u043e\u0433\u043e \u043e\u0442 \u043d\u0435\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u043c. \u0412\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0438\u043b\u0438 \u0432\u0437\u044f\u043b\u0438 \u0447\u044c\u044e-\u0442\u043e \u0440\u043e\u043b\u044c \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0435\u0435, \u043f\u043e \u043f\u0443\u0442\u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u044f \u0432\u0441\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. <\/li>\n<li><b>\u0420\u0430\u0437\u043e\u0432\u043e\u0435 \u0440\u0443\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438<\/b>. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u0432\u043d\u043e\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0440\u043e\u043b\u044c, \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442\u0435 \u0435\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438\u043b\u0438 \u0441 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. \u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0436\u0438\u0437\u043d\u044c, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u043e\u043b\u0438 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u042d\u0442\u043e \u0432\u043d\u043e\u0441\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u0438 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u043e\u043b\u0438.<\/li>\n<li><b>\u0420\u0443\u0447\u043d\u0430\u044f \u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u043e\u043b\u0438 \u043d\u0430 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c<\/b>. \u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0432\u0430\u0448\u0430 \u0440\u043e\u043b\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0438 \u043d\u0435 \u0432\u043d\u043e\u0441\u0438\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435. \u041b\u0443\u0447\u0448\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, CI, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0435\u0441\u0442.<\/li>\n<li><b>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u0438<\/b>. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u0432\u044b\u0448\u0435, \u043d\u043e \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0440\u0435\u0434\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0438\u0434\u043e\u0432 \u0438 \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0422\u0443\u0442 \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u043e.<\/li>\n<li><b>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438, \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u0438<\/b>. \u0412\u0441\u0435 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u043d\u043e \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0423\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0430\u044f \u0440\u043e\u043b\u044c \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e\u0441\u043b\u0435 \u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0412\u0434\u0440\u0443\u0433 \u0432\u044b \u043e\u043f\u0435\u0447\u0430\u0442\u0430\u043b\u0438\u0441\u044c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0437\u0430\u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432. \u042d\u0442\u043e, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u043b\u043d\u044b\u0439 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0441\u0430\u043c\u044b\u0439 \u0434\u043e\u0440\u043e\u0433\u043e\u0439.<\/li>\n<\/ul>\n<h2>\u041a\u0430\u043a \u0434\u0435\u043b\u0430\u043b\u0438 \u043c\u044b<\/h2>\n<p>  \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u043e\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0440\u043e\u0433\u043e\u043d \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0432 \u0436\u0438\u0432\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0438 \u0431\u044b\u043b\u0430 \u043d\u0430 \u043d\u0435\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0430. \u041c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u043e \u043d\u0430 \u0431\u0430\u0437\u0435 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u0412 \u043d\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0440\u0438 \u0432\u0438\u0434\u0430 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432: Amazon Linux 1, Amazon Linux 2 \u0438 Centos 7. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441 \u044d\u0442\u0438\u043c\u0438 \u0436\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438. \u041c\u044b \u0431\u0440\u0430\u043b\u0438 \u0440\u043e\u043b\u044c, \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u043b\u0438 \u0435\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u041e\u0421 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438 \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u0447\u0442\u043e \u043e\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0430\u0441\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438 \u043d\u0435 \u0443\u043f\u0430\u043b\u0430. \u041f\u0440\u043e\u0433\u043e\u043d\u044f\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0430 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u0430 \u0438 \u043d\u0435 \u0432\u043d\u043e\u0441\u0438\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u042d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438 \u0434\u0435\u0448\u0435\u0432\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0414\u0430, \u043e\u043d\u043e \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0443\u0436\u0435 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u043e\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 \u0438 \u0441\u043c\u043e\u0436\u0435\u0442 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u0431\u0435\u0437 \u0440\u0438\u0441\u043a\u0430 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yc\/0x\/yv\/yc0xyvximvkvl6bpnp25kzbgvxm.png\" alt=\"image\"><\/p>\n<p>  \u041f\u0440\u043e\u0433\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u0438 \u0442\u0435\u0441\u0442\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430\u043c \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c. \u041c\u044b \u0434\u0430\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c CI \u0434\u043b\u044f \u0432\u044b\u043a\u0430\u0442\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 Terraform \u0438 \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440. \u041d\u043e \u043a\u0430\u043a \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0440\u043e\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0434\u0435\u043b\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c, \u0430 \u043d\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c?<\/p>\n<p>  \u041d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442, \u0443\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 GitLab, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 pipeline, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0443\u044e \u0440\u043e\u043b\u044c. \u041a\u043e\u0433\u0434\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0445\u043e\u0447\u0435\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0440\u043e\u043b\u044c, \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0442\u043a\u0443 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434, \u0434\u0435\u043b\u0430\u0435\u0442 commit \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 push \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. \u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f pipeline, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0442\u0440\u0435\u0445 \u044d\u0442\u0430\u043f\u043e\u0432:<\/p>\n<ul>\n<li>\u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u0434\u0435\u0442 lint (\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430) \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 best practices, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439.<\/li>\n<li>\u0412\u0442\u043e\u0440\u043e\u0439 \u0448\u0430\u0433 \u2014 \u0442\u0435\u0441\u0442 \u043d\u0430 \u0431\u0435\u0437\u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u043e\u043b\u0438 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435.<\/li>\n<li>\u0422\u0440\u0435\u0442\u0438\u0439 \u0448\u0430\u0433 \u2014 \u043f\u0440\u043e\u0433\u043e\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430 \u0447\u0438\u0441\u0442\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0430 \u0430\u043f\u0433\u0440\u0435\u0439\u0434 \u0438\u043b\u0438 \u0434\u0430\u0443\u043d\u0433\u0440\u0435\u0439\u0434, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u0435\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/li>\n<\/ul>\n<p>   <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/an\/r0\/wo\/anr0wo6pgi-5-1hqzcyxdonocmq.png\" alt=\"image\"><\/p>\n<p>  \u0421\u043a\u0430\u0436\u0435\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0440\u043e\u043b\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u0433\u0435\u043d\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u041e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u043c\u0435\u0442\u044c, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0442\u0440\u0438 \u0432\u0435\u0449\u0438:   <\/p>\n<ul>\n<li>\u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u0431\u0435\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/li>\n<li>\u041f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c<\/li>\n<li>\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0438 \u043f\u043e\u0434\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u00ab\u0445\u0432\u043e\u0441\u0442\u044b\u00bb<\/li>\n<\/ul>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f CI \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432 \u043e\u0434\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u0440\u043e\u043b\u0438 \u043f\u043e \u0432\u0441\u0435\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c, \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u044f \u0440\u0443\u0447\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. <\/p>\n<p>  \u041b\u0438\u043d\u0442\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b, \u043f\u043e\u0442\u043e\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u043e\u043d \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432. \u041e\u043d\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442, \u0447\u0442\u043e \u0440\u043e\u043b\u044c \u043d\u0430\u043a\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c. <\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0442\u0438\u0439 \u0448\u0430\u0433 \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u041e\u043d\u0438 \u0442\u043e\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u043e\u043c \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c. \u042d\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442, \u0438 \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0432 \u043f\u043e\u0447\u0442\u0443 \u043d\u0435 \u0443\u043f\u0430\u043b\u043e, \u0437\u043d\u0430\u0447\u0438\u0442, \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0443\u043f\u0430\u043b\u043e \u2014 \u0441\u0430\u0434\u0438\u0441\u044c, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0439\u0441\u044f, \u0438 \u043d\u0435 \u0432\u043b\u0438\u0432\u0430\u0439 \u044d\u0442\u043e \u0432 \u043c\u0430\u0441\u0442\u0435\u0440. \u0415\u0441\u043b\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u2014 \u043f\u043e\u0437\u043e\u0432\u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0443, \u0440\u0430\u0437\u0431\u0435\u0440\u0438\u0442\u0435\u0441\u044c \u0432\u0434\u0432\u043e\u0435\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bd\/nf\/vv\/bdnfvvnngxslo-gg5u-d8na289y.png\" alt=\"image\"><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0440\u043e\u043b\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0430, \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0438\u043d\u0442\u0441\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u041c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <a href=\"https:\/\/molecule.readthedocs.io\/en\/latest\/\">Molecule<\/a>.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/da\/4w\/ky\/da4wky55qs071sgw0nkgvwg2l9e.png\" alt=\"image\"><br \/>  \u0412 Molecule \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u044b \u043d\u0435 \u0440\u0435\u0448\u0430\u043b\u0438 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0441\u0432\u0435\u0440\u0445\u0437\u0430\u0434\u0430\u0447, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0440\u043e\u043b\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432. \u0422\u0435\u0441\u0442\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435, \u043e\u043d\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <\/p>\n<pre><code class=\"bash\"># Ensure SELinux is not disabled in bootloader configuration def test_selinux_is_not_disabled_in_bootloader(host):     f = host.file('\/boot\/grub2\/grub.cfg')     assert not f.contains(&quot;selinux=0&quot;)     assert not f.contains(&quot;enforcing=0&quot;) <\/code><\/pre>\n<p>  \u0422\u0435\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u0438 SELinux.   <\/p>\n<pre><code class=\"bash\"># Ensure telnet server is not enabled  def test_service_telnet(host):     s = host.service('telnet')     assert not s.is_enabled  # Ensure tftp server is not enabled  def test_service_tftp(host):     s = host.service('tftp')     assert not s.is_enabled <\/code><\/pre>\n<p>  \u0422\u0435\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441.  <\/p>\n<pre><code class=\"bash\"># Ensure IP forwarding is disabled (Scored) def test_ip_forwarding_is_disabled(host):     v1 = host.sysctl('net.ipv4.ip_forward')     assert v1 == 0      v2 = host.sysctl('net.ipv6.conf.all.forwarding')     assert v2 == 0 <\/code><\/pre>\n<p>  \u0422\u0435\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044f\u0434\u0440\u0430 \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d.<\/p>\n<p>  \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0434\u043b\u044f Molecule \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f. \u041e\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 EC2 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u2014 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u043d\u0438\u0445 \u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043b\u043e \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0438 \u043d\u0430\u0448\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u043b\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 CI \u043d\u0435 \u043e\u0442\u043d\u044f\u043b\u0430 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432: \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. <\/p>\n<h2>\u0421\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 SWE<\/h2>\n<p>  \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 SWE \u0432 \u0441\u0432\u043e\u0438 \u0440\u0443\u043a\u0438. \u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: Ansible \u0434\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0437\u0430, Molecule \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432, GitLab CI \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u043a\u0430\u0442\u043a\u0438. \u0423 \u043d\u0430\u0441 \u043d\u0435 \u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432, \u0438 \u043c\u044b \u0432\u0437\u044f\u043b\u0438 <a href=\"https:\/\/www.packer.io\/\">Packer<\/a>.<\/p>\n<p>  \u041d\u0435 \u0431\u0443\u0434\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435, \u0438 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u044b\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>  \u041c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 SWE\/AMI \u0432 \u0442\u0440\u0438 \u044d\u0442\u0430\u043f\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bh\/53\/jd\/bh53jdio1ms7sdsj4a95xlptntw.png\" alt=\"image\"><\/p>\n<p>  \u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 AMI. \u041c\u044b \u0432\u0437\u044f\u043b\u0438 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u043e\u0434\u0438\u043d \u0438\u0437 \u00ab\u0447\u0438\u0441\u0442\u044b\u0445\u00bb AMI \u043e\u0442 Amazon, \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u0441\u0435\u0432\u0434\u043e-\u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/www.packer.io\/docs\/builders\/amazon-ebssurrogate.html\">\u00abamazon-ebssurrogate\u00bb<\/a>. \u041f\u043e\u0442\u043e\u043c \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u043a \u043d\u0435\u043c\u0443 \u0442\u043e\u043c\u0430, \u0448\u0438\u0444\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 AWS, \u0440\u0430\u0437\u0431\u0438\u043b\u0438 \u0438\u0445 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043d\u0430 \u043d\u0438\u0445 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 AMI (Amazon Linux 2).<\/p>\n<p>  \u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0448\u0430\u0433\u0435 Packer \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0443\u0436\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0430\u0448\u0435\u0439 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 AMI, \u0441\u043a\u0430\u0447\u0430\u043b \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0440\u043e\u043b\u0435\u0439 Ansible \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0442\u0435\u0433\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 \u0441\u0430\u043c\u043e\u0439 \u041e\u0421. \u041d\u0430 \u044d\u0442\u043e\u043c \u0436\u0435 \u0448\u0430\u0433\u0435 \u0431\u044b\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d cloud init, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e AMI. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u0440\u0430\u0431\u043e\u0442\u0435 AMI.<\/p>\n<p>  \u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u044d\u0442\u0430\u043f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e AMI \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 \u043d\u0435\u0433\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u00ab\u0432\u0448\u0438\u0442\u044c\u00bb runtime \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0432\u0438\u0436\u043e\u043a \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u0432\u0437\u044f\u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u0443\u044e AMI \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0435\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Molecule. \u041e\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0430 EC2 Instance, \u0434\u043e\u0436\u0434\u0430\u043b\u0430\u0441\u044c \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043f\u0440\u043e\u0433\u043e\u043d\u0430\u043b\u0430 \u043f\u043e \u043d\u0435\u043c\u0443 \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u0441\u0442\u043e\u0432.<br \/>  \u0418 \u0442\u0443\u0442 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0431\u043e\u043d\u0443\u0441.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0440\u0430\u043d\u044c\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 AMI-SWE, Security \u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u043c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430. \u0422\u0435\u043f\u0435\u0440\u044c, \u0438\u043c\u0435\u044f \u0441\u0432\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043c\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0412 \u0447\u0438\u0441\u043b\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 Security \u0432\u0445\u043e\u0434\u0438\u0442 <a href=\"https:\/\/www.cisecurity.org\/cis-benchmarks\/\">CIS benchmark<\/a>. \u0412 \u043d\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0438 \u0434\u0430\u0436\u0435 \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0442\u0447\u0435\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ii\/7s\/bt\/ii7sbteotlfd3l4wvd_lrietmva.png\" alt=\"image\"><\/p>\n<p>  \u041c\u044b \u0432\u0437\u044f\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0443 Security. \u0422\u0435\u0441\u0442\u044b \u0431\u044b\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 bash-\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445, \u0438 \u043c\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b\u0438 \u043d\u0430 Molecule. \u041c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f Security, \u0433\u0434\u0435-\u0442\u043e \u0434\u043e\u043a\u0440\u0443\u0442\u0438\u0432 \u043d\u0430\u0448\u0438 \u0440\u043e\u043b\u0438, \u0433\u0434\u0435-\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u043e\u043b\u044c \u0447\u0438\u0441\u0442\u043e \u043f\u043e\u0434 hardening. \u0412\u0441\u0435 \u0442\u0435\u0441\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 Molecule \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u043e\u0442\u0447\u0435\u0442\u0430 \u0432 \u0447\u0430\u0442 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 Security. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0441\u043a \u0438\u0445 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0430\u0443\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442 \u043e\u0442\u0447\u0435\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6-\/jq\/pv\/6-jqpvibapsczjw-ba6rqlqfgdg.png\" alt=\"image\"><\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u044d\u0442\u0430\u043f\u0430, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0438\u0437 \u0440\u044f\u0434\u0430 \u0448\u0430\u0433\u043e\u0432:   <\/p>\n<ol>\n<li>\u0420\u0430\u0431\u043e\u0442\u0430 Packer \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Ansible, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 AMI <\/li>\n<li>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Molecule \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0432 \u0447\u0430\u0442\u0438\u043a \u0441 Security<\/li>\n<\/ol>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e Security \u0438\u043b\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442, \u0447\u0442\u043e pass-rate \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439, \u0438\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0430 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u043b \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435\u0434\u0435\u043b\u044e-\u043f\u043e\u043b\u0442\u043e\u0440\u044b, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435 \u043e\u0442\u0447\u0435\u0442\u0430).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gy\/pc\/qa\/gypcqa5ie52y2znziahjqsi9tus.png\" alt=\"image\"><\/p>\n<h2>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Terraform \u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u043c CI<\/h2>\n<p>  \u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u044f\u0437\u043a\u0443 Terraform + Gitlab CI. \u041a\u0430\u043a \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u2014 <a href=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/470543\/\">\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432 \u043c\u043e\u0435\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<p>  \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043a\u043e\u0434 Terraform \u0441 \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c (\u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u0444\u0430\u0439\u043b tfstate, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432 S3) \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f CI. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u0441\u0432\u043e\u0439 \u0444\u0430\u0439\u043b, \u0430 \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0445 \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e.<\/p>\n<p>  \u0420\u0430\u043d\u044c\u0448\u0435 \u043d\u0430\u0448\u0438 Ansible-\u0440\u043e\u043b\u0438 \u0436\u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \u0441\u0432\u044f\u0437\u0438 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b Requirements. \u041c\u0435\u043d\u044f\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0432\u0437\u044f\u0442\u044c \u044d\u0442\u0438 \u0440\u043e\u043b\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0445. \u0421\u043f\u0438\u0441\u043e\u043a \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u044b\u043b\u0438 \u0435\u043c\u0443 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b. \u041d\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0431\u044b\u043b\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0435 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 SWE, \u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0432\u043e\u0439 requirements.yml, \u0434\u0430 \u0435\u0449\u0435 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0434\u043b\u044f \u0447\u0435\u0433\u043e. \u0423\u0436\u0430\u0441!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sh\/3s\/ye\/sh3syen17wrlne3ppmxda2j0r9e.png\" alt=\"image\"><\/p>\n<p>  <b>\u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0445\u0432\u0430\u0442\u0438\u0442 \u044d\u0442\u043e \u0442\u0435\u0440\u043f\u0435\u0442\u044c!<\/b><\/p>\n<p>  \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u044d\u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 CI \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f SWE. \u0412\u043e\u0442 \u043e\u043d \u2014 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u0441\u0442\u0438\u043d\u044b. \u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0438 \u0440\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 SWE, \u0435\u0441\u043b\u0438 \u043e\u043d \u0438 \u0442\u0430\u043a \u043b\u0435\u0436\u0438\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u044d\u0442\u043e\u0433\u043e SWE. \u0415\u0449\u0435 \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 playbook, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0449\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u041f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0440\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439 \u043e\u0434\u0438\u043d \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 source of truth!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bo\/v1\/na\/bov1nau33jbvsaszqrttlvr13k8.png\" alt=\"image\"><\/p>\n<p>  \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c <a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Git-Tools-Submodules\">Git submodules<\/a>, \u0447\u0442\u043e\u0431\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0432\u044f\u0437\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0435 \u0441\u0442\u0440\u043e\u0433\u043e \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0438 \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043d\u043e \u043d\u0430\u0441 \u043e\u043d\u043e \u043f\u043e\u043a\u0430 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442. <\/p>\n<p>  \u0421\u0435\u0439\u0447\u0430\u0441 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0443 \u043d\u0430\u0441, \u0430 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u0438\u0434\u0435\u0438 \u043b\u0443\u0447\u0448\u0435 \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fo\/il\/cw\/foilcwlk62pca6yfdam5zn2rrd0.png\" alt=\"image\"><\/p>\n<p>  \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 SWE, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u044d\u0442\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0444\u0430\u0439\u043b\u0430 gitmodules \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">[submodule &quot;legacy-swe&quot;]     path = legacy-swe     url = https:\/\/git.FQDN\/PATH\/legacy-swe.git [submodule &quot;common&quot;]     path = common     url = https:\/\/git.FQDN\/PATH\/common-swe.git <\/code><\/pre>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u0445 \u0441\u0430\u043c\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0430: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ix\/zz\/px\/ixzzpxn-cadmod3hshtbiq7juio.png\" alt=\"image\"><\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u0438\u0437 \u0432\u0441\u0435\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438\u0441\u0442\u0438\u043d\u044b, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0435\u0449\u0435 \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e SWE-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. \u0421\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0432 \u0435\u0435 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442. \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043c\u044b \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0432\u043d\u0435\u0441\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0448 SWE-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0441\u043b\u043e\u043c\u0430\u0435\u0442 \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 \u00ab\u043f\u043e\u0435\u0434\u0435\u0442\u00bb.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, gut submodules \u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c. \u0421\u0445\u043e\u0434\u0443 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a \u043a\u0430\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043b\u0438\u0441\u044c, \u0438 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0436\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430.<\/p>\n<p>  \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e SWE, \u0441\u043d\u0430\u0431\u0436\u0435\u043d\u044b \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c CHANGE.log. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0443\u0431\u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432: \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f. \u0422\u0430\u043a \u043c\u044b \u043f\u043e\u0439\u043c\u0435\u043c, \u043d\u0435\u0442 \u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0447\u0442\u043e-\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 SWE \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c Ansible-\u0440\u043e\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0438\u043b\u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u0435\u0444\u043e\u043b\u0442\u044b. \u041d\u0430\u0441 \u0441\u043f\u0430\u0441\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0439 Change.log. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/0t\/r1\/_g\/0tr1_go53szvjgajmfliw__-jlm.png\" alt=\"image\"><\/p>\n<p>  \u041a\u0442\u043e \u0432\u0435\u0434\u0435\u0442 \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f? \u041d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u043c\u0435\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442:  <\/p>\n<blockquote><p>Q: Who should add the description of changes to the CHANGELOG file?<br \/>  A: The person who is preparing the merge request. Besides the planned changes, the CHANGELOG file should be updated as well.  <\/p><\/blockquote>\n<p>  \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 SWE \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 CI, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f (<s>\u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0443\u0433\u0430\u044e\u0449\u0430\u044f<\/s>) \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ui\/kw\/pz\/uikwpzu4zdzexwl4j3fxqi_pkzg.png\" alt=\"image\"><\/p>\n<p>  \u041d\u043e \u0435\u0441\u043b\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0442\u0443\u0442 \u043d\u0435\u0442. <\/p>\n<p>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443 \u043d\u0430\u0441 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0430\u0441\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0445\u0435\u043c\u044b, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c YML-\u0444\u0430\u0439\u043b\u043e\u0432, git submodules \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f Ansible \u2014 \u044d\u0442\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 Terraform \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044f\u0440\u043a\u043e-\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u2014 \u044d\u0442\u043e Ansible-\u0440\u043e\u043b\u0438, \u043a\u0430\u0436\u0434\u0430\u044f \u0432 \u0441\u0432\u043e\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0433\u043e\u043b\u0443\u0431\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u2014 \u044d\u0442\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f SWE, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u043e\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 requirements-\u0444\u0430\u0439\u043b.<\/p>\n<p>  \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u043a\u0438 \u0438\u0437 git submodules \u0441 SWE-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 inventory, Ansible, \u0441\u0443\u0431\u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u043f\u0430\u043f\u043a\u0438 group vars. \u0412 \u043d\u0435\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u043a\u0438 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0442\u0435\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u043a\u043e\u043c\u0443 \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b.<\/p>\n<p>  \u0417\u0430 \u0441\u0447\u0435\u0442 \u0441\u0432\u044f\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u0432\u0435\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 git submodules \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u00ab\u043f\u0440\u0438\u0437\u0440\u0430\u0447\u043d\u044b\u0435\u00bb \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 requirements \u0438 playbook \u2014 \u043a\u0430\u0436\u0434\u0430\u044f \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e SWE, \u0440\u0430\u0432\u043d\u043e \u043a\u0430\u043a \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u043e\u043b\u0435\u0439.<br \/>  \u041a\u043e\u0433\u0434\u0430 Terraform \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0432 CI \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u043b\u044f SWE \u0441\u0443\u0431\u043c\u043e\u0434\u0443\u043b\u044c \u0441\u043a\u0430\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0440\u043e\u043b\u0438 \u0438 \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0438.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Terraform, \u043e\u043d \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 CI:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qk\/oq\/en\/qkoqenx1uqvqvb10wgodjfmm3by.png\" alt=\"image\"><\/p>\n<p>  CI \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442 Terraform-\u043a\u043e\u0434, \u0441\u0442\u0440\u043e\u0438\u0442 \u043f\u043b\u0430\u043d \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u042d\u0442\u043e\u0442 \u0448\u0430\u0433 \u0443 \u043d\u0430\u0441 \u0440\u0443\u0447\u043d\u043e\u0439, \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043f\u043b\u0430\u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0442\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u043d\u043e\u043f\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043f\u043e\u0435\u0445\u0430\u043b\u043e \u0434\u0430\u043b\u044c\u0448\u0435. <\/p>\n<p>  \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u043f\u0440\u043e\u0439\u0434\u0435\u043d, \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u0448\u0430\u0433\u043e\u0432, \u0433\u0434\u0435 Ansible \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0432\u043d\u043e\u0432\u044c \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043a \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c\u0443 \u0432\u0438\u0434\u0443. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438\u0437 \u0440\u0443\u0447\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c. \u0412\u0441\u0435.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <\/h2>\n<p>  \u041f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u043d\u0430\u043c \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439. \u0421\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043b \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043b\u044e\u0431\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d, \u0438 \u0447\u0435\u043c \u043e\u043d \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043d\u0435\u043c\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441\u0438\u043b.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/505922\/\"> https:\/\/habr.com\/ru\/company\/dins\/blog\/505922\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/505922\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6-\/xn\/_4\/6-xn_4d3nh2s_dbvt67229lwodc.png\" alt=\"image\"><\/p>\n<p>  \u0423 \u0432\u0441\u0435\u0445 \u0435\u0441\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0438 \u0432\u0441\u0435\u0445 \u043e\u043d\u0430 \u0440\u0430\u0437\u043d\u0430\u044f: \u043a\u043e\u043c\u0443-\u0442\u043e \u043c\u0438\u043b\u0435\u0439 \u0440\u043e\u0434\u043d\u043e\u0439 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440, \u043a\u0442\u043e-\u0442\u043e \u0436\u0438\u0432\u0435\u0442 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 \u0438\u043b\u0438 multi-cloud. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u2014 \u044d\u0442\u043e 1500+ \u0445\u043e\u0441\u0442\u043e\u0432 \u043d\u0430 \u043f\u043e\u043b\u0443\u0441\u043e\u0442\u043d\u0438 \u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0443 VPC, \u0430 \u0442\u0435 \u2014 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c AWS-\u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430: \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u0435\u0442\u0438\u043f\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, Legacy \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438, \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. <\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0435\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Ansible, Molecule, Docker, Gitlab CI \u0438 Packer.   <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-305111","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/305111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=305111"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/305111\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=305111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=305111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=305111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}