Files
mkdocs/Заметки/proxmox/K8S через тофу на проксе/index.html
T
2026-07-09 10:51:54 +00:00

2051 lines
52 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="ru" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="author" content="g.ryzhov">
<link rel="canonical" href="https://SailorUpiter.github.io/mkdocs/%D0%97%D0%B0%D0%BC%D0%B5%D1%82%D0%BA%D0%B8/proxmox/K8S%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20%D1%82%D0%BE%D1%84%D1%83%20%D0%BD%D0%B0%20%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B5/">
<link rel="prev" href="../../openshearch/%D1%85%D0%BE%D0%B4%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B/">
<link rel="next" href="../tofu%20sss/">
<link rel="icon" href="../../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
<title>K8S через тофу на проксе - Sailor.lab</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../../../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","G-WJRFTNJP0B"),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","G-WJRFTNJP0B",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=G-WJRFTNJP0B",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#opentofu" class="md-skip">
Перейти к содержанию
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Верхний колонтитул">
<a href="../../.." title="Sailor.lab" class="md-header__button md-logo" aria-label="Sailor.lab" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Sailor.lab
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
K8S через тофу на проксе
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Темное оформление" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Темное оформление" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Светлое оформление" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Светлое оформление" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Поиск" placeholder="Поиск" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Поиск">
<button type="reset" class="md-search__icon md-icon" title="Очистить" aria-label="Очистить" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Инициализация поиска
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/SailorUpiter/mkdocs.git" title="Перейти к репозиторию" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Навигация" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../.." title="Sailor.lab" class="md-nav__button md-logo" aria-label="Sailor.lab" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
Sailor.lab
</label>
<div class="md-nav__source">
<a href="https://github.com/SailorUpiter/mkdocs.git" title="Перейти к репозиторию" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../Welcome/" class="md-nav__link">
<span class="md-ellipsis">
Welcome
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
<span class="md-ellipsis">
Promts
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Promts
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../promts/opensearch/" class="md-nav__link">
<span class="md-ellipsis">
Opensearch
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Заметки
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Заметки
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../user-data/" class="md-nav__link">
<span class="md-ellipsis">
User data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../%D0%9F%D0%BE%D1%80%D1%82%20%D0%B4%D0%BB%D1%8F%20IMAP/" class="md-nav__link">
<span class="md-ellipsis">
note #imap #mail
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Ansible/%D0%98%D0%BD%D0%B2%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D1%8C/" class="md-nav__link">
<span class="md-ellipsis">
Ansible
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../docker/%D0%97%D0%B0%D0%BC%D0%B5%D1%82%D0%BA%D0%B8%20%D0%BF%D0%BE%20docker/" class="md-nav__link">
<span class="md-ellipsis">
Docker
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../gitea/backup/" class="md-nav__link">
<span class="md-ellipsis">
Gitea
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../markdown/syntax/" class="md-nav__link">
<span class="md-ellipsis">
Markdown
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../openshearch/install/" class="md-nav__link">
<span class="md-ellipsis">
Openshearch
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8" checked>
<label class="md-nav__link" for="__nav_3_8" id="__nav_3_8_label" tabindex="0">
<span class="md-ellipsis">
Proxmox
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_8_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3_8">
<span class="md-nav__icon md-icon"></span>
Proxmox
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
K8S через тофу на проксе
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
K8S через тофу на проксе
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Содержание">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Содержание
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#opentofu" class="md-nav__link">
<span class="md-ellipsis">
Установить OpenTofu
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#terraform" class="md-nav__link">
<span class="md-ellipsis">
Сетевое зеркало реестра провайдеров terraform
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
<span class="md-ellipsis">
Другие сайты
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
<span class="md-ellipsis">
Зеркала реестров
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
<span class="md-ellipsis">
Зеркала релизов
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
<span class="md-ellipsis">
Документация
</span>
</a>
<nav class="md-nav" aria-label="Документация">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#opentofu-proxmox" class="md-nav__link">
<span class="md-ellipsis">
Провайдер OpenTofu Proxmox
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#proxmox-api-opentofu-bpgproxmox" class="md-nav__link">
<span class="md-ellipsis">
Подготовьте Proxmox с помощью токена API для поставщика OpenTofu bpg/proxmox
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../tofu%20sss/" class="md-nav__link">
<span class="md-ellipsis">
Tofu sss
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../%D0%97%D0%B0%D0%BC%D0%B5%D1%82%D0%BA%D0%B0%20%D0%BF%D0%BE%20MTU/" class="md-nav__link">
<span class="md-ellipsis">
Заметка по MTU
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B0%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20%D0%BC%D0%BE%D0%B9%20%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%20%D1%82%D0%BE%D1%84%D1%83/" class="md-nav__link">
<span class="md-ellipsis">
Создание кластера через мой шаблон тофу
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../terraform/modules/" class="md-nav__link">
<span class="md-ellipsis">
Terraform
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../vault/vault/" class="md-nav__link">
<span class="md-ellipsis">
Vault
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../%D0%93%D0%BE%D1%80%D1%8F%D1%87%D0%B8%D0%B5%20%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B8/vscode/" class="md-nav__link">
<span class="md-ellipsis">
Горячие клавиши
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B/FIo/" class="md-nav__link">
<span class="md-ellipsis">
Команды
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../%D0%A0%D0%B5%D0%B3%D0%BB%D0%B0%D0%BC%D0%B5%D0%BD%D1%82%D1%8B/%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B2%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%83%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%B2/" class="md-nav__link">
<span class="md-ellipsis">
Регламенты
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0/HP%20ILO/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0%20SD%20%D0%BA%D0%B0%D1%80%D1%82%D1%8B/" class="md-nav__link">
<span class="md-ellipsis">
Сервера
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D0%B5%20%D0%B7%D0%B0%D0%BC%D0%B5%D1%82%D0%BA%D0%B8/BPDUGuard%2C%20STP%2C%20PortFast/" class="md-nav__link">
<span class="md-ellipsis">
Сетевые заметки
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8/%D0%93%D0%B8%D1%82%20%D1%85%D0%B0%D0%B1%20%D1%81%20%D1%81%D0%B5%D0%BB%D1%84%20%D1%85%D0%BE%D1%81%D1%82%D0%B5%D0%B4%20%D0%9F%D0%9E/" class="md-nav__link">
<span class="md-ellipsis">
Ссылки
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../%D0%A1%D1%82%D0%BE%D1%80%D0%B0%D0%B4%D0%B6%D0%B8/%D0%9F%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%81%D0%BE%D1%82%D1%8C%20CEPH/" class="md-nav__link">
<span class="md-ellipsis">
Стораджи
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../%D0%A2%D1%83%D0%BB%D0%B7%D1%8B/%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0%20%D0%BF%D0%BE%D1%87%D1%82%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0/" class="md-nav__link">
<span class="md-ellipsis">
Тулзы
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-ellipsis">
Регламенты
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Регламенты
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../%D0%A0%D0%B5%D0%B3%D0%BB%D0%B0%D0%BC%D0%B5%D0%BD%D1%82%D1%8B/%D0%A0%D0%B5%D0%B3%D0%BB%D0%B0%D0%BC%D0%B5%D0%BD%D1%82%20%D0%BD%D0%B0%20%D1%81%D1%80%D0%B0%D0%B1%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%20%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3%D0%B0./" class="md-nav__link">
<span class="md-ellipsis">
Регламент на срабатывание систем мониторинга.
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Содержание">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Содержание
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#opentofu" class="md-nav__link">
<span class="md-ellipsis">
Установить OpenTofu
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#terraform" class="md-nav__link">
<span class="md-ellipsis">
Сетевое зеркало реестра провайдеров terraform
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
<span class="md-ellipsis">
Другие сайты
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
<span class="md-ellipsis">
Зеркала реестров
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
<span class="md-ellipsis">
Зеркала релизов
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
<span class="md-ellipsis">
Документация
</span>
</a>
<nav class="md-nav" aria-label="Документация">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#opentofu-proxmox" class="md-nav__link">
<span class="md-ellipsis">
Провайдер OpenTofu Proxmox
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#proxmox-api-opentofu-bpgproxmox" class="md-nav__link">
<span class="md-ellipsis">
Подготовьте Proxmox с помощью токена API для поставщика OpenTofu bpg/proxmox
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<nav class="md-path" aria-label="Навигация" >
<ol class="md-path__list">
<li class="md-path__item">
<a href="../../user-data/" class="md-path__link">
<span class="md-ellipsis">
Заметки
</span>
</a>
</li>
<li class="md-path__item">
<a href="./" class="md-path__link">
<span class="md-ellipsis">
Proxmox
</span>
</a>
</li>
</ol>
</nav>
<article class="md-content__inner md-typeset">
<h1>K8S через тофу на проксе</h1>
<p>Сделаю наверное перевод с дополнениями</p>
<p>В этом посте я буду использовать следующие продукты:</p>
<ul>
<li>Proxmox - <a href="https://www.proxmox.com/en/">домашняя страница</a></li>
<li>Ubuntu - <a href="https://ubuntu.com/">домашняя страница</a></li>
<li>OpenTofu - <a href="https://opentofu.org/">домашняя страница</a></li>
<li>поставщик terraform для bpg/proxmox — <a href="https://registry.terraform.io/providers/bpg/proxmox/latest">реестр</a> и <a href="https://github.com/bpg/terraform-provider-proxmox">github</a></li>
<li>Ansible - <a href="https://www.ansible.com/community">домашняя страница</a></li>
<li>Kubespray - <a href="https://kubespray.io/#/">домашняя страница</a> и <a href="https://github.com/kubernetes-sigs/kubespray/tree/master">github</a></li>
</ul>
<h3 id="opentofu">Установить OpenTofu</h3>
<p>Чтобы начать работу с OpenTofu, я установил его на свой компьютер с Linux с помощью Snap, но есть и несколько других альтернатив. Подробнее см. на официальной странице <a href="https://opentofu.org/docs/intro/install/snap">документации</a> OpenTofu.</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>snap<span class="w"> </span>install<span class="w"> </span>--classic<span class="w"> </span>opentofu
</code></pre></div>
<p>Теперь OpenTofu установлен, и я могу начать его использовать. Я также установил автозаполнение bash следующим образом:</p>
<div class="highlight"><pre><span></span><code>tofu<span class="w"> </span>-install-autocomplete<span class="w"> </span><span class="c1"># restart shell session...</span>
</code></pre></div>
<p>Я решил создать отдельную папку для своих «проектов», поэтому я создал папку в своей домашней папке под названием *tofu/proxmox, в которой у меня есть разные подпапки в зависимости от задач или ресурсов, для которых я буду использовать OpenTofu.</p>
<div class="highlight"><pre><span></span><code>tofu/proxmox/
├──<span class="w"> </span>k8s-cluster-02
├──<span class="w"> </span>proxmox-images
</code></pre></div>
<h2 id="terraform">Сетевое зеркало реестра провайдеров terraform</h2>
<p>Так как реестры и тераформ заблокированы для РФ требуется использовать пути обхода.<br />
Для использования зеркала добавьте в <a href="https://www.terraform.io/cli/config/config-file">файл настроек terraform</a> следующий код:</p>
<div class="highlight"><pre><span></span><code>provider_installation {
network_mirror {
url = &quot;https://nm.tf.org.ru/&quot;
include = [&quot;registry.terraform.io/*/*&quot;]
}
direct {
exclude = [&quot;registry.terraform.io/*/*&quot;]
}
}
</code></pre></div>
<ul>
<li>В Windows файл должен называться <code>terraform.rc</code> и находиться в каталоге <code>%APPDATA%</code> соответствующего пользователя. Расположение каталога зависит от версии Windows. Чтобы найти этот каталог в своей системе используйте <code>$env:APPDATA</code> в PowerShell.</li>
<li>В остальных системах файл должен называться <code>.terraformrc</code> и находиться в домашнем каталоге пользователя. (/home/ubadmin)</li>
</ul>
<h2 id="_1">Другие сайты</h2>
<h2 id="_2">Зеркала реестров</h2>
<ul>
<li><a href="https://registry.comcloud.xyz/">registry.comcloud.xyz</a></li>
<li><a href="https://cloud.yandex.ru/docs/tutorials/infrastructure-management/terraform-quickstart#configure-provider">terraform-mirror.yandexcloud.net</a></li>
</ul>
<h2 id="_3">Зеркала релизов</h2>
<ul>
<li><a href="https://hashicorp-releases.website.yandexcloud.net/terraform/">hashicorp-releases.website.yandexcloud.net</a></li>
<li><a href="https://hc-mirror.express42.net/">hc-mirror.express42.net</a></li>
<li><a href="https://releases.comcloud.xyz/">releases.comcloud.xyz</a></li>
</ul>
<h2 id="_4">Документация</h2>
<ul>
<li><a href="https://docs.comcloud.xyz/">docs.comcloud.xyz</a></li>
</ul>
<h3 id="opentofu-proxmox">Провайдер OpenTofu Proxmox</h3>
<p>Чтобы использовать OpenTofu с Proxmox, мне нужен провайдер, который может использовать API Proxmox. Я быстро изучил различные варианты и остановился на этом провайдере: <a href="https://registry.terraform.io/providers/bpg/proxmox">bpg/proxmox</a>. Он кажется очень активным и недавно обновлялся (согласно репозиторию git <a href="https://github.com/bpg/terraform-provider-proxmox">здесь</a>)</p>
<p>Поставщик OpenTofu/Terraform определяется следующим образом, а приведенный ниже пример настраивает установку поставщика bpg/proxmox, необходимого для взаимодействия с Proxmox.<br />
terraform {</p>
<div class="highlight"><pre><span></span><code>  required_providers {
    proxmox = {
      source = &quot;registry.terraform.io/bpg/proxmox&quot;
    }
    local = {
      source = &quot;registry.terraform.io/hashicorp/local&quot;
    }
    null = {
      source = &quot;registry.terraform.io/hashicorp/null&quot;
    }
    time = {
      source = &quot;registry.terraform.io/hashicorp/time&quot;
    }
  }
}
provider &quot;proxmox&quot; {
  endpoint  = var.pve_api_url
  api_token = &quot;${var.pve_token_id}=${var.pve_token_secret}&quot;
  insecure  = true
  ssh {
    agent    = true
    username = &quot;root&quot;
  }
}
</code></pre></div>
<p>Я сохраню это содержимое в файле под названием <em>providers.tf</em><br />
Сначала краткое объяснение двух разделов выше. Разделы <em>terraform</em> указывают OpenTofu/Terraform, какой провайдер следует загрузить и включить. Поле <em>version</em> определяет конкретную версию для использования, а не <em>последнюю</em>, а именно эту версию. Использование этого поля гарантирует, что ваша автоматизация не сломается, если в версии провайдера произойдут какие-либо изменения в API.<br />
Раздел <em>provider</em> настраивает взаимодействие прокси-провайдера с Proxmox. Вместо обычного имени пользователя и пароля я решил использовать токен API. Здесь я использую значение переменной в ключах endpoint и api-token, которые определены в другом файле под названием variables.tf и credentials.auto.tfvars. В моей системе автоматизации есть задачи, для которых требуется взаимодействие с Proxmox по SSH, поэтому я также включил его, настроив поле <em>ssh</em>.</p>
<p>Для получения дополнительной информации о провайдере bpg/proxmox перейдите <a href="https://registry.terraform.io/providers/bpg/proxmox/latest/docs">сюда</a></p>
<h3 id="proxmox-api-opentofu-bpgproxmox">Подготовьте Proxmox с помощью токена API для поставщика OpenTofu bpg/proxmox</h3>
<p>Чтобы использовать описанный выше провайдер с Proxmox, мне нужно подготовить Proxmox для использования токена API. Я следовал документации провайдера bpg/proxmox <a href="https://registry.terraform.io/providers/bpg/proxmox/latest/docs#api-token-authentication">здесь</a></p>
<div class="highlight"><pre><span></span><code># Create the user
sudo pveum user add terraform@pve
# Create a role for the user above
sudo pveum role add Terraform -privs &quot;Datastore.Allocate Datastore.AllocateSpace Datastore.AllocateTemplate Datastore.Audit Pool.Allocate Sys.Audit Sys.Console Sys.Modify SDN.Use VM.Allocate VM.Audit VM.Clone VM.Config.CDROM VM.Config.Cloudinit VM.Config.CPU VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.Migrate VM.Monitor VM.PowerMgmt User.Modify&quot;
# Assign the terraform user to the above role
sudo pveum aclmod / -user terraform@pve -role Terraform
# Create the token
sudo pveum user token add terraform@pve provider --privsep=0
┌──────────────┬──────────────────────────────────────┐
│ key │ value │
╞══════════════╪══════════════════════════════════════╡
│ full-tokenid │ terraform@pve!provider │
├──────────────┼──────────────────────────────────────┤
│ info │ {&quot;privsep&quot;:&quot;0&quot;} │
├──────────────┼──────────────────────────────────────┤
│ value │ &lt;token&gt;
└──────────────┴──────────────────────────────────────┘
# make a backup of the token
</code></pre></div>
<p>Теперь я могу войти в свой узел Proxmox по SSH без пароля с моего Linux-шлюза. Но при использовании в сочетании с opentofu этого недостаточно. Мне нужно загрузить ключ в хранилище ключей. Если я этого не сделаю, автоматизация, требующая доступа по SSH, завершится ошибкой с этим сообщением:<br />
<div class="highlight"><pre><span></span><code>Error:<span class="w"> </span>failed<span class="w"> </span>to<span class="w"> </span>open<span class="w"> </span>SSH<span class="w"> </span>client:<span class="w"> </span>unable<span class="w"> </span>to<span class="w"> </span>authenticate<span class="w"> </span>user<span class="w"> </span><span class="s2">&quot;root&quot;</span><span class="w"> </span>over<span class="w"> </span>SSH<span class="w"> </span>to<span class="w"> </span><span class="s2">&quot;172.18.5.102:22&quot;</span>.<span class="w"> </span>Please<span class="w"> </span>verify<span class="w"> </span>that<span class="w"> </span>ssh-agent<span class="w"> </span>is<span class="w"> </span>correctly<span class="w"> </span>loaded<span class="w"> </span>with<span class="w"> </span>an<span class="w"> </span>authorized<span class="w"> </span>key<span class="w"> </span>via<span class="w"> </span><span class="s1">&#39;ssh-add -L&#39;</span><span class="w"> </span><span class="o">(</span>NOTE:<span class="w"> </span>configurations<span class="w"> </span><span class="k">in</span><span class="w"> </span>~/.ssh/config<span class="w"> </span>are<span class="w"> </span>not<span class="w"> </span>considered<span class="w"> </span>by<span class="w"> </span>golang<span class="err">&#39;</span>s<span class="w"> </span>ssh<span class="w"> </span>implementation<span class="o">)</span>.<span class="w"> </span>The<span class="w"> </span>exact<span class="w"> </span>error<span class="w"> </span>from<span class="w"> </span>ssh.Dial:<span class="w"> </span>ssh:<span class="w"> </span>handshake<span class="w"> </span>failed:<span class="w"> </span>ssh:<span class="w"> </span>unable<span class="w"> </span>to<span class="w"> </span>authenticate,<span class="w"> </span>attempted<span class="w"> </span>methods<span class="w"> </span><span class="o">[</span>none<span class="w"> </span>password<span class="o">]</span>,<span class="w"> </span>no<span class="w"> </span>supported<span class="w"> </span>methods<span class="w"> </span>remain
</code></pre></div><br />
Для того что бы избавиться от ошибки нужно выполнить команды в терминале:<br />
<div class="highlight"><pre><span></span><code>eval `ssh-agent -s`
ssh-add /home/ubadmin/.ssh/id_ed25519
</code></pre></div></p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
К началу
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Sailor.lab, 2026
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
<script id="__config" type="application/json">{"annotate": null, "base": "../../..", "features": ["content.code.copy", "navigation.instant", "navigation.instant.progress", "navigation.sections", "navigation.path", "navigation.top", "navigation.prune"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u0431\u0443\u0444\u0435\u0440", "clipboard.copy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440", "search.result.more.one": "\u0415\u0449\u0451 1 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435", "search.result.more.other": "\u0415\u0449\u0451 # \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435", "search.result.none": "\u0421\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e", "search.result.one": "\u041d\u0430\u0439\u0434\u0435\u043d\u043e 1 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435", "search.result.other": "\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439: #", "search.result.placeholder": "\u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430", "search.result.term.missing": "\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442", "select.version": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e"}, "version": null}</script>
<script src="../../../assets/javascripts/bundle.79ae519e.min.js"></script>
</body>
</html>