{"id":474212,"date":"2025-09-08T15:02:07","date_gmt":"2025-09-08T15:02:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=474212"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=474212","title":{"rendered":"<span>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 Terraform registry network mirror<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0414\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u043f\u044f\u0442\u043d\u0438\u0447\u043d\u044b\u043c \u0432\u0435\u0447\u0435\u0440\u043e\u043c, \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044b\u043b\u043e \u043d\u0435\u0447\u0435\u0433\u043e.<\/p>\n<p>\u041c\u0435\u043d\u044f \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u0441\u0435\u0449\u0430\u043b\u0430 \u0438\u0434\u0435\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0444\u0442 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 terraform registry mirror, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u0437\u0430\u043f\u0430\u0434\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u043c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 &#171;\u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439&#187; \u0441\u0442\u0440\u0430\u043d\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u043d\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c. \u0412\u0438\u0434\u0438\u043c\u043e, opensource \u044d\u0442\u043e \u043a\u043e\u0433\u043e \u043d\u0430\u0434\u043e opensource.<\/p>\n<p>\u041d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u0433\u0434\u0435-\u0442\u043e \u0433\u043e\u0434 \u0438\u043b\u0438 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u043d\u0430\u0437\u0430\u0434 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0435\u0439, \u043a\u043e\u0433\u0434\u0430 \u0437\u0435\u0440\u043a\u0430\u043b\u043e \u044f\u043d\u0434\u0435\u043a\u0441\u0430 (<a href=\"https:\/\/terraform-mirror.yandexcloud.net\/\" rel=\"noopener noreferrer nofollow\">https:\/\/terraform-mirror.yandexcloud.net\/<\/a>) \u0431\u044b\u043b\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/straubt1\/terraform-network-mirror\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/straubt1\/terraform-network-mirror<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438, \u0438 \u0445\u043e\u0441\u0442\u0438\u0442\u044c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 ObjectStorage yandexcloud.<\/p>\n<p>\u041d\u043e \u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439:<br \/>&#8212; \u041d\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043f\u043e \u0432\u0435\u0440\u0441\u0438\u044f\u043c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e update \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0433\u0440\u0435\u0431\u0430\u0435\u0442 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043a-\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a.<br \/>&#8212; \u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c vpn \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<br \/>&#8212; \u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0451 \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430\u043a\u0430\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e: \u0441\u0432\u044f\u0437\u044c \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c vpn, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0442.\u0434.<\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u043b\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/news\/941500\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/news\/941500\/<\/a> \u043f\u0440\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 zed \u0418\u0418 \u0438 \u0442\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f \u043f\u043e\u0441\u0435\u0442\u0438\u043b\u043e \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 pet-\u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u043e \u0442\u043e\u043c &#171;\u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0418\u0418 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u0431\u0435\u0437 \u0437\u043d\u0430\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430&#187; \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u0442\u0430\u043a\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 \u043f\u0440\u0443\u0434 \u043f\u0440\u0443\u0434\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f, \u043a\u0430\u043a \u043d\u0435 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u0430 \u043a\u0430\u043a DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0439 \u0442\u0443\u043b\u0437\u0443 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u044f \u0443\u0436\u0435 \u0431\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u0441 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a, \u0432\u0438\u0434\u0435\u043e \u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u0438 \u0434\u0435\u0431\u0430\u0433\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u043c\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043b \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0442\u0435\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0435: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0435\u0433\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 12-factor, go best practice \u0438 \u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435.<\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043c\u0435\u043d\u044f \u0443\u0434\u0438\u0432\u0438\u043b\u043e, \u044d\u0442\u043e \u0442\u043e, \u043a\u0430\u043a \u0418\u0418 \u0432 zed \u043d\u0430\u0447\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u0434, \u0437\u0430\u0442\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432, \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c, \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043a\u0443\u0447\u0443 \u043e\u0448\u0438\u0431\u043e\u043a, \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043b, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b, \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u0442\u0435\u0441\u0442\u044b, \u0441\u043d\u043e\u0432\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0434\u043e\u0431\u0438\u043b \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f!<\/p>\n<p>\u041d\u041e! \u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0430\u043a, \u043a\u0430\u043a \u044f \u043e\u0436\u0438\u0434\u0430\u043b. \u0412 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u044f \u0443\u043a\u0430\u0437\u0430\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0437\u0435\u0440\u043a\u0430\u043b\u0430, \u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u043f\u043e \u043b\u043e\u0433\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e network mirror.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0431\u044b\u043b\u0430 \u0447\u0435\u0440\u0435\u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043e\u043a \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0435\u0431\u0430\u0433\u0430. \u0418\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 deadlock \u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0445\u0435\u0448\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0421 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c deadlock \u043f\u043e\u043c\u043e\u0433 delve \u0438 \u0433\u0443\u0433\u043b\u0435\u043d\u0438\u0435. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435. \u0418 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f, \u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0418\u0418, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u043c\u043e\u0433 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0435\u0451 \u043d\u0435 \u0441\u043c\u043e\u0433.<\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 &#8212; \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 h1 \u0445\u0435\u0448\u0430. \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0418\u0418 \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c SHA256 \u0430\u0440\u0445\u0438\u0432\u0430 \u0438 \u044d\u043d\u043a\u043e\u0434\u043e\u043c \u0432 base64 \u0431\u044b\u043b \u043d\u0435\u0432\u0435\u0440\u0435\u043d. \u0412 \u0433\u0443\u0433\u043b\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e terraform \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0445\u0435\u0448 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u0442\u043e\u0436\u0435 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c. \u0411\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043d\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043d\u044b. \u041d\u043e, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0443\u0442\u0440\u043e \u0432\u0435\u0447\u0435\u0440\u0430 \u043c\u0443\u0434\u0440\u0435\u043d\u0435\u0435, \u043d\u0430 \u0443\u0442\u0440\u043e \u0441\u0443\u0431\u0431\u043e\u0442\u044b \u043c\u0435\u043d\u044f \u043f\u043e\u0441\u0435\u0442\u0438\u043b\u0430 \u043c\u044b\u0441\u043b\u044c \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0431\u0438\u043d\u0430\u0440\u044f terraform. \u041a\u0430\u043a\u043e\u0432\u043e \u0436\u0435 \u0431\u044b\u043b\u043e \u043c\u043e\u0435 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0445\u0435\u0448\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f &#171;golang.org\/x\/mod\/sumdb\/dirhash&#187; \u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u043e\u0439:<br \/><a href=\"https:\/\/github.com\/hashicorp\/terraform\/blob\/main\/internal\/getproviders\/hash.go#L296\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/hashicorp\/terraform\/blob\/main\/internal\/getproviders\/hash.go#L296<\/a><\/p>\n<pre><code class=\"go\">s, err := dirhash.HashZip(archivePath, dirhash.Hash1)<\/code><\/pre>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043b\u0438\u043c\u0438\u0442 \u043d\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0442\u044b \u0432 zed \u0431\u044b\u043b \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d, \u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043a \u0440\u0430\u0431\u043e\u0442\u0435 copilot \u043e\u0442 github, \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u0432\u043e\u0438 \u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u044b\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d.<\/p>\n<p>\u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <a href=\"https:\/\/github.com\/kashtan404\/tf-mirror\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/kashtan404\/tf-mirror<\/a><\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<br \/>&#8212; \u0415\u0434\u0438\u043d\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430: \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 http \u0441\u0435\u0440\u0432\u0435\u0440<br \/>&#8212; \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c, \u0432\u0435\u0440\u0441\u0438\u044f\u043c, \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u043d\u0430\u0440\u0435\u0439 (packer, terraform \u0438 \u0442.\u0434.)<br \/>&#8212; \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u0442\u044b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0431\u0438\u043d\u0430\u0440\u0435\u0439<br \/>&#8212; \u0414\u043b\u044f http \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 TLS<br \/>&#8212; \u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 http\/https\/socks5 \u043f\u0440\u043e\u043a\u0441\u0438, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430\u0445<br \/>&#8212; \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430, \u0442\u0430\u043a \u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0434\u043e\u043a\u0435\u0440 \u043e\u0431\u0440\u0430\u0437\u0430, \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u043a\u0443\u0431\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 helm<\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438:<\/p>\n<pre><code>\/data\/   \u251c\u2500\u2500 registry.terraform.io   \u2502   \u2514\u2500\u2500 hashicorp\/   \u2502       \u251c\u2500\u2500 aws\/   \u2502       \u2502   \u2514\u2500\u2500 linux_amd64.zip   \u2502       |   \u2514\u2500\u2500 index.json   \u2502       |   \u2514\u2500\u2500 5.0.0.json   \u2502       \u2514\u2500\u2500 helm\/   \u2502           \u2514\u2500\u2500 ...   \u251c\u2500\u2500 terraform\/   \u2502   \u2514\u2500\u2500 terraform_1.6.0_linux_amd64.zip   \u2514\u2500\u2500 .tf-mirror-metadata.json<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u043b\u044f .terraformrc \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433<\/p>\n<pre><code>provider_installation {   network_mirror {     url = \"https:\/\/tf-mirror.example.com\/\"     include = [\"registry.terraform.io\/*\/*\"]   }   direct {     exclude = [\"registry.terraform.io\/*\/*\"]   } }<\/code><\/pre>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430:<\/p>\n<ol>\n<li>\n<p>\u0421\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0440\u0443\u0430\u0446\u0438\u044e<\/p>\n<\/li>\n<li>\n<p>\u0427\u0438\u0442\u0430\u0435\u0442 \u043c\u0435\u0442\u0430\u0434\u0430\u0442\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0434\u0451\u0440\u0433\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c registry, \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0432\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0435\u0440\u0441\u0438\u0439 \u0432 \u043b\u043e\u0433<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0435\u0441\u0442\u044c \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u0442\u0435, \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438; \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0435\u0441\u0442\u044c \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u0442\u0435, \u043d\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043d\u0435\u0442, \u0441\u0442\u0430\u0432\u0438\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u0434\u043b\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e)<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043f.4 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d, \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0432 \u043b\u043e\u0433 \u043e\u0431 \u044d\u0442\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 index.json \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0438 &lt;version&gt;.json<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443: downloaded, failed, \u043e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044f \u0442\u0435, \u0447\u0442\u043e \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442 \u043f.2-\u043f.9<\/p>\n<\/li>\n<\/ol>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<ol>\n<li>\n<p>\u0421\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438<\/p>\n<\/li>\n<li>\n<p>\u0418\u043c\u0435\u0435\u0442 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b:<\/p>\n<ol>\n<li>\n<p>\/health &#8212; \u0434\u043b\u044f \u0445\u0435\u043b\u0441\u0447\u0435\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\/version &#8212; \u0432\u044b\u0432\u043e\u0434 \u0432\u0435\u0440\u0441\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\/metrics &#8212; \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 prometheus<\/p>\n<\/li>\n<li>\n<p>\/ &#8212; \u043e\u0442\u0434\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u043a\u0443. \u0412 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0433\u0443\u043b\u044f\u0442\u044c \u043f\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430:<\/p>\n<ul>\n<li>\n<p>&#8212;proxy &#8212; \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 http\/https\/socks5 \u043f\u0440\u043e\u043a\u0441\u0438 <\/p>\n<\/li>\n<li>\n<p>&#8212;check-period &#8212; \u043f\u0435\u0440\u0438\u043e\u0434, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>&#8212;provider-filter &#8212; \u0444\u0438\u043b\u044c\u0442\u0440 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 (comma separated string) \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b (\u043f\u043e\u043b\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 &#171;namespace\/name&gt;version&#187;):<\/p>\n<ul>\n<li>\n<p>&#171;hashicorp\/aws&#187; &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0432\u0441\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>&#171;hashicorp\/aws&gt;1.0.0&#187; &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 &gt;= \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>&#171;hashicorp\/aws,hashicorp\/helm&#187; &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0432\u0441\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c: &#171;hashicorp\/aws&gt;1.0.0,hashicorp\/helm,hashicorp\/null&gt;2.1.0&#187;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>&#8212;platform-filter &#8212; \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c (comma separated string; \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0438 \u0434\u043b\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432):<\/p>\n<ul>\n<li>\n<p>&#171;linux_amd64,darwin_arm64&#187; &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>&#8212;max-attempts  &#8212; \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>&#8212;download-timeout &#8212; \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>&#8212;download-binaries &#8212; \u0444\u0438\u043b\u044c\u0442\u0440 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0430\u043d\u0438\u0440\u043d\u0438\u043a\u043e\u0432 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c, \u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f)<\/p>\n<\/li>\n<li>\n<p>&#8212;download-path &#8212; \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u044b:<\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u0442\u044c  &#8212;provider-filter &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043d\u0430\u0439\u0434\u0451\u0442 \u0412\u0421\u0415 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0434\u0436\u0438\u0441\u0442\u0440\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0438 \u043d\u0430\u0447\u043d\u0451\u0442 \u0438\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u041e\u0427\u0415\u041d\u042c \u0434\u043e\u043b\u0433\u043e \u0438 \u041e\u0427\u0415\u041d\u042c \u043c\u043d\u043e\u0433\u043e \u0432\u0435\u0441\u0438\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u0442\u044c &#8212;platform-filter &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0442\u0440\u044e\u043a:<br \/>\u0412 provider-filter \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0435\u043b\u0438\u0431\u0435\u0440\u0434\u0443. \u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0440\u0443\u0433\u043d\u0451\u0442\u0441\u044f \u0432 \u043b\u043e\u0433\u0435, \u0447\u0442\u043e \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440, \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">--provider-filter \"ibelieveicanfly\/ibelieveicantouchthesky\" --platform-filter \"linux_amd64,darwin_arm64\" --download-binaries \"consul&gt;1.21.3,nomad&gt;1.6.0\"<\/code><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6bc\/a67\/3eb\/6bca673ebd331886190e23f7ec113006.jpg\" width=\"460\" height=\"639\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6bc\/a67\/3eb\/6bca673ebd331886190e23f7ec113006.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6bc\/a67\/3eb\/6bca673ebd331886190e23f7ec113006.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<ul>\n<li>\n<p>&#8212;listen-host<\/p>\n<\/li>\n<li>\n<p>&#8212;listen-port<\/p>\n<\/li>\n<li>\n<p>&#8212;hostname<\/p>\n<\/li>\n<li>\n<p>&#8212;enable-tls &#8212; \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 https. \u0414\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u043a\u043b\u044e\u0447\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0434\u0432\u0443\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d, \u043d\u043e terraform \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 http, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u0435\u043f\u043b\u043e\u044f \u0432 \u043a\u0443\u0431\u0435\u0440 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ingress, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a tls \u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 ingress.<\/p>\n<\/li>\n<li>\n<p>&#8212;tls-crt &#8212; \u043f\u0443\u0442\u044c \u0434\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>&#8212;tls-key &#8212; \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u043b\u044e\u0447\u0430<\/p>\n<\/li>\n<li>\n<p>&#8212;data-path &#8212; \u043a\u0430\u043a\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0442\u044c. \u0422\u043e\u0442 \u0436\u0435 \u043f\u0443\u0442\u044c, \u0447\u0442\u043e \u0438 download-path \u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c &#8212; \u0447\u0442\u043e-\u0442\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0447\u0442\u043e-\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 docker:<\/p>\n<pre><code class=\"bash\"># downloader mode docker run --rm -v $(pwd)\/data:\/data docker.io\/ademidovx\/tf-mirror:latest \\   --mode downloader --download-path \/data --provider-filter=hashicorp\/aws  # server mode without TLS (Only for preview. Terraform decline download providers by http) docker run --rm -p 8080:8080 -v $(pwd)\/data:\/data docker.io\/ademidovx\/tf-mirror:latest \\   --mode server --data-path \/data --listen-port 8080  # server mode with TLS docker run --rm -p 443:443 -v $(pwd)\/tls:\/tls -v $(pwd)\/data:\/data docker.io\/ademidovx\/tf-mirror:latest \\   --mode server --data-path \/data --listen-host 0.0.0.0 --listen-port 443 --enable-tls --tls-crt \/tls\/tls.crt --tls-key \/tls\/tls.key --hostname tf-mirror.local<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432 k8s:<\/p>\n<pre><code>helm install tf-mirror oci:\/\/registry-1.docker.io\/ademidovx\/tf-mirror --version 0.1.0 --values values.yaml<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 values.yaml<\/p>\n<pre><code>kind: Deployment  server:   port: 8080   env:     - name: TF_MIRROR_MODE       value: server     - name: DATA_PATH       value: \/data     - name: LISTEN_HOST       value: \"0.0.0.0\"     - name: LISTEN_PORT       value: \"8080\" # \u0438\u043b\u0438 \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 #  args: #    - --mode=server #    - --data-path=\/data #    - --listen-host=0.0.0.0 #    - --listen-port=8080  downloader:   env:     - name: TF_MIRROR_MODE       value: downloader     - name: PROXY       value: \"http:\/\/proxy:8080\"     - name: CHECK_PERIOD       value: \"24\"     - name: DOWNLOAD_PATH       value: \/data     - name: PROVIDER_FILTER       value: \"hashicorp\/template&gt;2.2.0,hashicorp\/helm\"     - name: PLATFORM_FILTER       value: \"linux_amd64,darwin_amd64\"     - name: MAX_ATTEMPTS       value: \"5\"     - name: DOWNLOAD_TIMEOUT       value: \"180\"     - name: DOWNLOAD_BINARIES       value: \"consul&gt;1.21.3,nomad&gt;1.6.0\" # \u0438\u043b\u0438 \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 #  args: #    - --mode=downloader #    - --download-path=\/data #    - --proxy=http:\/\/proxy:8080 # if needed #    - --check-period=24 #    - --provider-filter=hashicorp\/template&gt;2.2.0,hashicorp\/helm #    - --platform-filter=linux_amd64,darwin_amd64 #    - --max-attempts=5 #    - --download-timeout=180 #    - --download-binaries=consul&gt;1.21.3,nomad&gt;1.6.0  ingress:   enabled: true   annotations:     kubernetes.io\/ingress.class: nginx     nginx.ingress.kubernetes.io\/ssl-redirect: \"true\"   hosts:     - host: tf-mirror.example.com       paths:         - path: \/           pathType: Prefix   tls:     - secretName: tf-mirror-tls  # data presistence data:   persistentvolume: true   accessMode: ReadWriteOnce   size: 10Gi   storageClassName: \"exampleClassname\"<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043b\u043e\u0433\u043e\u0432:<\/p>\n<details class=\"spoiler\">\n<summary>&#8212;mode downloader<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>[INFO] 2025\/09\/06 18:48:10 Starting Terraform Registry Mirror [INFO] 2025\/09\/06 18:48:10 Version: dev [INFO] 2025\/09\/06 18:48:10 Mode: downloader [INFO] 2025\/09\/06 18:48:10 Downloader Configuration: [INFO] 2025\/09\/06 18:48:10   Download path: \/data [INFO] 2025\/09\/06 18:48:10   Check period: 24 hours [INFO] 2025\/09\/06 18:48:10   Proxy: socks5:\/\/58.35.146.82:9999 [INFO] 2025\/09\/06 18:48:10   Provider filter: hashicorp\/template&gt;2.2.0 [INFO] 2025\/09\/06 18:48:10   Platform filter: linux_amd64,darwin_amd64 [INFO] 2025\/09\/06 18:48:10 Provider filter enabled: hashicorp\/template (1 providers) [INFO] 2025\/09\/06 18:48:10 Platform filter enabled: linux_amd64, darwin_amd64 (2 platforms) [INFO] 2025\/09\/06 18:48:10 Starting Terraform provider downloader service [INFO] 2025\/09\/06 18:48:10 Download path: \/data [INFO] 2025\/09\/06 18:48:10 Check period: 24h0m0s [INFO] 2025\/09\/06 18:48:10 Using filtered provider search for specified providers [INFO] 2025\/09\/06 18:48:10 Checking provider: hashicorp\/template [INFO] 2025\/09\/06 18:48:13 Provider filter applied: 1 providers found [INFO] 2025\/09\/06 18:48:13 Platform filter applied: 2 platforms selected [INFO] 2025\/09\/06 18:48:13 Processing provider: hashicorp\/template [INFO] 2025\/09\/06 18:48:13 Found 8 versions for hashicorp\/template: [1.0.0 2.2.0 2.0.0 2.1.0 2.1.1 0.1.0 2.1.2 0.1.1] [INFO] 2025\/09\/06 18:48:13 Provider already exists on disk: hashicorp\/template 2.2.0 linux_amd64 (skipping) [INFO] 2025\/09\/06 18:48:13 Provider already exists on disk: hashicorp\/template 2.2.0 darwin_amd64 (skipping) [INFO] 2025\/09\/06 18:48:13 Queued 0 download jobs, skipped 2 existing files [INFO] 2025\/09\/06 18:48:13 All results received: resultsSent=0, totalJobs=0 [INFO] 2025\/09\/06 18:48:13 Download session completed: 0 downloaded, 0 skipped (already exist), 0 failed, 2 pre-filtered, total time: 0s, total size: 0.00 MB [INFO] 2025\/09\/06 18:48:13 [worker-1] Jobs channel closed, worker exiting, resultsSentByWorker=0 [INFO] 2025\/09\/06 18:48:13 [worker-0] Jobs channel closed, worker exiting, resultsSentByWorker=0 [INFO] 2025\/09\/06 18:48:13 [worker-3] Jobs channel closed, worker exiting, resultsSentByWorker=0 [INFO] 2025\/09\/06 18:48:13 [worker-4] Jobs channel closed, worker exiting, resultsSentByWorker=0 [INFO] 2025\/09\/06 18:48:13 [worker-2] Jobs channel closed, worker exiting, resultsSentByWorker=0 [INFO] 2025\/09\/06 18:48:14 Generated index.json for hashicorp\/template [INFO] 2025\/09\/06 18:48:14 Starting download of HashiCorp binaries from releases.hashicorp.com [INFO] 2025\/09\/06 18:48:14 Processing tool: packer (min version: 1.13.1) [INFO] 2025\/09\/06 18:48:17   Downloading: https:\/\/releases.hashicorp.com\/packer\/1.14.1\/packer_1.14.1_linux_amd64.zip [INFO] 2025\/09\/06 18:48:21     Success: \/data\/packer\/packer_1.14.1_linux_amd64.zip [INFO] 2025\/09\/06 18:48:21   Downloading: https:\/\/releases.hashicorp.com\/packer\/1.14.1\/packer_1.14.1_darwin_amd64.zip [INFO] 2025\/09\/06 18:48:23     Success: \/data\/packer\/packer_1.14.1_darwin_amd64.zip [INFO] 2025\/09\/06 18:48:23   Downloading: https:\/\/releases.hashicorp.com\/packer\/1.14.0\/packer_1.14.0_linux_amd64.zip [INFO] 2025\/09\/06 18:48:25     Success: \/data\/packer\/packer_1.14.0_linux_amd64.zip [INFO] 2025\/09\/06 18:48:25   Downloading: https:\/\/releases.hashicorp.com\/packer\/1.14.0\/packer_1.14.0_darwin_amd64.zip [INFO] 2025\/09\/06 18:48:28     Success: \/data\/packer\/packer_1.14.0_darwin_amd64.zip [INFO] 2025\/09\/06 18:48:28   Downloading: https:\/\/releases.hashicorp.com\/packer\/1.13.1\/packer_1.13.1_linux_amd64.zip [INFO] 2025\/09\/06 18:48:31     Success: \/data\/packer\/packer_1.13.1_linux_amd64.zip [INFO] 2025\/09\/06 18:48:31   Downloading: https:\/\/releases.hashicorp.com\/packer\/1.13.1\/packer_1.13.1_darwin_amd64.zip [INFO] 2025\/09\/06 18:48:35     Success: \/data\/packer\/packer_1.13.1_darwin_amd64.zip [INFO] 2025\/09\/06 18:48:35 Processing tool: consul (min version: 1.21.3) [INFO] 2025\/09\/06 18:48:35   Downloading: https:\/\/releases.hashicorp.com\/consul\/1.21.4\/consul_1.21.4_linux_amd64.zip [INFO] 2025\/09\/06 18:48:49     Success: \/data\/consul\/consul_1.21.4_linux_amd64.zip [INFO] 2025\/09\/06 18:48:49   Downloading: https:\/\/releases.hashicorp.com\/consul\/1.21.4\/consul_1.21.4_darwin_amd64.zip [INFO] 2025\/09\/06 18:49:19     Success: \/data\/consul\/consul_1.21.4_darwin_amd64.zip [INFO] 2025\/09\/06 18:49:19   Downloading: https:\/\/releases.hashicorp.com\/consul\/1.21.3\/consul_1.21.3_linux_amd64.zip [INFO] 2025\/09\/06 18:49:51     Success: \/data\/consul\/consul_1.21.3_linux_amd64.zip [INFO] 2025\/09\/06 18:49:51   Downloading: https:\/\/releases.hashicorp.com\/consul\/1.21.3\/consul_1.21.3_darwin_amd64.zip [INFO] 2025\/09\/06 18:50:11     Success: \/data\/consul\/consul_1.21.3_darwin_amd64.zip [INFO] 2025\/09\/06 18:50:11 HashiCorp binaries download completed [INFO] 2025\/09\/06 18:50:11 downloadProviders: function exited<\/code><\/pre>\n<p>\u0424\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0432 \u043b\u043e\u0433\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u0432\u0437\u044f\u0442\u044c \u0438\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>&#8212;mode server<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>[INFO] 2025\/09\/06 18:48:13 Starting Terraform Registry Mirror [INFO] 2025\/09\/06 18:48:13 Version: dev [INFO] 2025\/09\/06 18:48:13 Mode: server [INFO] 2025\/09\/06 18:48:13 Server Configuration: [INFO] 2025\/09\/06 18:48:13   Listen address: 0.0.0.0:8443 [INFO] 2025\/09\/06 18:48:13   Data path: \/data [INFO] 2025\/09\/06 18:48:13   Hostname: tf-mirror.local [INFO] 2025\/09\/06 18:48:13   TLS enabled: yes [INFO] 2025\/09\/06 18:48:13   Certificate: \/tls\/tls.crt [INFO] 2025\/09\/06 18:48:13   Private key: \/tls\/tls.key [INFO] 2025\/09\/06 18:48:13 Starting HTTPS server on 0.0.0.0:8443 [INFO] 2025\/09\/06 18:48:46 GET \/health 200 167.3\u00b5s 10.244.0.1:41684 [INFO] 2025\/09\/06 18:48:51 GET \/health 200 41.665\u00b5s 10.244.0.1:41686 [INFO] 2025\/09\/06 18:48:56 GET \/health 200 34.164\u00b5s 10.244.0.1:59164 [INFO] 2025\/09\/06 18:49:01 GET \/health 200 43.134\u00b5s 10.244.0.1:59170 [INFO] 2025\/09\/06 18:49:06 GET \/health 200 34.194\u00b5s 10.244.0.1:37750 [INFO] 2025\/09\/06 18:49:11 GET \/health 200 53.042\u00b5s 10.244.0.1:37752<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u0434\u0432\u043e\u0434\u044f \u0438\u0442\u043e\u0433 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0418\u0418-\u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u044b \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 DevOps \u0437\u0430\u0434\u0430\u0447. \u041d\u043e, \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0438\u043c \u043f\u043e\u043a\u0430 \u0435\u0449\u0451 \u0434\u0430\u043b\u0435\u043a\u043e \u0434\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0410 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u044d\u0442\u043e \u0431\u0435\u0441\u0441\u043f\u043e\u0440\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0448\u0442\u0443\u043a\u0430.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438:<br \/>&#8212; Claude Sonnet 4<br \/>&#8212; GPT-4.1<\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0438:<br \/>&#8212; \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 github: <a href=\"https:\/\/github.com\/kashtan404\/tf-mirror\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/kashtan404\/tf-mirror<\/a><br \/>&#8212; docker image \u0438 helm chart \u043d\u0430 \u0434\u043e\u043a\u0435\u0440\u0445\u0430\u0431\u0435 &#8212; <a href=\"https:\/\/hub.docker.com\/r\/ademidovx\/tf-mirror\" rel=\"noopener noreferrer nofollow\">https:\/\/hub.docker.com\/r\/ademidovx\/tf-mirror<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/articles\/944720\/\"> https:\/\/habr.com\/ru\/articles\/944720\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0414\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u043f\u044f\u0442\u043d\u0438\u0447\u043d\u044b\u043c \u0432\u0435\u0447\u0435\u0440\u043e\u043c, \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044b\u043b\u043e \u043d\u0435\u0447\u0435\u0433\u043e.<\/p>\n<p>\u041c\u0435\u043d\u044f \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u0441\u0435\u0449\u0430\u043b\u0430 \u0438\u0434\u0435\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0444\u0442 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 terraform registry mirror, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u0437\u0430\u043f\u0430\u0434\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u043c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 &#171;\u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439&#187; \u0441\u0442\u0440\u0430\u043d\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u043d\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c. \u0412\u0438\u0434\u0438\u043c\u043e, opensource \u044d\u0442\u043e \u043a\u043e\u0433\u043e \u043d\u0430\u0434\u043e opensource.<\/p>\n<p>\u041d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u0433\u0434\u0435-\u0442\u043e \u0433\u043e\u0434 \u0438\u043b\u0438 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u043d\u0430\u0437\u0430\u0434 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0435\u0439, \u043a\u043e\u0433\u0434\u0430 \u0437\u0435\u0440\u043a\u0430\u043b\u043e \u044f\u043d\u0434\u0435\u043a\u0441\u0430 (<a href=\"https:\/\/terraform-mirror.yandexcloud.net\/\" rel=\"noopener noreferrer nofollow\">https:\/\/terraform-mirror.yandexcloud.net\/<\/a>) \u0431\u044b\u043b\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/straubt1\/terraform-network-mirror\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/straubt1\/terraform-network-mirror<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438, \u0438 \u0445\u043e\u0441\u0442\u0438\u0442\u044c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 ObjectStorage yandexcloud.<\/p>\n<p>\u041d\u043e \u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439:<br \/>&#8212; \u041d\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043f\u043e \u0432\u0435\u0440\u0441\u0438\u044f\u043c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e update \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0433\u0440\u0435\u0431\u0430\u0435\u0442 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043a-\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a.<br \/>&#8212; \u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c vpn \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<br \/>&#8212; \u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0451 \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430\u043a\u0430\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e: \u0441\u0432\u044f\u0437\u044c \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c vpn, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0442.\u0434.<\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u043b\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/news\/941500\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/news\/941500\/<\/a> \u043f\u0440\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 zed \u0418\u0418 \u0438 \u0442\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f \u043f\u043e\u0441\u0435\u0442\u0438\u043b\u043e \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 pet-\u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u043e \u0442\u043e\u043c &#171;\u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0418\u0418 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u0431\u0435\u0437 \u0437\u043d\u0430\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430&#187; \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u0442\u0430\u043a\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 \u043f\u0440\u0443\u0434 \u043f\u0440\u0443\u0434\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f, \u043a\u0430\u043a \u043d\u0435 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u0430 \u043a\u0430\u043a DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0439 \u0442\u0443\u043b\u0437\u0443 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u044f \u0443\u0436\u0435 \u0431\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u0441 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a, \u0432\u0438\u0434\u0435\u043e \u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u0438 \u0434\u0435\u0431\u0430\u0433\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u043c\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043b \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0442\u0435\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0435: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0435\u0433\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 12-factor, go best practice \u0438 \u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435.<\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043c\u0435\u043d\u044f \u0443\u0434\u0438\u0432\u0438\u043b\u043e, \u044d\u0442\u043e \u0442\u043e, \u043a\u0430\u043a \u0418\u0418 \u0432 zed \u043d\u0430\u0447\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u0434, \u0437\u0430\u0442\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432, \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c, \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043a\u0443\u0447\u0443 \u043e\u0448\u0438\u0431\u043e\u043a, \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043b, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b, \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u0442\u0435\u0441\u0442\u044b, \u0441\u043d\u043e\u0432\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0434\u043e\u0431\u0438\u043b \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f!<\/p>\n<p>\u041d\u041e! \u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0430\u043a, \u043a\u0430\u043a \u044f \u043e\u0436\u0438\u0434\u0430\u043b. \u0412 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u044f \u0443\u043a\u0430\u0437\u0430\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0437\u0435\u0440\u043a\u0430\u043b\u0430, \u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u043f\u043e \u043b\u043e\u0433\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e network mirror.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0431\u044b\u043b\u0430 \u0447\u0435\u0440\u0435\u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043e\u043a \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0435\u0431\u0430\u0433\u0430. \u0418\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 deadlock \u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0445\u0435\u0448\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0421 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c deadlock \u043f\u043e\u043c\u043e\u0433 delve \u0438 \u0433\u0443\u0433\u043b\u0435\u043d\u0438\u0435. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435. \u0418 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f, \u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0418\u0418, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u043c\u043e\u0433 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0435\u0451 \u043d\u0435 \u0441\u043c\u043e\u0433.<\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 &#8212; \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 h1 \u0445\u0435\u0448\u0430. \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0418\u0418 \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c SHA256 \u0430\u0440\u0445\u0438\u0432\u0430 \u0438 \u044d\u043d\u043a\u043e\u0434\u043e\u043c \u0432 base64 \u0431\u044b\u043b \u043d\u0435\u0432\u0435\u0440\u0435\u043d. \u0412 \u0433\u0443\u0433\u043b\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e terraform \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0445\u0435\u0448 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u0442\u043e\u0436\u0435 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c. \u0411\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043d\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043d\u044b. \u041d\u043e, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0443\u0442\u0440\u043e \u0432\u0435\u0447\u0435\u0440\u0430 \u043c\u0443\u0434\u0440\u0435\u043d\u0435\u0435, \u043d\u0430 \u0443\u0442\u0440\u043e \u0441\u0443\u0431\u0431\u043e\u0442\u044b \u043c\u0435\u043d\u044f \u043f\u043e\u0441\u0435\u0442\u0438\u043b\u0430 \u043c\u044b\u0441\u043b\u044c \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0431\u0438\u043d\u0430\u0440\u044f terraform. \u041a\u0430\u043a\u043e\u0432\u043e \u0436\u0435 \u0431\u044b\u043b\u043e \u043c\u043e\u0435 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0445\u0435\u0448\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f &#171;golang.org\/x\/mod\/sumdb\/dirhash&#187; \u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u043e\u0439:<br \/><a href=\"https:\/\/github.com\/hashicorp\/terraform\/blob\/main\/internal\/getproviders\/hash.go#L296\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/hashicorp\/terraform\/blob\/main\/internal\/getproviders\/hash.go#L296<\/a><\/p>\n<pre><code class=\"go\">s, err := dirhash.HashZip(archivePath, dirhash.Hash1)<\/code><\/pre>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043b\u0438\u043c\u0438\u0442 \u043d\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0442\u044b \u0432 zed \u0431\u044b\u043b \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d, \u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043a \u0440\u0430\u0431\u043e\u0442\u0435 copilot \u043e\u0442 github, \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u0432\u043e\u0438 \u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u044b\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d.<\/p>\n<p>\u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <a href=\"https:\/\/github.com\/kashtan404\/tf-mirror\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/kashtan404\/tf-mirror<\/a><\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<br \/>&#8212; \u0415\u0434\u0438\u043d\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430: \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 http \u0441\u0435\u0440\u0432\u0435\u0440<br \/>&#8212; \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c, \u0432\u0435\u0440\u0441\u0438\u044f\u043c, \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u043d\u0430\u0440\u0435\u0439 (packer, terraform \u0438 \u0442.\u0434.)<br \/>&#8212; \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u0442\u044b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0431\u0438\u043d\u0430\u0440\u0435\u0439<br \/>&#8212; \u0414\u043b\u044f http \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 TLS<br \/>&#8212; \u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 http\/https\/socks5 \u043f\u0440\u043e\u043a\u0441\u0438, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430\u0445<br \/>&#8212; \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430, \u0442\u0430\u043a \u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0434\u043e\u043a\u0435\u0440 \u043e\u0431\u0440\u0430\u0437\u0430, \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u043a\u0443\u0431\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 helm<\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438:<\/p>\n<pre><code>\/data\/   \u251c\u2500\u2500 registry.terraform.io   \u2502   \u2514\u2500\u2500 hashicorp\/   \u2502       \u251c\u2500\u2500 aws\/   \u2502       \u2502   \u2514\u2500\u2500 linux_amd64.zip   \u2502       |   \u2514\u2500\u2500 index.json   \u2502       |   \u2514\u2500\u2500 5.0.0.json   \u2502       \u2514\u2500\u2500 helm\/   \u2502           \u2514\u2500\u2500 ...   \u251c\u2500\u2500 terraform\/   \u2502   \u2514\u2500\u2500 terraform_1.6.0_linux_amd64.zip   \u2514\u2500\u2500 .tf-mirror-metadata.json<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u043b\u044f .terraformrc \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433<\/p>\n<pre><code>provider_installation {   network_mirror {     url = \"https:\/\/tf-mirror.example.com\/\"     include = [\"registry.terraform.io\/*\/*\"]   }   direct {     exclude = [\"registry.terraform.io\/*\/*\"]   } }<\/code><\/pre>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430:<\/p>\n<ol>\n<li>\n<p>\u0421\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0440\u0443\u0430\u0446\u0438\u044e<\/p>\n<\/li>\n<li>\n<p>\u0427\u0438\u0442\u0430\u0435\u0442 \u043c\u0435\u0442\u0430\u0434\u0430\u0442\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0434\u0451\u0440\u0433\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c registry, \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0432\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0435\u0440\u0441\u0438\u0439 \u0432 \u043b\u043e\u0433<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0435\u0441\u0442\u044c \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u0442\u0435, \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438; \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0435\u0441\u0442\u044c \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u0442\u0435, \u043d\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043d\u0435\u0442, \u0441\u0442\u0430\u0432\u0438\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u0434\u043b\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e)<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043f.4 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d, \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0432 \u043b\u043e\u0433 \u043e\u0431 \u044d\u0442\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 index.json \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0438 &lt;version&gt;.json<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443: downloaded, failed, \u043e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044f \u0442\u0435, \u0447\u0442\u043e \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442 \u043f.2-\u043f.9<\/p>\n<\/li>\n<\/ol>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<ol>\n<li>\n<p>\u0421\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438<\/p>\n<\/li>\n<li>\n<p>\u0418\u043c\u0435\u0435\u0442 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b:<\/p>\n<ol>\n<li>\n<p>\/health &#8212; \u0434\u043b\u044f \u0445\u0435\u043b\u0441\u0447\u0435\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\/version &#8212; \u0432\u044b\u0432\u043e\u0434 \u0432\u0435\u0440\u0441\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\/metrics &#8212; \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 prometheus<\/p>\n<\/li>\n<li>\n<p>\/ &#8212; \u043e\u0442\u0434\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u043a\u0443. \u0412 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0433\u0443\u043b\u044f\u0442\u044c \u043f\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430:<\/p>\n<ul>\n<li>\n<p>&#8212;proxy &#8212; \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 http\/https\/socks5 \u043f\u0440\u043e\u043a\u0441\u0438 <\/p>\n<\/li>\n<li>\n<p>&#8212;check-period &#8212; \u043f\u0435\u0440\u0438\u043e\u0434, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>&#8212;provider-filter &#8212; \u0444\u0438\u043b\u044c\u0442\u0440 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 (comma separated string) \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b (\u043f\u043e\u043b\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 &#171;namespace\/name&gt;version&#187;):<\/p>\n<ul>\n<li>\n<p>&#171;hashicorp\/aws&#187; &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0432\u0441\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>&#171;hashicorp\/aws&gt;1.0.0&#187; &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 &gt;= \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>&#171;hashicorp\/aws,hashicorp\/helm&#187; &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0432\u0441\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c: &#171;hashicorp\/aws&gt;1.0.0,hashicorp\/helm,hashicorp\/null&gt;2.1.0&#187;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>&#8212;platform-filter &#8212; \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c (comma separated string; \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0438 \u0434\u043b\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432):<\/p>\n<ul>\n<li>\n<p>&#171;linux_amd64,darwin_arm64&#187; &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>&#8212;max-attempts  &#8212; \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>&#8212;download-timeout &#8212; \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>&#8212;download-binaries &#8212; \u0444\u0438\u043b\u044c\u0442\u0440 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0430\u043d\u0438\u0440\u043d\u0438\u043a\u043e\u0432 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c, \u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f)<\/p>\n<\/li>\n<li>\n<p>&#8212;download-path &#8212; \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u044b:<\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u0442\u044c  &#8212;provider-filter &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043d\u0430\u0439\u0434\u0451\u0442 \u0412\u0421\u0415 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0434\u0436\u0438\u0441\u0442\u0440\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0438 \u043d\u0430\u0447\u043d\u0451\u0442 \u0438\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u041e\u0427\u0415\u041d\u042c \u0434\u043e\u043b\u0433\u043e \u0438 \u041e\u0427\u0415\u041d\u042c \u043c\u043d\u043e\u0433\u043e \u0432\u0435\u0441\u0438\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u0442\u044c &#8212;platform-filter &#8212; \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0442\u0440\u044e\u043a:<br \/>\u0412 provider-filter \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0435\u043b\u0438\u0431\u0435\u0440\u0434\u0443. \u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0440\u0443\u0433\u043d\u0451\u0442\u0441\u044f \u0432 \u043b\u043e\u0433\u0435, \u0447\u0442\u043e \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440, \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">--provider-filter \"ibelieveicanfly\/ibelieveicantouchthesky\" --platform-filter \"linux_amd64,darwin_arm64\" --download-binaries \"consul&gt;1.21.3,nomad&gt;1.6.0\"<\/code><\/pre>\n<figure class=\"\"><\/figure>\n<p>\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<ul>\n<li>\n<p>&#8212;listen-host<\/p>\n<\/li>\n<li>\n<p>&#8212;listen-port<\/p>\n<\/li>\n<li>\n<p>&#8212;hostname<\/p>\n<\/li>\n<li>\n<p>&#8212;enable-tls &#8212; \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 https. \u0414\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u043a\u043b\u044e\u0447\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0434\u0432\u0443\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d, \u043d\u043e terraform \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 http, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u0435\u043f\u043b\u043e\u044f \u0432 \u043a\u0443\u0431\u0435\u0440 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ingress, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a tls \u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 ingress.<\/p>\n<\/li>\n<li>\n<p>&#8212;tls-crt &#8212; \u043f\u0443\u0442\u044c \u0434\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>&#8212;tls-key &#8212; \u043f\u0443\u0442\u044c \u0434\u043e \u043a\u043b\u044e\u0447\u0430<\/p>\n<\/li>\n<li>\n<p>&#8212;data-path &#8212; \u043a\u0430\u043a\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0442\u044c. \u0422\u043e\u0442 \u0436\u0435 \u043f\u0443\u0442\u044c, \u0447\u0442\u043e \u0438 download-path \u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c &#8212; \u0447\u0442\u043e-\u0442\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0447\u0442\u043e-\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 docker:<\/p>\n<pre><code class=\"bash\"># downloader mode docker run --rm -v $(pwd)\/data:\/data docker.io\/ademidovx\/tf-mirror:latest \\   --mode downloader --download-path \/data --provider-filter=hashicorp\/aws  # server mode without TLS (Only for preview. Terraform decline download providers by http) docker run --rm -p 8080:8080 -v $(pwd)\/data:\/data docker.io\/ademidovx\/tf-mirror:latest \\   --mode server --data-path \/data --listen-port 8080  # server mode with TLS docker run --rm -p 443:443 -v $(pwd)\/tls:\/tls -v $(pwd)\/data:\/data docker.io\/ademidovx\/tf-mirror:latest \\   --mode server --data-path \/data --listen-host 0.0.0.0 --listen-port 443 --enable-tls --tls-crt \/tls\/tls.crt --tls-key \/tls\/tls.key --hostname tf-mirror.local<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432 k8s:<\/p>\n<pre><code>helm install tf-mirror oci:\/\/registry-1.docker.io\/ademidovx\/tf-mirror --version 0.1.0 --values values.yaml<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 values.yaml<\/p>\n<pre><code>kind: Deployment  server:   port: 8080   env:     - name: TF_MIRROR_MODE       value: server     - name: DATA_PATH       value: \/data     - name: LISTEN_HOST       value: \"0.0.0.0\"     - name: LISTEN_PORT       value: \"8080\" # \u0438\u043b\u0438 \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 #  args: #    - --mode=server #    - --data-path=\/data #    - --listen-host=0.0.0.0 #    - --listen-port=8080  downloader:   env:     - name: TF_MIRROR_MODE       value: downloader     - name: PROXY       value: \"http:\/\/proxy:8080\"     - name: CHECK_PERIOD       value: \"24\"     - name: DOWNLOAD_PATH       value: \/data     - name: PROVIDER_FILTER       value: \"hashicorp\/template&gt;2.2.0,hashicorp\/helm\"     - name: PLATFORM_FILTER       value: \"linux_amd64,darwin_amd64\"     -<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-474212","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/474212","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=474212"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/474212\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=474212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=474212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=474212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}