Files
SYSAHELPER/sysahelper/REG2026/REG26_ 2. Project_01 _ sysahelper.html
2026-05-07 19:20:10 +05:00

2295 lines
137 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 dir="ltr" lang="ru" xml:lang="ru" class="yui3-js-enabled"><head>
<title>REG26: 2. Project_01 | sysahelper</title>
<link rel="shortcut icon" href="https://sysahelper.ru/pluginfile.php/1/theme_moove/favicon/1703880572/22212monkey_98814.ico">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="keywords" content="moodle, REG26: 2. Project_01 | sysahelper">
<link rel="stylesheet" type="text/css" href="REG26_%202.%20Project_01%20_%20sysahelper_files/combo.css"><script async="" src="REG26_%202.%20Project_01%20_%20sysahelper_files/tag.js"></script><script charset="utf-8" id="yui_3_18_1_1_1778160100284_12" src="REG26_%202.%20Project_01%20_%20sysahelper_files/combo_002" async=""></script><script id="firstthemesheet" type="text/css">/** Required in order to fix style inclusion problems in IE with YUI **/</script><link rel="stylesheet" type="text/css" href="REG26_%202.%20Project_01%20_%20sysahelper_files/styles.css">
<script>
//<![CDATA[
var M = {}; M.yui = {};
M.pageloadstarttime = new Date();
M.cfg = {"wwwroot":"https:\/\/sysahelper.ru","homeurl":{},"sesskey":"I78ejZljGV","sessiontimeout":"28800","sessiontimeoutwarning":"1200","themerev":"1703880572","slasharguments":1,"theme":"moove","iconsystemmodule":"core\/icon_system_fontawesome","jsrev":"1703880200","admin":"admin","svgicons":true,"usertimezone":"\u0415\u0432\u0440\u043e\u043f\u0430\/\u041c\u043e\u0441\u043a\u0432\u0430","language":"ru","courseId":43,"courseContextId":1078,"contextid":1160,"contextInstanceId":780,"langrev":1703880200,"templaterev":"1703880200"};var yui1ConfigFn = function(me) {if(/-skin|reset|fonts|grids|base/.test(me.name)){me.type='css';me.path=me.path.replace(/\.js/,'.css');me.path=me.path.replace(/\/yui2-skin/,'/assets/skins/sam/yui2-skin')}};
var yui2ConfigFn = function(me) {var parts=me.name.replace(/^moodle-/,'').split('-'),component=parts.shift(),module=parts[0],min='-min';if(/-(skin|core)$/.test(me.name)){parts.pop();me.type='css';min=''}
if(module){var filename=parts.join('-');me.path=component+'/'+module+'/'+filename+min+'.'+me.type}else{me.path=component+'/'+component+'.'+me.type}};
YUI_config = {"debug":false,"base":"https:\/\/sysahelper.ru\/lib\/yuilib\/3.18.1\/","comboBase":"https:\/\/sysahelper.ru\/theme\/yui_combo.php?","combine":true,"filter":null,"insertBefore":"firstthemesheet","groups":{"yui2":{"base":"https:\/\/sysahelper.ru\/lib\/yuilib\/2in3\/2.9.0\/build\/","comboBase":"https:\/\/sysahelper.ru\/theme\/yui_combo.php?","combine":true,"ext":false,"root":"2in3\/2.9.0\/build\/","patterns":{"yui2-":{"group":"yui2","configFn":yui1ConfigFn}}},"moodle":{"name":"moodle","base":"https:\/\/sysahelper.ru\/theme\/yui_combo.php?m\/1703880200\/","combine":true,"comboBase":"https:\/\/sysahelper.ru\/theme\/yui_combo.php?","ext":false,"root":"m\/1703880200\/","patterns":{"moodle-":{"group":"moodle","configFn":yui2ConfigFn}},"filter":null,"modules":{"moodle-core-blocks":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification"]},"moodle-core-actionmenu":{"requires":["base","event","node-event-simulate"]},"moodle-core-notification":{"requires":["moodle-core-notification-dialogue","moodle-core-notification-alert","moodle-core-notification-confirm","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-core-notification-dialogue":{"requires":["base","node","panel","escape","event-key","dd-plugin","moodle-core-widget-focusafterclose","moodle-core-lockscroll"]},"moodle-core-notification-alert":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-confirm":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-exception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-ajaxexception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-lockscroll":{"requires":["plugin","base-build"]},"moodle-core-event":{"requires":["event-custom"]},"moodle-core-chooserdialogue":{"requires":["base","panel","moodle-core-notification"]},"moodle-core-maintenancemodetimer":{"requires":["base","node"]},"moodle-core-handlebars":{"condition":{"trigger":"handlebars","when":"after"}},"moodle-core-formchangechecker":{"requires":["base","event-focus","moodle-core-event"]},"moodle-core-dragdrop":{"requires":["base","node","io","dom","dd","event-key","event-focus","moodle-core-notification"]},"moodle-core_availability-form":{"requires":["base","node","event","event-delegate","panel","moodle-core-notification-dialogue","json"]},"moodle-backup-backupselectall":{"requires":["node","event","node-event-simulate","anim"]},"moodle-course-util":{"requires":["node"],"use":["moodle-course-util-base"],"submodules":{"moodle-course-util-base":{},"moodle-course-util-section":{"requires":["node","moodle-course-util-base"]},"moodle-course-util-cm":{"requires":["node","moodle-course-util-base"]}}},"moodle-course-management":{"requires":["base","node","io-base","moodle-core-notification-exception","json-parse","dd-constrain","dd-proxy","dd-drop","dd-delegate","node-event-delegate"]},"moodle-course-categoryexpander":{"requires":["node","event-key"]},"moodle-course-dragdrop":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification","moodle-course-coursebase","moodle-course-util"]},"moodle-form-dateselector":{"requires":["base","node","overlay","calendar"]},"moodle-form-shortforms":{"requires":["node","base","selector-css3","moodle-core-event"]},"moodle-question-searchform":{"requires":["base","node"]},"moodle-question-preview":{"requires":["base","dom","event-delegate","event-key","core_question_engine"]},"moodle-question-chooser":{"requires":["moodle-core-chooserdialogue"]},"moodle-availability_completion-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_date-form":{"requires":["base","node","event","io","moodle-core_availability-form"]},"moodle-availability_grade-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_group-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_grouping-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_profile-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-mod_assign-history":{"requires":["node","transition"]},"moodle-mod_quiz-questionchooser":{"requires":["moodle-core-chooserdialogue","moodle-mod_quiz-util","querystring-parse"]},"moodle-mod_quiz-util":{"requires":["node","moodle-core-actionmenu"],"use":["moodle-mod_quiz-util-base"],"submodules":{"moodle-mod_quiz-util-base":{},"moodle-mod_quiz-util-slot":{"requires":["node","moodle-mod_quiz-util-base"]},"moodle-mod_quiz-util-page":{"requires":["node","moodle-mod_quiz-util-base"]}}},"moodle-mod_quiz-toolboxes":{"requires":["base","node","event","event-key","io","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-slot","moodle-core-notification-ajaxexception"]},"moodle-mod_quiz-autosave":{"requires":["base","node","event","event-valuechange","node-event-delegate","io-form"]},"moodle-mod_quiz-quizbase":{"requires":["base","node"]},"moodle-mod_quiz-modform":{"requires":["base","node","event"]},"moodle-mod_quiz-dragdrop":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-base","moodle-mod_quiz-util-page","moodle-mod_quiz-util-slot","moodle-course-util"]},"moodle-message_airnotifier-toolboxes":{"requires":["base","node","io"]},"moodle-filter_glossary-autolinker":{"requires":["base","node","io-base","json-parse","event-delegate","overlay","moodle-core-event","moodle-core-notification-alert","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-editor_atto-rangy":{"requires":[]},"moodle-editor_atto-editor":{"requires":["node","transition","io","overlay","escape","event","event-simulate","event-custom","node-event-html5","node-event-simulate","yui-throttle","moodle-core-notification-dialogue","moodle-editor_atto-rangy","handlebars","timers","querystring-stringify"]},"moodle-editor_atto-plugin":{"requires":["node","base","escape","event","event-outside","handlebars","event-custom","timers","moodle-editor_atto-menu"]},"moodle-editor_atto-menu":{"requires":["moodle-core-notification-dialogue","node","event","event-custom"]},"moodle-report_eventlist-eventfilter":{"requires":["base","event","node","node-event-delegate","datatable","autocomplete","autocomplete-filters"]},"moodle-report_loglive-fetchlogs":{"requires":["base","event","node","io","node-event-delegate"]},"moodle-gradereport_history-userselector":{"requires":["escape","event-delegate","event-key","handlebars","io-base","json-parse","moodle-core-notification-dialogue"]},"moodle-qbank_editquestion-chooser":{"requires":["moodle-core-chooserdialogue"]},"moodle-tool_lp-dragdrop-reorder":{"requires":["moodle-core-dragdrop"]},"moodle-assignfeedback_editpdf-editor":{"requires":["base","event","node","io","graphics","json","event-move","event-resize","transition","querystring-stringify-simple","moodle-core-notification-dialog","moodle-core-notification-alert","moodle-core-notification-warning","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-atto_accessibilitychecker-button":{"requires":["color-base","moodle-editor_atto-plugin"]},"moodle-atto_accessibilityhelper-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_align-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_bold-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_charmap-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_clear-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_collapse-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_emojipicker-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_emoticon-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_equation-button":{"requires":["moodle-editor_atto-plugin","moodle-core-event","io","event-valuechange","tabview","array-extras"]},"moodle-atto_h5p-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_html-button":{"requires":["promise","moodle-editor_atto-plugin","moodle-atto_html-beautify","moodle-atto_html-codemirror","event-valuechange"]},"moodle-atto_html-beautify":{},"moodle-atto_html-codemirror":{"requires":["moodle-atto_html-codemirror-skin"]},"moodle-atto_image-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_indent-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_italic-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_link-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_managefiles-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_managefiles-usedfiles":{"requires":["node","escape"]},"moodle-atto_media-button":{"requires":["moodle-editor_atto-plugin","moodle-form-shortforms"]},"moodle-atto_noautolink-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_orderedlist-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_recordrtc-button":{"requires":["moodle-editor_atto-plugin","moodle-atto_recordrtc-recording"]},"moodle-atto_recordrtc-recording":{"requires":["moodle-atto_recordrtc-button"]},"moodle-atto_rtl-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_strike-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_subscript-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_superscript-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_table-button":{"requires":["moodle-editor_atto-plugin","moodle-editor_atto-menu","event","event-valuechange"]},"moodle-atto_title-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_underline-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_undo-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_unorderedlist-button":{"requires":["moodle-editor_atto-plugin"]}}},"gallery":{"name":"gallery","base":"https:\/\/sysahelper.ru\/lib\/yuilib\/gallery\/","combine":true,"comboBase":"https:\/\/sysahelper.ru\/theme\/yui_combo.php?","ext":false,"root":"gallery\/1703880200\/","patterns":{"gallery-":{"group":"gallery"}}}},"modules":{"core_filepicker":{"name":"core_filepicker","fullpath":"https:\/\/sysahelper.ru\/lib\/javascript.php\/1703880200\/repository\/filepicker.js","requires":["base","node","node-event-simulate","json","async-queue","io-base","io-upload-iframe","io-form","yui2-treeview","panel","cookie","datatable","datatable-sort","resize-plugin","dd-plugin","escape","moodle-core_filepicker","moodle-core-notification-dialogue"]},"core_comment":{"name":"core_comment","fullpath":"https:\/\/sysahelper.ru\/lib\/javascript.php\/1703880200\/comment\/comment.js","requires":["base","io-base","node","json","yui2-animation","overlay","escape"]}},"logInclude":[],"logExclude":[],"logLevel":null};
M.yui.loader = {modules: {}};
//]]>
</script>
<link rel="preconnect" href="https://fonts.googleapis.com/">
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin="">
<link href="REG26_%202.%20Project_01%20_%20sysahelper_files/css2.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="core/first" src="REG26_%202.%20Project_01%20_%20sysahelper_files/requirejs.php"></script><script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="jquery" src="REG26_%202.%20Project_01%20_%20sysahelper_files/javascript_002.php"></script><script type="text/x-mathjax-config">
MathJax.Hub.Config({
config: ["Accessible.js", "Safe.js"],
errorSettings: { message: ["!"] },
skipStartupTypeset: true,
messageStyle: "none"
});
</script><script type="text/javascript">
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-701');
});
;
require(['core_courseformat/local/courseindex/section'], function(component) {
component.init('course-index-section-568');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-778');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-704');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-719');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-705');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-720');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-724');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-722');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-721');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-725');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-726');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-727');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-728');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-729');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-730');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-731');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-732');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-733');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-734');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-735');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-736');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-737');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-772');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-773');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-774');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-775');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-776');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-777');
});
;
require(['core_courseformat/local/courseindex/section'], function(component) {
component.init('course-index-section-569');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-779');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-782');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-783');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-784');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-780');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-781');
});
;
require(['core_courseformat/local/courseindex/cm'], function(component) {
component.init('course-index-cm-785');
});
;
require(['core_courseformat/local/courseindex/section'], function(component) {
component.init('course-index-section-570');
});
;
require(['core_courseformat/local/courseindex/courseindex'], function(component) {
component.init('course-index');
});
</script></head>
<body id="page-mod-page-view" class="format-topics limitedwidth path-mod path-mod-page gecko dir-ltr lang-ru yui-skin-sam yui3-skin-sam sysahelper-ru pagelayout-incourse course-43 context-1160 cmid-780 cm-type-page category-8 theme uses-drawers drawer-open-index jsenabled">
<div id="accessibilitybar" class="fixed-top">
<div class="container-fluid">
<div class="bars">
<div class="fontsize">
<span>Размер шрифта</span>
<ul>
<li><a class="btn btn-default" data-action="decrease" title="Уменьшить размер шрифта" id="fontsize_dec">A-</a></li>
<li><a class="btn btn-default disabled" data-action="reset" title="Сбросить размер шрифта" id="fontsize_reset">A</a></li>
<li><a class="btn btn-default" data-action="increase" title="Увеличить размер шрифта" id="fontsize_inc">A+</a></li>
</ul>
</div>
<div class="sitecolor">
<span>Цвет сайта</span>
<ul>
<li><a class="btn btn-default" data-action="reset" title="Сбросить цвет сайта" id="sitecolor_color1">R</a></li>
<li><a class="btn btn-default" data-action="sitecolor-color-2" title="Низкий контраст 1" id="sitecolor_color2">A</a></li>
<li><a class="btn btn-default" data-action="sitecolor-color-3" title="Низкий контраст 2" id="sitecolor_color3">A</a></li>
<li><a class="btn btn-default" data-action="sitecolor-color-4" title="Высокий контраст" id="sitecolor_color4">A</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="toast-wrapper mx-auto py-0 fixed-top" role="status" aria-live="polite"></div>
<div id="page-wrapper" class="d-print-block">
<div>
<a class="sr-only sr-only-focusable" href="#maincontent">Перейти к основному содержанию</a>
</div><script src="REG26_%202.%20Project_01%20_%20sysahelper_files/javascript_003.php"></script>
<script src="REG26_%202.%20Project_01%20_%20sysahelper_files/combo"></script><script src="REG26_%202.%20Project_01%20_%20sysahelper_files/javascript.php"></script>
<script>
//<![CDATA[
document.body.className += ' jsenabled';
//]]>
</script>
<nav class="navbar fixed-top navbar-light bg-white navbar-expand shadow" aria-label="Навигация по сайту">
<button class="navbar-toggler aabtn d-block d-md-none px-1 my-1 border-0" data-toggler="drawers" data-action="toggle" data-target="theme_moove-drawers-primary" data-disabled-toggle="undefined" data-restore-tooltip-on-blur="true">
<span class="navbar-toggler-icon"></span>
<span class="sr-only">Боковая панель</span>
</button>
<a href="https://sysahelper.ru/" class="navbar-brand d-none d-md-flex align-items-center m-0 mr-4 p-0 aabtn">
<img src="REG26_%202.%20Project_01%20_%20sysahelper_files/4.jpg" class="logo mr-1" alt="sysahelper">
</a>
<div class="primary-navigation">
<nav class="moremenu navigation observed">
<ul id="moremenu-69fc91d055665-navbar-nav" role="menubar" class="nav more-nav navbar-nav">
<li data-key="home" class="nav-item" role="none" data-forceintomoremenu="false">
<a role="menuitem" class="nav-link " href="https://sysahelper.ru/" tabindex="0" aria-current="true">
В начало
</a>
</li>
<li role="none" class="nav-item dropdown dropdownmoremenu d-none" data-region="morebutton">
<a class="dropdown-toggle nav-link " href="#" id="moremenu-dropdown-69fc91d055665" role="menuitem" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" tabindex="-1">
Дополнительно
</a>
<ul class="dropdown-menu dropdown-menu-left" data-region="moredropdown" aria-labelledby="moremenu-dropdown-69fc91d055665" role="menu">
</ul>
</li>
</ul>
</nav>
</div>
<ul class="navbar-nav d-none d-md-flex my-1 px-1">
<!-- page_heading_menu -->
</ul>
<div id="usernavigation" class="navbar-nav ml-auto">
<div class="navbarcallbacks">
</div>
<div id="searchinput-navbar-69fc91d05729169fc91d055d7c3" class="simplesearchform">
<div class="collapse" id="searchform-navbar">
<form autocomplete="off" action="https://sysahelper.ru/search/index.php" method="get" accept-charset="utf-8" class="mform form-inline searchform-navbar">
<input type="hidden" name="context" value="1160">
<div class="input-group">
<label for="searchinput-69fc91d05729169fc91d055d7c3">
<span class="sr-only">Найти</span>
</label>
<input type="text" id="searchinput-69fc91d05729169fc91d055d7c3" class="form-control withclear" placeholder="Найти" aria-label="Найти" name="q" data-region="input" autocomplete="off">
<a class="btn btn-close" data-action="closesearch" data-toggle="collapse" href="#searchform-navbar" role="button">
<i class="icon fa fa-times fa-fw " aria-hidden="true"></i>
<span class="sr-only">Закрыть</span>
</a>
<div class="input-group-append">
<button type="submit" class="btn btn-submit" data-action="submit">
<i class="icon fa fa-search fa-fw " aria-hidden="true"></i>
<span class="sr-only">Найти</span>
</button>
</div>
</div>
</form>
</div>
<a class="btn btn-open rounded-0 nav-link" data-toggle="collapse" data-action="opensearch" href="#searchform-navbar" role="button" aria-expanded="false" aria-controls="searchform-navbar" title="Изменить данные поисковой строки">
<i class="icon fa fa-search fa-fw " aria-hidden="true"></i>
<span class="sr-only">Изменить данные поисковой строки</span>
</a>
</div>
<div class="divider border-left h-75 align-self-center mx-1"></div>
<div class="langmenu">
<div class="dropdown show">
<a href="#" role="button" id="lang-menu-toggle" data-toggle="dropdown" aria-label="Язык" aria-haspopup="true" aria-controls="lang-action-menu" class="btn dropdown-toggle">
<i class="icon fa fa-language fa-fw mr-1" aria-hidden="true"></i>
<span class="langbutton">
Русский (ru)
</span>
<b class="caret"></b>
</a>
<div role="menu" aria-labelledby="lang-menu-toggle" id="lang-action-menu" class="dropdown-menu dropdown-menu-right">
<a href="#" class="dropdown-item pl-5" role="menuitem" aria-current="true">
Русский (ru)
</a>
<a href="https://sysahelper.ru/mod/page/view.php?id=780&amp;lang=en" class="dropdown-item pl-5" role="menuitem">
English (en)
</a>
</div>
</div>
</div>
<div class="divider border-left h-75 align-self-center mx-1"></div>
<div class="d-flex align-items-stretch usermenu-container" data-region="usermenu">
<div class="usermenu">
<span class="login pl-2">
Вы используете гостевой доступ
<div class="divider border-left h-75 align-self-center mx-2"></div>
<a href="https://sysahelper.ru/login/index.php">Вход</a>
</span>
</div>
</div>
</div>
</nav>
<div class="drawer drawer-left drawer-primary d-print-none" data-region="fixed-drawer" id="theme_moove-drawers-primary" data-preference="" data-state="show-drawer-primary" data-forceopen="0" data-close-on-resize="1" aria-hidden="true">
<div class="drawerheader">
<button class="btn drawertoggle icon-no-margin hidden" data-toggler="drawers" data-action="closedrawer" data-target="theme_moove-drawers-primary" data-toggle="tooltip" data-placement="right" title="Закрыть панель" data-aria-hidden-tab-index="" tabindex="-1">
<i class="icon fa fa-times fa-fw " aria-hidden="true"></i>
</button>
<div class="drawerheadercontent hidden">
</div>
</div>
<div class="drawercontent drag-container" data-usertour="scroller">
<div class="list-group">
<a href="https://sysahelper.ru/" class="list-group-item list-group-item-action " data-aria-hidden-tab-index="" tabindex="-1">
В начало
</a>
</div>
</div>
</div>
<div class="drawer drawer-left show d-print-none scrolled" data-region="fixed-drawer" id="theme_boost-drawers-courseindex" data-preference="drawer-open-index" data-state="show-drawer-left" data-forceopen="0" data-close-on-resize="0">
<div class="drawerheader">
<button class="btn drawertoggle icon-no-margin" data-toggler="drawers" data-action="closedrawer" data-target="theme_boost-drawers-courseindex" data-toggle="tooltip" data-placement="right" title="Закрыть оглавление курса">
<i class="icon fa fa-times fa-fw " aria-hidden="true"></i>
</button>
<div class="drawerheadercontent">
</div>
</div>
<div class="drawercontent drag-container" data-usertour="scroller">
<nav id="courseindex" class="courseindex">
<div id="courseindex-content">
<div id="course-index" class="courseindex " role="tree">
<div class="courseindex-section " id="course-index-section-568" data-for="section" data-id="568" data-number="0" role="treeitem" aria-owns="courseindexcollapse0" tabindex="0" aria-selected="true">
<div class="courseindex-item d-flex
courseindex-section-title" id="courseindexsection0" data-for="section_item" tabindex="-1">
<a data-toggle="collapse" href="#courseindexcollapse0" class="courseindex-chevron icons-collapse-expand " aria-expanded="true" aria-controls="courseindexcollapse0" tabindex="-1">
<span class="collapsed-icon icon-no-margin mr-1" title="Развернуть" tabindex="-1">
<span class="dir-rtl-hide" tabindex="-1"><i class="icon fa fa-chevron-right fa-fw " aria-hidden="true" tabindex="-1"></i></span>
<span class="dir-ltr-hide" tabindex="-1"><i class="icon fa fa-chevron-left fa-fw " aria-hidden="true" tabindex="-1"></i></span>
<span class="sr-only" tabindex="-1">Развернуть</span>
</span>
<span class="expanded-icon icon-no-margin mr-1" title="Свернуть" tabindex="-1">
<i class="icon fa fa-chevron-down fa-fw " aria-hidden="true" tabindex="-1"></i>
<span class="sr-only" tabindex="-1">Свернуть</span>
</span>
</a>
<a href="https://sysahelper.ru/course/view.php?id=43#section-0" class="courseindex-link text-truncate" data-action="togglecourseindexsection" data-for="section_title" tabindex="-1">
Общее
</a>
<span class="current-badge badge badge-primary ml-2 px-2 rounded-pill" tabindex="-1">
Выделено
</span>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</div>
<div id="courseindexcollapse0" class="courseindex-item-content collapse show" aria-labelledby="courseindexsection0" role="group" tabindex="-1">
<ul class="courseindex-sectioncontent unlist" data-for="cmlist" data-id="568" role="group" tabindex="-1">
<li class="courseindex-item
d-flex
" id="course-index-cm-701" data-for="cm" data-id="701" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/folder/view.php?id=701" data-for="cm_name" tabindex="-1">
Конкурсная документация (в исходном виде)
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
</ul>
</div>
</div>
<div class="courseindex-section " id="course-index-section-569" data-for="section" data-id="569" data-number="1" role="treeitem" aria-owns="courseindexcollapse1" tabindex="-1" aria-selected="false">
<div class="courseindex-item d-flex
courseindex-section-title" id="courseindexsection1" data-for="section_item" tabindex="-1">
<a data-toggle="collapse" href="#courseindexcollapse1" class="courseindex-chevron icons-collapse-expand " aria-expanded="true" aria-controls="courseindexcollapse1" tabindex="-1">
<span class="collapsed-icon icon-no-margin mr-1" title="Развернуть" tabindex="-1">
<span class="dir-rtl-hide" tabindex="-1"><i class="icon fa fa-chevron-right fa-fw " aria-hidden="true" tabindex="-1"></i></span>
<span class="dir-ltr-hide" tabindex="-1"><i class="icon fa fa-chevron-left fa-fw " aria-hidden="true" tabindex="-1"></i></span>
<span class="sr-only" tabindex="-1">Развернуть</span>
</span>
<span class="expanded-icon icon-no-margin mr-1" title="Свернуть" tabindex="-1">
<i class="icon fa fa-chevron-down fa-fw " aria-hidden="true" tabindex="-1"></i>
<span class="sr-only" tabindex="-1">Свернуть</span>
</span>
</a>
<a href="https://sysahelper.ru/course/view.php?id=43#section-1" class="courseindex-link text-truncate" data-action="togglecourseindexsection" data-for="section_title" tabindex="-1">
Модуль Б. Настройка технических и программных средств информационно-коммуникационных систем
</a>
<span class="current-badge badge badge-primary ml-2 px-2 rounded-pill" tabindex="-1">
Выделено
</span>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</div>
<div id="courseindexcollapse1" class="courseindex-item-content collapse show" aria-labelledby="courseindexsection1" role="group" tabindex="-1">
<ul class="courseindex-sectioncontent unlist" data-for="cmlist" data-id="569" role="group" tabindex="-1">
<li class="courseindex-item
d-flex
" id="course-index-cm-778" data-for="cm" data-id="778" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/url/view.php?id=778" data-for="cm_name" tabindex="-1">
Текст задание
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
" id="course-index-cm-704" data-for="cm" data-id="704" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=704" data-for="cm_name" tabindex="-1">
Виртуальный стенд
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
" id="course-index-cm-719" data-for="cm" data-id="719" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=719" data-for="cm_name" tabindex="-1">
Используемая таблица адресации
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
" id="course-index-cm-705" data-for="cm" data-id="705" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=705" data-for="cm_name" tabindex="-1">
Настройка виртуальной машины ISP
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-720" data-for="cm" data-id="720" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=720" data-for="cm_name" tabindex="-1">
1. Настройка имён и IP-адресации на устройствах&nbsp;rtr-cod и rtr-a
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-724" data-for="cm" data-id="724" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=724" data-for="cm_name" tabindex="-1">
2. Подход к настройке fw-cod
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-722" data-for="cm" data-id="722" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=722" data-for="cm_name" tabindex="-1">
3. Настройка маршрутизации BGP на rtr-cod
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-721" data-for="cm" data-id="721" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=721" data-for="cm_name" tabindex="-1">
4. Настройка туннелей между офисом «а» и «cod»
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-725" data-for="cm" data-id="725" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=725" data-for="cm_name" tabindex="-1">
5. Настройка доступа в Интернет
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-726" data-for="cm" data-id="726" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=726" data-for="cm_name" tabindex="-1">
6. Настройка динамической маршрутизации между офисом «a» и «cod»
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-727" data-for="cm" data-id="727" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=727" data-for="cm_name" tabindex="-1">
7. Настройка коммутации между sw1-a и sw2-a
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-728" data-for="cm" data-id="728" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=728" data-for="cm_name" tabindex="-1">
8. Настройка доступа к веб-интерфейсу fw-cod и лицензирование
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-729" data-for="cm" data-id="729" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=729" data-for="cm_name" tabindex="-1">
9. Создание интерфейсов типа VLAN на fw-cod для маршутизации между VLAN
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-730" data-for="cm" data-id="730" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=730" data-for="cm_name" tabindex="-1">
10. Настройка коммутации между sw1-cod и sw2-cod
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-731" data-for="cm" data-id="731" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=731" data-for="cm_name" tabindex="-1">
11. Настройка имён и IP-адресов на всех остальных устройствах
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-732" data-for="cm" data-id="732" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=732" data-for="cm_name" tabindex="-1">
12. Настройка административного доступа (RADIUS)
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-733" data-for="cm" data-id="733" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=733" data-for="cm_name" tabindex="-1">
13. Настройка синхронизации времени между сетевыми устройствами
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-734" data-for="cm" data-id="734" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=734" data-for="cm_name" tabindex="-1">
14. Настройка службы доменных имен в COD-е
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-735" data-for="cm" data-id="735" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=735" data-for="cm_name" tabindex="-1">
15. Развёртывание контроллера домена на базе SambaAD
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-736" data-for="cm" data-id="736" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=736" data-for="cm_name" tabindex="-1">
16. Настройка службы доменных имен в OFFICE
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-737" data-for="cm" data-id="737" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=737" data-for="cm_name" tabindex="-1">
17. Настройка центра сертификации
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-772" data-for="cm" data-id="772" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=772" data-for="cm_name" tabindex="-1">
18. Настройка сервера баз данных
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-773" data-for="cm" data-id="773" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=773" data-for="cm_name" tabindex="-1">
19. Настройка устройства хранения данных (iSCSI)
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-774" data-for="cm" data-id="774" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=774" data-for="cm_name" tabindex="-1">
20. Настройка устройства хранения данных (LVM)
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-775" data-for="cm" data-id="775" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=775" data-for="cm_name" tabindex="-1">
21. Настройка устройства хранения данных (NFS)
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-776" data-for="cm" data-id="776" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=776" data-for="cm_name" tabindex="-1">
22. Настройка системы мониторинга
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-777" data-for="cm" data-id="777" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=777" data-for="cm_name" tabindex="-1">
23. Настройка IP телефонии
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
</ul>
</div>
</div>
<div class="courseindex-section " id="course-index-section-570" data-for="section" data-id="570" data-number="2" role="treeitem" aria-owns="courseindexcollapse2" tabindex="-1" aria-selected="false">
<div class="courseindex-item d-flex
courseindex-section-title" id="courseindexsection2" data-for="section_item" tabindex="-1">
<a data-toggle="collapse" href="#courseindexcollapse2" class="courseindex-chevron icons-collapse-expand " aria-expanded="true" aria-controls="courseindexcollapse2" tabindex="-1">
<span class="collapsed-icon icon-no-margin mr-1" title="Развернуть" tabindex="-1">
<span class="dir-rtl-hide" tabindex="-1"><i class="icon fa fa-chevron-right fa-fw " aria-hidden="true" tabindex="-1"></i></span>
<span class="dir-ltr-hide" tabindex="-1"><i class="icon fa fa-chevron-left fa-fw " aria-hidden="true" tabindex="-1"></i></span>
<span class="sr-only" tabindex="-1">Развернуть</span>
</span>
<span class="expanded-icon icon-no-margin mr-1" title="Свернуть" tabindex="-1">
<i class="icon fa fa-chevron-down fa-fw " aria-hidden="true" tabindex="-1"></i>
<span class="sr-only" tabindex="-1">Свернуть</span>
</span>
</a>
<a href="https://sysahelper.ru/course/view.php?id=43#section-2" class="courseindex-link text-truncate" data-action="togglecourseindexsection" data-for="section_title" tabindex="-1">
Модуль В. Обеспечение отказоустойчивости
</a>
<span class="current-badge badge badge-primary ml-2 px-2 rounded-pill" tabindex="-1">
Выделено
</span>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</div>
<div id="courseindexcollapse2" class="courseindex-item-content collapse show" aria-labelledby="courseindexsection2" role="group" tabindex="-1">
<ul class="courseindex-sectioncontent unlist" data-for="cmlist" data-id="570" role="group" tabindex="-1">
<li class="courseindex-item
d-flex
" id="course-index-cm-779" data-for="cm" data-id="779" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=779" data-for="cm_name" tabindex="-1">
1. Подготовка машины Cloud-ADM
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-782" data-for="cm" data-id="782" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=782" data-for="cm_name" tabindex="-1">
1.1. Установка Terraform на Cloud-ADM
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-783" data-for="cm" data-id="783" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=783" data-for="cm_name" tabindex="-1">
1.2. Установка OpenStack CLI на Cloud-ADM
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
indented " id="course-index-cm-784" data-for="cm" data-id="784" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=784" data-for="cm_name" tabindex="-1">
1.3. Установка Ansible на Cloud-ADM
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item d-flex pageitem" id="course-index-cm-780" data-for="cm" data-id="780" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=780" data-for="cm_name" tabindex="-1">
2. Project_01
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
" id="course-index-cm-781" data-for="cm" data-id="781" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=781" data-for="cm_name" tabindex="-1">
3. Project_02
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
<li class="courseindex-item
d-flex
" id="course-index-cm-785" data-for="cm" data-id="785" role="treeitem" tabindex="-1" aria-selected="false">
<span class="completioninfo" data-for="cm_completion" data-value="NaN" tabindex="-1"></span>
<a class="courseindex-link text-truncate" href="https://sysahelper.ru/mod/page/view.php?id=785" data-for="cm_name" tabindex="-1">
3. Project_03
</a>
<span class="courseindex-locked ml-1" data-for="cm_name" tabindex="-1">
<i class="icon fa fa-lock fa-fw " aria-hidden="true" tabindex="-1"></i>
</span>
<span class="dragicon ml-auto" tabindex="-1"><i class="icon fa fa-arrows fa-fw " aria-hidden="true" tabindex="-1"></i></span>
</li>
</ul>
</div>
</div>
</div>
</div>
</nav>
</div>
</div>
<div id="page" data-region="mainpage" data-usertour="scroller" class="drawers show-drawer-left drag-container">
<header id="page-header" class="moove-container-fluid">
<div class="d-flex flex-wrap">
<div class="ml-auto d-flex">
</div>
<div id="course-header">
</div>
</div>
<div class="d-sm-flex align-items-center">
<div class="mr-auto">
<div class="page-context-header"><div class="page-header-image mr-2"><div class="content activityiconcontainer icon-size-6 modicon_page"><img class="icon activityicon " aria-hidden="true" src="REG26_%202.%20Project_01%20_%20sysahelper_files/monologo.svg" alt=""></div></div><div class="page-header-headings"><h1 class="h2">2. Project_01</h1></div></div>
</div>
<div class="header-actions-container ml-auto" data-region="header-actions-container">
</div>
<div class="d-none d-md-block" id="page-navbar">
<nav aria-label="Панель навигации">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="https://sysahelper.ru/course/view.php?id=43#section-2" title="REGION2026">REG26</a>
</li>
<li class="breadcrumb-item"><span>2. Project_01</span></li>
</ol>
</nav>
</div>
</div>
</header>
<div id="topofscroll" class="main-inner">
<div class="drawer-toggles d-flex">
<div class="drawer-toggler drawer-left-toggle open-nav d-print-none">
<button class="btn icon-no-margin" data-toggler="drawers" data-action="toggle" data-target="theme_boost-drawers-courseindex" data-toggle="tooltip" data-placement="right" title="Открыть оглавление курса">
<span class="sr-only">Открыть оглавление курса</span>
<i class="icon fa fa-list fa-fw " aria-hidden="true"></i>
</button>
</div>
</div>
<div id="page-content" class="d-print-block">
<div id="region-main-box">
<section id="region-main" aria-label="Содержимое">
<span class="notifications" id="user-notifications"></span>
<span id="maincontent"></span>
<div class="activity-header" data-for="page-activity-header">
<span class="sr-only">Требуемые условия завершения</span>
<div data-region="activity-information" data-activityname="2. Project_01" class="activity-information">
</div>
</div>
<div role="main"><div class="box py-3 generalbox center clearfix"><div class="no-overflow"><h3>Задание:</h3>
<p>a. &nbsp; &nbsp;На виртуальной машине Cloud-ADM создайте скрипт «deploy_project_01.sh».</p>
<p>b. &nbsp; &nbsp;В качестве домашней директории используйте путь /home/altlinux/Projects/Project_01.</p>
<p>c. &nbsp; &nbsp;Скрипт должен реализовывать следующий функционал:</p>
<ol>
<li>Автоматическое развёртывание виртуальных машин в соответствие с топологией (см. Топология Project_01).</li>
<li>Характеристики виртуальных машин: 1vCPU, 1 ГБ ОЗУ, 10 ГБ размер диска.</li>
<li>Образ операционной системы: alt-p11-cloud-x86_64.qcow2.</li>
<li>Для виртуальной машины haproxy01 должен создаваться и ассоциироваться Плавающий-IP.</li>
</ol>
<p>d. &nbsp; &nbsp;На виртуальной машине Cloud-ADM создайте скрипт «configure_project_01.sh».</p>
<p>e. &nbsp; &nbsp;В качестве домашней директории используйте путь /home/altlinux/Projects/Project_01.</p>
<p>f. &nbsp; &nbsp;Скрипт должен реализовывать следующий функционал:</p>
<ol>
<li>Установку необходимых компонентов для запуска приложения (см.
Приложение Project_01) на виртуальных машинах: game01, game02, game03 в
виде Docker-контейнеров.</li>
<li>Образ приложения нужно сделать легковесным через мультистейджинг.</li>
<li>На виртуальной машине haproxy01 настройку распределения входящих запросов через haproxy.</li>
<li>Настройку доступа к просмотру собранной статистики в веб-интерфейсе с
виртуальной машины Cloud-ADM по haproxy01.dev.au.team /haproxy?stats</li>
<li>Приложение должно быть доступно &nbsp;с виртуальной машины Cloud-ADM
из веб-браузера по именам: game01.dev.au.team, game02.dev.au.team и
game03.dev.au.team на 80 порту.</li>
<li>Приложение должно быть доступно из вне по Плавающему-IP виртуальной машины haproxy01 на порту 443.</li>
<li>С виртуальной машины Cloud-ADM доступ к приложению должен быть по <a href="https://game.au.team/" class="_blanktarget">https://game.au.team</a>.</li>
<li>Проблем с сертификатом возникать недолжно.</li>
</ol>
<p>g. &nbsp; &nbsp;На виртуальной машине Cloud-ADM создайте скрипт «destroy_project_01.sh».</p>
<p>h. &nbsp; &nbsp;В качестве домашней директории используйте путь /home/altlinux/Projects/Project_01.</p>
<p>i. &nbsp; &nbsp;Скрипт должен реализовывать следующий функционал:</p>
<ol>
<li>Удалять все автоматически созданные ресурсы через скрипт deploy_project_01.sh.</li>
<li>Если скрипт destroy_project_01.sh не реализован, участник не получит
баллов за данный пункт задания, а эксперты вручную выполнят удаление
ресурсов.</li>
</ol>
<h3>Вариант реализации:</h3>
<h3>Cloud-ADM:</h3>
<h4>Все последующие действия выполняются из-под пользователя&nbsp;<strong>altlinux</strong> (не root)</h4>
<ul>
<li>Создаём директорию&nbsp;<strong>/home/altlinux/Projects/Project_01</strong>:</li>
</ul>
<pre class="language-markup"><code>mkdir -p /home/altlinux/Projects/Project_01</code></pre>
<ul>
<li>Для скрипта&nbsp;<strong>deploy_project_01.sh</strong> будет использоваться&nbsp;<strong>Terraform</strong></li>
<li>Создадим директорию&nbsp;<strong>terraform</strong> в ранее созданной директории для&nbsp;<strong>Project_01:</strong></li>
</ul>
<pre class="language-markup"><code>mkdir /home/altlinux/Projects/Project_01/terraform</code></pre>
<ul>
<li>Перейдём в директорию <strong>/home/altlinux/Projects/</strong>:</li>
</ul>
<pre class="language-markup"><code>cd /home/altlinux/Projects/</code></pre>
<ul>
<li>Создадим файл с именем <strong>cloudinit.conf</strong> (имя произвольное) и поместим в него следующее содержимое:
<ul>
<li>указав переменные окружения для работы <strong>OpenStack CLI</strong> с API облака</li>
<li>в данном конкретном примере подразумевается что у участника:
<ol>
<li>Внешний доступ к панели самообслуживания: <strong><a href="https://cyberinfra.ssa2026.region:8800/" class="_blanktarget">https://cyberinfra.ssa2026.region:8800</a></strong></li>
<li>Домен:&nbsp;<strong>Competence_SiSA</strong></li>
<li>Проект:&nbsp;<strong>Project0</strong></li>
<li>Учётная запись:&nbsp;<strong>User0</strong></li>
<li>Пароль от уч.записи:&nbsp;<strong>P@ssw0rd</strong></li>
</ol>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>export OS_AUTH_URL=<a href="https://cyberinfra.ssa2026.region:5000/v3" class="_blanktarget">https://cyberinfra.ssa2026.region:5000/v3</a>
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_TYPE=password
export OS_PROJECT_DOMAIN_NAME=Competence_SiSA
export OS_USER_DOMAIN_NAME=Competence_SiSA
export OS_PROJECT_NAME=Project0
export OS_USERNAME=User0
export OS_PASSWORD=P@ssw0rd</code></pre>
<ul id="yui_3_18_1_1_1763979499685_219">
<li id="yui_3_18_1_1_1763979499685_218">Применяем переменные окружения указанные в файле</li>
</ul>
<pre id="yui_3_18_1_1_1763979499685_215" class="language-markup"><code>source cloudinit.conf</code></pre>
<ul>
<li>Проверяем возможность взаимодействовать чере&nbsp;<strong>openstack-cli</strong> с облаком:
<ul>
<li>например, выведем список инстансов командой&nbsp;<strong>openstack --insecure server list</strong>:</li>
</ul>
</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image.png"></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>&nbsp;или сетей командой <strong>openstack --insecure network list</strong>:</li>
</ul>
</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(1).png"></p>
<ul>
<li>Для корректной работы с <strong>Terraform</strong>, необходимо создадать файл конфигурации зеркала</li>
<li id="yui_3_18_1_1_1763979499685_252">Файл должен иметь имя&nbsp;<strong>.terraformrc</strong> ибыть расположен в домашнем каталоге пользователя</li>
<li>Файл <strong>~/.terraformrc</strong>&nbsp;должен содержать в себе следующее:</li>
</ul>
<pre id="yui_3_18_1_1_1763979499685_255" class="language-markup"><code>provider_installation {
network_mirror {
url = "<a href="https://terraform-mirror.mcs.mail.ru/" class="_blanktarget">https://terraform-mirror.mcs.mail.ru</a>"
include = ["registry.terraform.io/*/*"]
}
direct {
exclude = ["registry.terraform.io/*/*"]
}
}</code></pre>
<ul>
<li>Перейдём в директорию <strong>Project_01/terraform/</strong>:</li>
</ul>
<pre class="language-markup"><code>cd Project_01/terraform/</code></pre>
<ul>
<li>Создадим файл&nbsp;<strong>provider.tf</strong>&nbsp;и опишем параметры для подключения к провайдеру&nbsp;<strong>openstack</strong> для работы с облаком:
<ul>
<li>в данном конкретном примере подразумевается что у участника:
<ol>
<li>Внешний доступ к панели самообслуживания: <strong><a href="https://cyberinfra.ssa2026.region:8800/" class="_blanktarget">https://cyberinfra.ssa2026.region:8800</a></strong></li>
<li>Домен:&nbsp;<strong>Competence_SiSA</strong></li>
<li>Проект:&nbsp;<strong>Project0</strong></li>
<li>Учётная запись:&nbsp;<strong>User0</strong></li>
<li>Пароль от уч.записи:&nbsp;<strong>P@ssw0rd</strong></li>
</ol>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "2.1.0"
}
}
}
provider "openstack" {
auth_url = "<a href="https://cyberinfra.ssa2026.region:5000/v3" class="_blanktarget">https://cyberinfra.ssa2026.region:5000/v3</a>"
tenant_name = "Project0"
user_name = "User0"
password = "P@ssw0rd"
insecure = true
}</code></pre>
<ul>
<li>Инициализируем текущий каталог для работы с&nbsp;<strong>terraform</strong>&nbsp;и провайдером&nbsp;<strong>openstack</strong>:</li>
</ul>
<pre class="language-markup"><code>terraform init</code></pre>
<ul>
<li>Результат успешной инициализации&nbsp;<strong>Terraform</strong> провайдера:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(2).png"></p>
<ul>
<li>Чтобы с инстанса&nbsp;<strong>Cloud-ADM</strong> был доступ по SSH (для Ansible) до всех создаваемых инстансов (средствами Terraform), будет использоваться файл <strong>cloud-init.yml</strong></li>
<li>Создадим ключевую пару:</li>
</ul>
<pre class="language-markup"><code>ssh-keygen -t rsa</code></pre>
<ul>
<li>Поместим содержимое публичного ключа&nbsp;<strong>(id_rsa.pub</strong>) в файл <strong>cloud-init.yml</strong>:</li>
</ul>
<pre class="language-markup"><code>cat ~/.ssh/id_rsa.pub &gt; cloud-init.yml</code></pre>
<ul>
<li>Откроем файл&nbsp;<strong>cloud-init.yml</strong> на редактирование и добавим в самое начало (до содержимого ключа ssh):
<ul>
<li>таким образом, на создаваемых в дальнейшем интстансах будут:<br>
<ul>
<li>создан пользователь&nbsp;<strong>altlinux</strong> с паролем&nbsp;<strong>P@ssw0rd;</strong></li>
<li>задан для суперпользователя&nbsp;<strong>root</strong> пароль&nbsp;<strong>toor</strong>;</li>
<li>передан публичный SSH-ключ&nbsp;<strong>Cloud-ADM</strong>.</li>
</ul>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>#cloud-config
chpasswd:
expire: false
users:
- {name: altlinux, password: P@ssw0rd, type: text}
- {name: root, password: toor, type: text}
ssh_pwauth: false
users:
- name: altlinux
sudo: ALL=(ALL) NOPASSWD:ALL
groups: wheel
shell: /bin/bash
ssh_authorized_keys:
- &lt;СОДЕРЖИМОЕУБЛИЧНОГО_КЛЮЧА_SSH&gt;</code></pre>
<ul>
<li>Создадим файл&nbsp;<strong>vm-game.tf</strong> и опишем конфигурацию для создаваемых инстансов&nbsp;<strong>game01, game02&nbsp;</strong>и&nbsp;<strong>game03</strong>:
<ul>
<li>для минимального написания строк кода (время на выполнения задания не резиновое, <span style="text-decoration: underline;"><strong>хардкод приветствуется</strong></span>, данный модуль не проверяет применение лучших практик для автоматизации):&nbsp;
<ol>
<li>используем цикл по счётчику&nbsp;<strong>count</strong>;</li>
<li>избавляемся от параметризации с использованием переменных (хардкодим все значения в данный файл).</li>
<li>значение для параметра&nbsp;<strong>flavor_id</strong> можно узнать используя команду <strong>openstack --insecure flavor list</strong> скопировав&nbsp;<strong>ID</strong> Типа ВМ с&nbsp;<strong>1024 RAM&nbsp;</strong>и&nbsp;<strong>1 VCPUs</strong>;</li>
<li>значение для параметра&nbsp;<strong>uuid</strong> можно узнать используя команду&nbsp;<strong>openstack --insecure image list</strong> скопировав&nbsp;<strong>ID&nbsp;</strong>образа&nbsp;<strong>alt-p11-cloud-x86_64.qcow2</strong>.</li>
</ol>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>resource "openstack_compute_instance_v2" "game" {
count = "3"
name = "game0${count.index + 1}"
flavor_id = "03bf1b85-2f5f-4ada-a07b-8b994b6dcb57"
user_data = file("cloud-init.yml")
block_device {
uuid = "827e08fa-fd3c-41cd-92ca-845bb5018478"
source_type = "image"
volume_size = "10"
boot_index = 0
destination_type = "volume"
delete_on_termination = true
}
network {
port = openstack_networking_port_v2.port_vm_game[count.index].id
}
}</code></pre>
<ul>
<li>Создадим файл <strong>vm-haproxy01.tf</strong> и опишем конфигурацию для создаваемого инстанса <strong>haproxy01</strong>:
<ul>
<li>значение для параметра&nbsp;<strong style="text-align: initial;">flavor_id</strong><span style="text-align: initial;"> можно узнать используя команду </span><strong style="text-align: initial;">openstack --insecure flavor list</strong><span style="text-align: initial;"> скопировав&nbsp;</span><strong style="text-align: initial;">ID</strong><span style="text-align: initial;"> Типа ВМ с&nbsp;</span><strong style="text-align: initial;">1024 RAM&nbsp;</strong><span style="text-align: initial;">и&nbsp;</span><strong style="text-align: initial;">1 VCPUs</strong><span style="text-align: initial;">;</span></li>
<li>значение для параметра <strong>uuid</strong> можно узнать используя команду&nbsp;<strong>openstack --insecure image list</strong> скопировав&nbsp;<strong>ID&nbsp;</strong>образа&nbsp;<strong>alt-p11-cloud-x86_64.qcow2</strong>.</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>resource "openstack_compute_instance_v2" "haproxy" {
name = "haproxy01"
flavor_id = "03bf1b85-2f5f-4ada-a07b-8b994b6dcb57"
user_data = file("cloud-init.yml")
block_device {
uuid = "827e08fa-fd3c-41cd-92ca-845bb5018478"
source_type = "image"
volume_size = "10"
boot_index = 0
destination_type = "volume"
delete_on_termination = true
}
network {
port = openstack_networking_port_v2.haproxy.id
}
}</code></pre>
<ul>
<li>Создадим файл <strong>network.tf</strong> и опишем конфигурацию сети в соответствие с топологией для <strong>Project_01</strong>:
<ul>
<li>значение для параметра&nbsp;<strong style="text-align: initial;">network_id</strong><span style="text-align: initial;"> можно узнать используя команду <strong>openstack --insecure network list</strong></span><span style="text-align: initial;">&nbsp;скопировав&nbsp;</span><strong style="text-align: initial;">ID</strong><span style="text-align: initial;"> виртуальной сети с именем&nbsp;<strong>cloud-net</strong></span><span style="text-align: initial;">;</span></li>
<li>значение для параметра&nbsp;<strong style="text-align: initial;">subnet_id</strong><span style="text-align: initial;"> можно узнать используя команду <strong>openstack --insecure subnet list</strong></span><span style="text-align: initial;">&nbsp;скопировав&nbsp;</span><strong style="text-align: initial;">ID</strong><span style="text-align: initial;"> виртуальной подсети <strong>192.168.1.0/24</strong></span><span style="text-align: initial;">;</span></li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>resource "openstack_networking_port_v2" "port_vm_game" {
count = "3"
name = "port_vm_game0${count.index + 1}"
network_id = "61845892-f9cc-4fde-962c-34b59425a74d"
admin_state_up = true
fixed_ip {
subnet_id = "13592ca4-8782-410b-9bcc-90810ccab6fe"
ip_address = "192.168.1.10${count.index + 1}"
}
}
resource "openstack_networking_port_v2" "haproxy" {
name = "port_vm_haproxy"
network_id = "61845892-f9cc-4fde-962c-34b59425a74d"
admin_state_up = true
fixed_ip {
subnet_id = "13592ca4-8782-410b-9bcc-90810ccab6fe"
ip_address = "192.168.1.100"
}
}</code></pre>
<ul>
<li>Создадим файл <strong>floatingip.tf</strong> и опишем конфигурацию Плавающего IP-адреса в соответствие с топологией для <strong>Project_01</strong>:</li>
</ul>
<pre class="language-markup"><code>resource "openstack_networking_floatingip_v2" "floatingip_haproxy" {
pool = "public"
}
resource "openstack_networking_floatingip_associate_v2" "association_haproxy" {
port_id = openstack_networking_port_v2.haproxy.id
floating_ip = openstack_networking_floatingip_v2.floatingip_haproxy.address
}</code></pre>
<ul>
<li>Выполняем проверку синтаксиса и структуры файлов конфигурации <strong>Terraform</strong>:</li>
</ul>
<pre class="language-markup"><code>terraform validate</code></pre>
<ul>
<li>Результат:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(3).png"></p>
<ul>
<li>Перейдём в директорию&nbsp;<strong>/home/altlinux/Projects/Project_01</strong>:</li>
</ul>
<pre class="language-markup"><code>cd /home/altlinux/Projects/Project_01</code></pre>
<ul>
<li>Создадим файл&nbsp;<strong>deploy_project_01.sh</strong> и укажем инструкции необходимые для запуска&nbsp;<strong>Terraform</strong>:</li>
</ul>
<pre class="language-markup"><code>#!/bin/bash
cd /home/$USER/Projects
source cloudinit.conf
cd /home/$USER/Projects/Project_01/terraform
terraform init
terraform apply -auto-approve
sleep 60
echo "done"</code></pre>
<ul>
<li>Выдать права на исполнение для файла <strong>deploy_project_01.sh</strong>:</li>
</ul>
<pre class="language-markup"><code>chmod +x deploy_project_01.sh</code></pre>
<ul>
<li>Запустить скрипт на исполнение:</li>
</ul>
<pre class="language-markup"><code>./deploy_project_01.sh</code></pre>
<ul>
<li>Результат:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(4).png"></p>
<ul>
<li>Проверить автоматически созданные инстансы в облаке:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(5).png" width="1201" height="432"></p>
<ul>
<li>Проверить Плавающий IP-адрес для инстанса&nbsp;<strong>haproxy01</strong>:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(6).png" width="1200" height="298"></p>
<ul>
<li>Поскольку IP-адресация задаётся статическая, то для удобства работы редактируем конфигурационный файл&nbsp;<strong>/etc/hosts</strong>:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(7).png"></p>
<ul>
<li>Создадим директорию&nbsp;<strong>ansible</strong> в ранее созданной директории для&nbsp;<strong>Project_01:</strong></li>
</ul>
<pre class="language-markup"><code>mkdir /home/altlinux/Projects/Project_01/ansible</code></pre>
<ul>
<li>Перейдём в директорию <strong>/home/altlinux/Projects/Project_01/ansible</strong>:</li>
</ul>
<pre class="language-markup"><code>cd /home/altlinux/Projects/Project_01/ansible</code></pre>
<ul>
<li>Создадим файл конфигурации&nbsp;<strong>ansible.cfg&nbsp;</strong>поместим в него следующее содержимое:</li>
</ul>
<pre class="language-markup"><code>[defaults]
inventory = ./inventory.yml
host_key_checking = False
callback_enabled = profile_tasks
callback_whitelist = profile_tasks</code></pre>
<ul>
<li>Создадим файл <strong>inventory.yml</strong> и опишем файл инвентаря для&nbsp;<strong>Ansible</strong>:
<ul>
<li>описав 2 группы хостов с именами&nbsp;<strong>proxys</strong> и&nbsp;<strong>games</strong>:
<ul>
<li>группа&nbsp;<strong>proxys</strong> содержит в себе инстанс <strong>haproxy01</strong>;</li>
<li>группа&nbsp;<strong>games</strong> содержит в себе инстансы&nbsp;<strong>game01, game02&nbsp;</strong>и&nbsp;<strong>game03;</strong></li>
</ul>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>all:
children:
proxys:
hosts:
haproxy01:
games:
hosts:
game01:
game02:
game03:</code></pre>
<ul>
<li>Создадим директорию&nbsp;<strong>group_vars</strong>&nbsp;где будем создавать файлы с переменными для групп хостов:</li>
</ul>
<pre class="language-markup"><code>mkdir group_vars</code></pre>
<ul>
<li>Создадим файл '<strong>all.yml</strong>' в директории&nbsp;<strong>group_vars</strong>:</li>
</ul>
<pre class="language-markup"><code>---
ansible_python_interpreter: /usr/bin/python3
ansible_ssh_user: altlinux
ansible_ssh_private_key_file: ~/.ssh/id_rsa</code></pre>
<ul>
<li>Проверяем возможность&nbsp;<strong>ansible</strong>&nbsp;подключиться к инстансам описанным в инвентарном файле:</li>
</ul>
<pre class="language-markup"><code>ansible -m ping all</code></pre>
<ul>
<li>Результат:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(8).png"></p>
<ul>
<li>Скачиваем любым способом файлы <a href="https://disk.yandex.ru/d/uhpN6U6UYRK_Nw" target="_blank" rel="noopener">https://disk.yandex.ru/d/uhpN6U6UYRK_Nw</a> (у приложения есть README от программиста-разработчика)</li>
<li>Распаковываем архив в директорию <strong>/home/altlinux/Projects/Project_01/2048-game/</strong>:</li>
</ul>
<pre class="language-markup"><code>unzip ~/Project_01.zip -d /home/altlinux/Projects/Project_01/2048-game/</code></pre>
<ul>
<li>В директории&nbsp;<strong>/home/altlinux/Projects/Project_01/ansible</strong> создаём файл&nbsp;<strong>Dockerfile</strong>:
<ul>
<li>образ приложения нужно сделать легковесным через мультистейджинг</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>FROM node:16-alpine AS builder
WORKDIR /2048-game
COPY package*.json ./
RUN npm install --include=dev
COPY . .
RUN npm run build
EXPOSE 8080
FROM nginx:stable-alpine3.19
COPY --from=builder /2048-game/dist /usr/share/nginx/html</code></pre>
<ul>
<li>В директории&nbsp;<strong>/home/altlinux/Projects/Project_01/ansible</strong> создаём файл <strong>games_playbook.yml</strong>:
<ul>
<li>таким образом, на группе хостов&nbsp;<strong>games</strong> (на инстансах: <strong>game01, game02</strong> и&nbsp;<strong>game03</strong>) будет настроено:
<ol>
<li>Установлены пакеты: <strong>docker-engine</strong> и <strong>docker-buildx</strong>;</li>
<li>Запущена и добавлена в автозагрузку служба&nbsp;<strong>docker</strong>;</li>
<li>Скопированы все файлы с&nbsp;<strong>Cloud-ADM</strong> на удалённые хосты, необходимые для приложения;</li>
<li>Скопирован с&nbsp;<strong>Cloud-ADM</strong> на удалённые хосты файл&nbsp;<strong>Dockerfile</strong>;</li>
<li>На удалённых хостах выполнена локальная сборка образа для приложения;</li>
<li>На удалённых хостав выполнен запуск контейнеров с веб-приложением.</li>
</ol>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>---
- hosts: games
become: true
tasks:
- name: Install docker
community.general.apt_rpm:
name:
- docker-engine
- docker-buildx
state: present
update_cache: true
- name: Started and enabled docker
ansible.builtin.systemd:
name: docker
state: started
enabled: true
- name: Copying the project files
ansible.builtin.copy:
src: ../2048-game/
dest: "/home/{{ ansible_ssh_user }}/2048-game/"
- name: Copying the Dockerfile
ansible.builtin.copy:
src: ./Dockerfile
dest: "/home/{{ ansible_ssh_user }}/2048-game/"
- name: Build docker image
community.docker.docker_image_build:
name: "2048-game"
tag: latest
path: "/home/{{ ansible_ssh_user }}/2048-game/"
dockerfile: Dockerfile
- name: Start docker container
community.docker.docker_container:
name: "2048-game"
image: "2048-game"
ports: "80:80"
state: started
restart: true</code></pre>
<ul>
<li>На текущем этап можно выполнить тестовый запуск созданного playbook-а <strong>games_playbook.yml</strong>:</li>
</ul>
<pre class="language-markup"><code>ansible-playbook games_playbook.yml</code></pre>
<ul>
<li>Результат:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(9).png"></p>
<ul>
<li>Таким образом при обращении в браузере с&nbsp;<strong>Cloud-ADM</strong> по описанным ниже url должно открываться веб-приложение:
<ul>
<li style="font-weight: bold;"><strong>game01.dev.au.team:</strong></li>
</ul>
</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(10).png"></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li style="font-weight: bold;"><strong>game02.dev.au.team:</strong></li>
</ul>
</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(11).png"></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li style="font-weight: bold;"><strong>game03.dev.au.team:</strong></li>
</ul>
</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(12).png"></p>
<ul>
<li>В директории&nbsp;<strong>/home/altlinux/Projects/Project_01/ansible</strong> создаём директорию&nbsp;<strong>files</strong>:</li>
</ul>
<pre class="language-markup"><code>mkdir files</code></pre>
<ul>
<li>В директории&nbsp;<strong>/home/altlinux/Projects/Project_01/ansible/files</strong> создаём конфигурационный файл&nbsp;<strong>haproxy.cfg</strong>
<ul>
<li>в данном файле стандартное содержимое&nbsp;<strong>haproxy.cfg</strong> за исключением блока&nbsp;<strong>frontend</strong> и&nbsp;<strong>backend</strong> для реализации необходимого функционала
<ul>
<li>для удобства можно найти конфигаруционный файл в сети Интернет;</li>
<li>или же выполнить установку пакета&nbsp;<strong>haproxy</strong> и забрать его из директории&nbsp;<strong>/etc/haproxy/haproxy.cfg</strong> (т.к. инстанс <strong>haproxy01</strong>&nbsp;в любом случае будет удалён).</li>
</ul>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>global
log /dev/log daemon
chroot /var/lib/haproxy
pidfile /run/haproxy.pid
maxconn 4000
user _haproxy
group _haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend http_front
bind *:80
bind *:443 ssl crt /var/lib/ssl/game.pem
default_backend http_back
backend http_back
balance roundrobin
server game01 192.168.1.101:80 check
server game02 192.168.1.102:80 check
server game03 192.168.1.103:80 check
listen stats
bind :80
bind *:443 ssl crt /var/lib/ssl/game.pem
stats enable
stats uri /
stats refresh 5s
stats realm Haproxy\ Stats</code></pre>
<ul>
<li>Средствами утилиты&nbsp;<strong>openssl</strong>&nbsp;разворачиваем свой Удостоверяющий Центр сертификатов:</li>
</ul>
<pre class="language-markup"><code>openssl req -x509 -sha256 -days 3653 -newkey rsa:2048 -keyout ca.key -out ca.crt</code></pre>
<ul>
<li>Результат:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(13).png"></p>
<ul>
<li>Добавляем корневой сертификат в хранилище на&nbsp;<strong>Cloud-ADM</strong>:</li>
</ul>
<pre id="yui_3_18_1_1_1764049198937_42" class="language-markup"><code>sudo cp ca.crt /etc/pki/ca-trust/source/anchors/ &amp;&amp; sudo update-ca-trust</code></pre>
<ul>
<li>Перемещаем файлы сертификатов в директорию <strong>files</strong>:</li>
</ul>
<pre id="yui_3_18_1_1_1764049198937_40" class="language-markup"><code>mv ca.* files/</code></pre>
<ul>
<li>Генерируем ключи, запросы и сертификаты для веб:
<ul>
<li>Ключ:</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>openssl genrsa -out files/game.key 2048</code></pre>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Запрос:</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>openssl req -key files/game.key -new -out files/game.csr</code></pre>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Результат:</li>
</ul>
</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(14).png"></p>
<ul>
<li>Файл с расширениями для сертификата:</li>
</ul>
<pre id="yui_3_18_1_1_1764049198937_45" class="language-markup"><code>cat &lt;&lt;EOF &gt; files/game.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName=@alt_names
[alt_names]
DNS.1=game.au.team
IP.1=192.168.1.100
EOF</code></pre>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Выпускаем сертификат:</li>
</ul>
</li>
</ul>
<pre id="yui_3_18_1_1_1764049198937_46" class="language-markup"><code>openssl x509 -req -CA files/ca.crt -CAkey files/ca.key -in files/game.csr -out files/game.crt -days 365 -CAcreateserial -extfile files/game.ext</code></pre>
<ul>
<li>Создаём цепочку для haproxy:</li>
</ul>
<pre class="language-markup"><code>cat files/game.key files/game.crt &gt; files/game.pem</code></pre>
<ul>
<li>В директории&nbsp;<strong>/home/altlinux/Projects/Project_01/ansible</strong> создаём файл&nbsp;<strong>proxys_playbook.yml</strong>:
<ul>
<li>таким образом, на группе хостов&nbsp;<strong>games</strong> (на инстансах: <strong>game01, game02</strong> и&nbsp;<strong>game03</strong>) будет настроено:
<ol>
<li>Установлен пакет&nbsp;<strong>haproxy</strong>;</li>
<li>Скопирован с&nbsp;<strong>Cloud-ADM</strong> на удалённый хост файл&nbsp;<strong>haproxy.cfg</strong>;</li>
<li>Скопирован с&nbsp;<strong>CloudpADM</strong> на удалённый хост файл&nbsp;<strong>game.pem</strong>;</li>
<li>Включена и добавлена в автозагрузку служба&nbsp;<strong>haproxy</strong>.</li>
</ol>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>---
- hosts: proxys
become: true
tasks:
- name: Install HAProxy
community.general.apt_rpm:
name: haproxy
state: present
update_cache: true
- name: Copy file 'haproxy.cfg'
ansible.builtin.copy:
src: files/haproxy.cfg
dest: /etc/haproxy/haproxy.cfg
notify:
- Restarted HAProxy
- name: Copy certificate for HAProxy
ansible.builtin.copy:
src: files/game.pem
dest: /var/lib/ssl/game.pem
notify:
- Restarted HAProxy
- name: Started and enabled HAProxy
ansible.builtin.systemd:
name: haproxy
state: restarted
enabled: true
handlers:
- name: Restarted HAProxy
ansible.builtin.systemd:
name: haproxy
state: restarted</code></pre>
<ul>
<li>На текущем этап можно выполнить тестовый запуск созданного playbook-а <strong>proxys_playbook.yml</strong>:</li>
</ul>
<pre class="language-markup"><code>ansible-playbook proxys_playbook.yml</code></pre>
<ul>
<li>Результат:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(15).png"></p>
<ul>
<li>Таким образом при обращении в браузере с&nbsp;<strong>Cloud-ADM</strong> по описанным ниже url должно открываться веб-приложение:
<ul>
<li><strong><a href="https://game.au.team/" class="_blanktarget">https://game.au.team</a></strong> (в файле /etc/hosts должна быть добавлена запись):</li>
</ul>
</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(16).png"></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>haproxy01.dev.au.team /haproxy?stats</li>
</ul>
</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(17).png" width="1199" height="734"></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Плавающий IP-адрес:</li>
</ul>
</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(18).png" width="1200" height="338"></p>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(19).png"></p>
<ul>
<li>Перейдём в директорию&nbsp;<strong>/home/altlinux/Projects/Project_01</strong>:</li>
</ul>
<pre class="language-markup"><code>cd /home/altlinux/Projects/Project_01</code></pre>
<ul>
<li>Создадим файл <strong>configure_project_01.sh</strong> и укажем инструкции необходимые для запуска&nbsp;<strong>Ansible</strong>:</li>
</ul>
<pre class="language-markup"><code>#!/bin/bash
export PATH=/home/altlinux/.local/bin:$PATH
cd /home/$USER/Projects/Project_01/ansible
sleep 10
ansible-playbook games_playbook.yml
sleep 5
ansible-playbook proxys_playbook.yml</code></pre>
<ul>
<li>Выдать права на исполнение для файла <strong>configure_project_01</strong><strong>.sh</strong>:</li>
</ul>
<pre class="language-markup"><code>chmod +x configure_project_01.sh</code></pre>
<ul>
<li>Запустить скрипт на исполнение:</li>
</ul>
<pre class="language-markup"><code>./configure_project_01.sh</code></pre>
<ul>
<li>Создадим файл <strong>destroy_project_01.sh</strong> и укажем инструкции необходимые для запуска&nbsp;<strong>Ansible</strong>:</li>
</ul>
<pre class="language-markup"><code>#!/bin/bash
cd /home/$USER/Projects
source cloudinit.conf
cd /home/$USER/Projects/Project_01/terraform
terraform destroy -auto-approve
rm -f ~/.ssh/known_hosts
echo "done"</code></pre>
<ul>
<li>Выдать права на исполнение для файла <strong>destroy_project_01.sh</strong>:</li>
</ul>
<pre class="language-markup"><code>chmod +x destroy_project_01.sh</code></pre>
<ul>
<li>Запустить скрипт на исполнение:</li>
</ul>
<pre class="language-markup"><code>./destroy_project_01.sh</code></pre>
<ul>
<li>Результат:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(20).png"></p>
<ul>
<li>Таким образом, структура для&nbsp;<strong>Project01</strong> получилась следующая:</li>
</ul>
<p><img src="REG26_%202.%20Project_01%20_%20sysahelper_files/image%20(22).png"></p></div></div><div class="modified">Последнее изменение: вторник, 2 декабря 2025, 14:24</div></div>
</section>
</div>
</div>
</div>
<div class="moove-container-fluid p-0 mb-4">
<div class="card activity-navigation mdl-bottom">
<div class="card-body">
<div class="row">
<div class="col-md-4"> <div id="prev-activity">
<div class="larrow">
<i class="icon-arrow-left"></i>
</div>
<div class="text">
<span class="nav-guide">
Предыдущий элемент курса
</span>
<a href="https://sysahelper.ru/mod/page/view.php?id=784&amp;forceview=1" id="prev-activity-link" class="btn btn-link">1.3. Установка Ansible на Cloud-ADM</a>
</div>
</div>
</div>
<div class="col-md-4"> <div class="mdl-align">
<div class="urlselect">
<form method="post" action="https://sysahelper.ru/course/jumpto.php" class="form-inline" id="url_select_f69fc91d055d7c4">
<input type="hidden" name="sesskey" value="I78ejZljGV">
<label for="jump-to-activity" class="sr-only">
Перейти на...
</label>
<select id="jump-to-activity" class="custom-select urlselect" name="jump">
<option value="" selected="selected">Перейти на...</option>
<option value="/mod/folder/view.php?id=701&amp;forceview=1">Конкурсная документация (в исходном виде)</option>
<option value="/mod/url/view.php?id=778&amp;forceview=1">Текст задание</option>
<option value="/mod/page/view.php?id=704&amp;forceview=1">Виртуальный стенд</option>
<option value="/mod/page/view.php?id=719&amp;forceview=1">Используемая таблица адресации</option>
<option value="/mod/page/view.php?id=705&amp;forceview=1">Настройка виртуальной машины ISP</option>
<option value="/mod/page/view.php?id=720&amp;forceview=1">1. Настройка имён и IP-адресации на устройствах&nbsp;rtr-cod и rtr-a</option>
<option value="/mod/page/view.php?id=724&amp;forceview=1">2. Подход к настройке fw-cod</option>
<option value="/mod/page/view.php?id=722&amp;forceview=1">3. Настройка маршрутизации BGP на rtr-cod</option>
<option value="/mod/page/view.php?id=721&amp;forceview=1">4. Настройка туннелей между офисом «а» и «cod»</option>
<option value="/mod/page/view.php?id=725&amp;forceview=1">5. Настройка доступа в Интернет</option>
<option value="/mod/page/view.php?id=726&amp;forceview=1">6. Настройка динамической маршрутизации между офисом «a» и «cod»</option>
<option value="/mod/page/view.php?id=727&amp;forceview=1">7. Настройка коммутации между sw1-a и sw2-a</option>
<option value="/mod/page/view.php?id=728&amp;forceview=1">8. Настройка доступа к веб-интерфейсу fw-cod и лицензирование</option>
<option value="/mod/page/view.php?id=729&amp;forceview=1">9. Создание интерфейсов типа VLAN на fw-cod для маршутизации между VLAN</option>
<option value="/mod/page/view.php?id=730&amp;forceview=1">10. Настройка коммутации между sw1-cod и sw2-cod</option>
<option value="/mod/page/view.php?id=731&amp;forceview=1">11. Настройка имён и IP-адресов на всех остальных устройствах</option>
<option value="/mod/page/view.php?id=732&amp;forceview=1">12. Настройка административного доступа (RADIUS)</option>
<option value="/mod/page/view.php?id=733&amp;forceview=1">13. Настройка синхронизации времени между сетевыми устройствами</option>
<option value="/mod/page/view.php?id=734&amp;forceview=1">14. Настройка службы доменных имен в COD-е</option>
<option value="/mod/page/view.php?id=735&amp;forceview=1">15. Развёртывание контроллера домена на базе SambaAD</option>
<option value="/mod/page/view.php?id=736&amp;forceview=1">16. Настройка службы доменных имен в OFFICE</option>
<option value="/mod/page/view.php?id=737&amp;forceview=1">17. Настройка центра сертификации</option>
<option value="/mod/page/view.php?id=772&amp;forceview=1">18. Настройка сервера баз данных</option>
<option value="/mod/page/view.php?id=773&amp;forceview=1">19. Настройка устройства хранения данных (iSCSI)</option>
<option value="/mod/page/view.php?id=774&amp;forceview=1">20. Настройка устройства хранения данных (LVM)</option>
<option value="/mod/page/view.php?id=775&amp;forceview=1">21. Настройка устройства хранения данных (NFS)</option>
<option value="/mod/page/view.php?id=776&amp;forceview=1">22. Настройка системы мониторинга</option>
<option value="/mod/page/view.php?id=777&amp;forceview=1">23. Настройка IP телефонии</option>
<option value="/mod/page/view.php?id=779&amp;forceview=1">1. Подготовка машины Cloud-ADM</option>
<option value="/mod/page/view.php?id=782&amp;forceview=1">1.1. Установка Terraform на Cloud-ADM</option>
<option value="/mod/page/view.php?id=783&amp;forceview=1">1.2. Установка OpenStack CLI на Cloud-ADM</option>
<option value="/mod/page/view.php?id=784&amp;forceview=1">1.3. Установка Ansible на Cloud-ADM</option>
<option value="/mod/page/view.php?id=781&amp;forceview=1">3. Project_02</option>
<option value="/mod/page/view.php?id=785&amp;forceview=1">3. Project_03</option>
</select>
<noscript>
<input type="submit" class="btn btn-secondary ml-1" value="Применить">
</noscript>
</form>
</div>
</div>
</div>
<div class="col-md-4"> <div id="next-activity">
<div class="text">
<span class="nav-guide">
Следующий элемент курса
</span>
<a href="https://sysahelper.ru/mod/page/view.php?id=781&amp;forceview=1" id="next-activity-link" class="btn btn-link">3. Project_02</a>
</div>
<div class="rarrow">
<i class="icon-arrow-right"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer id="page-footer">
<div class="moove-container-fluid footer-columns">
<div class="row">
<div class="col-md-4 column-left">
<div class="contact">
<h3 class="footer-title">Обратная связь</h3>
<ul>
</ul>
</div>
<div class="socialnetworks">
<h3 class="footer-title">Подпишитесь</h3>
<ul class="mb-0">
</ul>
</div>
</div>
<div class="col-md-4 column-center">
<div class="logininfo">Вы используете гостевой доступ (<a href="https://sysahelper.ru/login/index.php">Вход</a>)</div>
<div class="tool_dataprivacy"><a href="https://sysahelper.ru/admin/tool/dataprivacy/summary.php">Сводка хранения данных</a></div>
<div class="tool_usertours-resettourcontainer"></div>
</div>
<div class="col-md-4 column-right">
</div>
</div>
</div>
<div class="footer-content-debugging footer-dark bg-dark text-light">
<div class="moove-container-fluid footer-dark-inner">
</div>
</div>
<div data-region="footer-container-popover">
<button class="btn btn-icon bg-secondary icon-no-margin btn-footer-popover" data-action="footer-popover" aria-label="Показать нижний колонтитул" data-original-title="" title="">
<i class="icon fa fa-question fa-fw " aria-hidden="true"></i>
</button>
</div>
<div class="footer-content-popover container" data-region="footer-content-popover">
<div class="footer-section p-3">
<div>На платформе <a href="https://moodle.com/">Moodle</a></div>
</div>
</div>
<div class="copyright">
<div class="madeby">
<p>Тема оформления сайта разработана</p>
<a href="https://conecti.me/">
<img src="REG26_%202.%20Project_01%20_%20sysahelper_files/logo_conectime.svg" alt="Conecti.me" style="height: 40px;">
</a>
</div>
</div>
</footer>
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(96198090, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/96198090" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><script>
//<![CDATA[
var require = {
baseUrl : 'https://sysahelper.ru/lib/requirejs.php/1703880200/',
// We only support AMD modules with an explicit define() statement.
enforceDefine: true,
skipDataMain: true,
waitSeconds : 0,
paths: {
jquery: 'https://sysahelper.ru/lib/javascript.php/1703880200/lib/jquery/jquery-3.7.1.min',
jqueryui: 'https://sysahelper.ru/lib/javascript.php/1703880200/lib/jquery/ui-1.13.2/jquery-ui.min',
jqueryprivate: 'https://sysahelper.ru/lib/javascript.php/1703880200/lib/requirejs/jquery-private'
},
// Custom jquery config map.
map: {
// '*' means all modules will get 'jqueryprivate'
// for their 'jquery' dependency.
'*': { jquery: 'jqueryprivate' },
// Stub module for 'process'. This is a workaround for a bug in MathJax (see MDL-60458).
'*': { process: 'core/first' },
// 'jquery-private' wants the real jQuery module
// though. If this line was not here, there would
// be an unresolvable cyclic dependency.
jqueryprivate: { jquery: 'jquery' }
}
};
//]]>
</script>
<script src="REG26_%202.%20Project_01%20_%20sysahelper_files/javascript_004.php"></script>
<script>
//<![CDATA[
M.util.js_pending("core/first");
require(['core/first'], function() {
require(['core/prefetch'])
;
M.util.js_pending('filter_mathjaxloader/loader'); require(['filter_mathjaxloader/loader'], function(amd) {amd.configure({"mathjaxconfig":"\nMathJax.Hub.Config({\n config: [\"Accessible.js\", \"Safe.js\"],\n errorSettings: { message: [\"!\"] },\n skipStartupTypeset: true,\n messageStyle: \"none\"\n});\n","lang":"ru"}); M.util.js_complete('filter_mathjaxloader/loader');});;
require(["media_videojs/loader"], function(loader) {
loader.setUp('ru');
});;
M.util.js_pending('core_courseformat/courseeditor'); require(['core_courseformat/courseeditor'], function(amd) {amd.setViewFormat("43", {"editing":false,"supportscomponents":true,"statekey":"1772597507_1778159930","overriddenStrings":[{"component":"format_topics","key":"sectionavailability_title"},{"component":"format_topics","key":"sectiondelete_title"},{"component":"format_topics","key":"sectionsdelete_title"},{"component":"format_topics","key":"sectionsdelete_info"},{"component":"format_topics","key":"sectionmove_title"},{"component":"format_topics","key":"sectionsavailability_title"},{"component":"format_topics","key":"sectionsmove_title"},{"component":"format_topics","key":"sectionsmove_info"},{"component":"format_topics","key":"selectsection"}]}); M.util.js_complete('core_courseformat/courseeditor');});;
require(['core_courseformat/local/courseindex/placeholder'], function(component) {
component.init('course-index-placeholder');
});
;
require(['core_courseformat/local/courseindex/drawer'], function(component) {
component.init('courseindex');
});
;
M.util.js_pending('core_courseformat/local/content/activity_header'); require(['core_courseformat/local/content/activity_header'], function(amd) {amd.init(); M.util.js_complete('core_courseformat/local/content/activity_header');});;
require(['theme_moove/accessibilitybar'], function(AccessibilityBar) {
AccessibilityBar.init();
});
;
require(['core/moremenu'], function(moremenu) {
moremenu(document.querySelector('#moremenu-69fc91d055665-navbar-nav'));
});
;
require(
[
'jquery',
],
function(
$
) {
var uniqid = "69fc91d056e2e69fc91d055d7c2";
var container = $('#searchinput-navbar-' + uniqid);
var opensearch = container.find('[data-action="opensearch"]');
var input = container.find('[data-region="input"]');
var submit = container.find('[data-action="submit"]');
submit.on('click', function(e) {
if (input.val() === '') {
e.preventDefault();
}
});
container.on('hidden.bs.collapse', function() {
opensearch.removeClass('d-none');
input.val('');
});
container.on('show.bs.collapse', function() {
opensearch.addClass('d-none');
});
container.on('shown.bs.collapse', function() {
input.focus();
});
});
;
require(
[
'jquery',
],
function(
$
) {
var uniqid = "69fc91d05729169fc91d055d7c3";
var container = $('#searchinput-navbar-' + uniqid);
var opensearch = container.find('[data-action="opensearch"]');
var input = container.find('[data-region="input"]');
var submit = container.find('[data-action="submit"]');
submit.on('click', function(e) {
if (input.val() === '') {
e.preventDefault();
}
});
container.on('hidden.bs.collapse', function() {
opensearch.removeClass('d-none');
input.val('');
});
container.on('show.bs.collapse', function() {
opensearch.addClass('d-none');
});
container.on('shown.bs.collapse', function() {
input.focus();
});
});
;
require(['core/usermenu', 'theme_moove/accessibilitysettings'], function(UserMenu, AccessibilitySettings) {
UserMenu.init();
AccessibilitySettings.init();
});
;
require(['theme_boost/drawers']);
;
require(['theme_boost/drawers']);
;
require(['jquery', 'core/custom_interaction_events'], function($, CustomEvents) {
CustomEvents.define('#jump-to-activity', [CustomEvents.events.accessibleChange]);
$('#jump-to-activity').on(CustomEvents.events.accessibleChange, function() {
if ($(this).val()) {
$('#url_select_f69fc91d055d7c4').submit();
}
});
});
;
require(['theme_boost/footer-popover'], function(FooterPopover) {
FooterPopover.init();
});
;
M.util.js_pending('theme_boost/loader');
require(['theme_boost/loader', 'theme_boost/drawer'], function(Loader, Drawer) {
Drawer.init();
M.util.js_complete('theme_boost/loader');
});
;
M.util.js_pending('core/notification'); require(['core/notification'], function(amd) {amd.init(1160, []); M.util.js_complete('core/notification');});;
M.util.js_pending('core/log'); require(['core/log'], function(amd) {amd.setConfig({"level":"warn"}); M.util.js_complete('core/log');});;
M.util.js_pending('core/page_global'); require(['core/page_global'], function(amd) {amd.init(); M.util.js_complete('core/page_global');});;
M.util.js_pending('core/utility'); require(['core/utility'], function(amd) {M.util.js_complete('core/utility');});
M.util.js_complete("core/first");
});
//]]>
</script>
<script src="REG26_%202.%20Project_01%20_%20sysahelper_files/MathJax.js"></script>
<script>
//<![CDATA[
M.str = {"moodle":{"lastmodified":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435","name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435","error":"\u041e\u0448\u0438\u0431\u043a\u0430","info":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f","yes":"\u0414\u0430","no":"\u041d\u0435\u0442","cancel":"\u041e\u0442\u043c\u0435\u043d\u0430","confirm":"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c","areyousure":"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b?","closebuttontitle":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","unknownerror":"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430","file":"\u0424\u0430\u0439\u043b","url":"URL","collapseall":"\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0451","expandall":"\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0451"},"repository":{"type":"\u0422\u0438\u043f","size":"\u0420\u0430\u0437\u043c\u0435\u0440","invalidjson":"\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 JSON","nofilesattached":"\u041d\u0435 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043d\u0438 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b","filepicker":"\u0412\u044b\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u0430","logout":"\u0412\u044b\u0445\u043e\u0434","nofilesavailable":"\u041d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430","norepositoriesavailable":"\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u0412\u0430\u0448\u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.","fileexistsdialogheader":"\u0424\u0430\u0439\u043b \u0441\u043e\u0437\u0434\u0430\u043d","fileexistsdialog_editor":"\u0424\u0430\u0439\u043b \u0441 \u044d\u0442\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0443\u0436\u0435 \u0431\u044b\u043b \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u043c\u0443 \u0442\u0435\u043a\u0441\u0442\u0443","fileexistsdialog_filemanager":"\u0424\u0430\u0439\u043b \u0441 \u044d\u0442\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0443\u0436\u0435 \u0431\u044b\u043b \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d","renameto":"\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0432 \u00ab{$a}\u00bb","referencesexist":"\u041d\u0430 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438: {$a}","select":"\u0412\u044b\u0431\u0440\u0430\u0442\u044c"},"admin":{"confirmdeletecomments":"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438?","confirmation":"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435"},"debug":{"debuginfo":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u043e\u0442\u043b\u0430\u0434\u043a\u0435","line":"\u0421\u0442\u0440\u043e\u043a\u0430","stacktrace":"\u0422\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u0442\u0435\u043a\u0430"},"langconfig":{"labelsep":":"}};
//]]>
</script>
<script>
//<![CDATA[
(function() {M.util.help_popups.setup(Y);
M.util.js_pending('random69fc91d055d7c5'); Y.on('domready', function() { M.util.js_complete("init"); M.util.js_complete('random69fc91d055d7c5'); });
})();
//]]>
</script>
</div>
</div><div id="yui3-css-stamp" style="position: absolute !important; visibility: hidden !important" class=""></div>
<div></div></body></html>