* * NAME: required. * The name of action. Name will be seen by user. * * ACTIONS: array (for TYPE = CHAIN only) required. * List of another actions ids from this list witch will be executed in same order * * START_COMMAND_TEMPLATE: (for TYPE != CHAIN) required * Command template, to execute. In this template aviable anchors: * ##USER_PARAMS:PARAM_NAME## - show dialog to user, and ask them to enter param PARAM_NAME * ##SERVER_PARAMS:PARAM_NAME## - Get param PARAM_NAME from server params (now aviable only ip|hostname) * ##INPUT_PARAMS:PARAM_NAME## - results taken from results of previous actions calling. * It usefull only if action takes part in actionschain, and one of previous action returns param PARAM_NAME * * USER_PARAMS: array optional * Params wich we must to ask to user. Aviable params: * NAME: required. Param name. User will see it as param name in dialog window. * TYPE: required. Aviable: STRING, PASSWORD, DROPDOWN, CHECKBOX * REQUIRED: (Y|N) optional. If user must obligatory to fill this field. * VERIFY_TWICE (Y|N) optional. If user must confirm param. Password for example. * * ASYNC (Y|N) optional. If command must be executed async asynchronously */ if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } use Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); $connection = \Bitrix\Main\Application::getConnection(); $actionsDefinitions = array("NEW_SERVER_CHAIN" => array("TYPE" => "CHAIN", "NAME" => Loc::getMessage("SCALE_ADEF_NEW_SERVER_CHAIN"), "ACTIONS" => array("GET_CURRENT_KEY", "COPY_KEY_TO_SERVER", "ADD_SERVER", "MONITORING_UPDATE"), "PAGE_REFRESH" => "Y"), "GET_CURRENT_KEY" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a key -o json", "NAME" => Loc::getMessage("SCALE_ADEF_GET_CURRENT_KEY")), "COPY_KEY_TO_SERVER" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a copy -i ##USER_PARAMS:SERVER_IP## -k ##INPUT_PARAMS:sshkey## -p ##USER_PARAMS:ROOT_PASSWD## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_COPY_KEY_TO_SERVER"), "USER_PARAMS" => array("SERVER_IP" => array("NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_UP_NET_ADDRESS"), "TYPE" => "STRING", "REQUIRED" => "Y"), "ROOT_PASSWD" => array("NAME" => Loc::getMessage("SCALE_ADEF_ROOT_PASS"), "TYPE" => "PASSWORD", "REQUIRED" => "Y"))), "ADD_SERVER" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a add -i ##USER_PARAMS:SERVER_IP## -H ##USER_PARAMS:HOSTNAME## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_ADD_SERVER"), "USER_PARAMS" => array("SERVER_IP" => array("NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_UP_NET_ADDRESS"), "TYPE" => "STRING", "REQUIRED" => "Y"), "HOSTNAME" => array("NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_UP_HOSTNAME"), "TYPE" => "STRING", "REQUIRED" => "Y"))), "CREATE_PULL" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a create -o json", "NAME" => Loc::getMessage("SCALE_ADEF_CREATE_PULL"), "PAGE_REFRESH" => "Y"), "DEL_SERVER" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a del -H ##SERVER_PARAMS:hostname## -i ##SERVER_PARAMS:ip## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_DEL_SERVER"), "PAGE_REFRESH" => "Y"), "CHANGE_PASSWD" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a pw -i ##SERVER_PARAMS:ip## -p ##USER_PARAMS:OLD_PASSWD## -P ##USER_PARAMS:NEW_PASSWD## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_NAME"), "USER_PARAMS" => array("OLD_PASSWD" => array("NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_UP_OLD_PASS"), "TYPE" => "PASSWORD", "REQUIRED" => "Y"), "NEW_PASSWD" => array("NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_UP_NEW_PASS"), "TYPE" => "PASSWORD", "REQUIRED" => "Y", "VERIFY_TWICE" => "Y"))), "CHANGE_PASSWD_FIRST" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a pw -i ##USER_PARAMS:SERVER_IP## -p ##USER_PARAMS:OLD_PASSWD## -P ##USER_PARAMS:NEW_PASSWD## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_NAME"), "USER_PARAMS" => array("SERVER_IP" => array("NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_UP_NET_ADDRESS"), "TYPE" => "STRING"), "OLD_PASSWD" => array("NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_UP_OLD_PASS"), "TYPE" => "PASSWORD", "REQUIRED" => "Y"), "NEW_PASSWD" => array("NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_UP_NEW_PASS"), "TYPE" => "PASSWORD", "REQUIRED" => "Y", "VERIFY_TWICE" => "Y"))), "MONITORING_ENABLE" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-monitor -a enable -o json", "NAME" => Loc::getMessage("SCALE_ADEF_MONITORING_ENABLE"), "ASYNC" => "Y", "PAGE_REFRESH" => "Y", "CONDITION" => array("COMMAND" => "sudo -u root /opt/webdir/bin/bx-monitor -o json", "PARAMS" => array("monitor:monitoring_status", "===", "'disable'"))), "MONITORING_DISABLE" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-monitor -a disable -o json", "NAME" => Loc::getMessage("SCALE_ADEF_MONITORING_DISABLE"), "ASYNC" => "Y", "PAGE_REFRESH" => "Y", "CONDITION" => array("COMMAND" => "sudo -u root /opt/webdir/bin/bx-monitor -o json", "PARAMS" => array("monitor:monitoring_status", "===", "'enable'"))), "MONITORING_UPDATE" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-monitor -a update -o json", "NAME" => Loc::getMessage("SCALE_ADEF_MONITORING_UPDATE")), "MYSQL_ADD_SLAVE" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-mysql -a slave -s ##SERVER_PARAMS:hostname## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_MYSQL_ADD_SLAVE"), "ASYNC" => "Y", "BACKUP_ALERT" => "Y", "PAGE_REFRESH" => "Y", "MODIFYERS" => array("\\Bitrix\\Scale\\ActionModifyer::mysqlAddSlave", "\\Bitrix\\Scale\\ActionModifyer::checkExtraDbExist")), "MYSQL_CHANGE_MASTER" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-mysql -a master -s ##SERVER_PARAMS:hostname## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_MYSQL_CHANGE_MASTER"), "ASYNC" => "Y", "PAGE_REFRESH" => "Y", "BACKUP_ALERT" => "Y", "MODIFYERS" => array("\\Bitrix\\Scale\\ActionModifyer::checkExtraDbExist")), "MYSQL_DEL_SLAVE" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-mysql -a remove -s ##SERVER_PARAMS:hostname## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_MYSQL_DEL_SLAVE"), "ASYNC" => "Y", "PAGE_REFRESH" => "Y", "BACKUP_ALERT" => "Y", "MODIFYERS" => array("\\Bitrix\\Scale\\ActionModifyer::checkExtraDbExist")), "MEMCACHED_ADD_ROLE" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-mc -o json -a create -s ##SERVER_PARAMS:hostname##", "NAME" => Loc::getMessage("SCALE_ADEF_MEMCACHED_ADD_ROLE"), "ASYNC" => "Y", "PAGE_REFRESH" => "Y"), "MEMCACHED_DEL_ROLE" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-mc -o json -a remove -s ##SERVER_PARAMS:hostname##", "NAME" => Loc::getMessage("SCALE_ADEF_MEMCACHED_DEL_ROLE"), "ASYNC" => "Y", "PAGE_REFRESH" => "Y"), "SET_EMAIL_SETTINGS" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sites -o json -a email" . " --smtphost=##USER_PARAMS:SMTP_HOST##" . " --smtpuser='******'" . " --password=##USER_PARAMS:USER_PASSWORD##" . " --email='##USER_PARAMS:EMAIL##'" . " ##USER_PARAMS:SMTPTLS##", "NAME" => Loc::getMessage("SCALE_ADEF_SET_EMAIL"), "PAGE_REFRESH" => "Y", "USER_PARAMS" => array("SITE_NAME" => array("NAME" => Loc::getMessage("SCALE_ADEF_SET_EMAIL_SITE"), "TYPE" => "TEXT"), "SMTP_HOST" => array("NAME" => Loc::getMessage("SCALE_ADEF_SET_EMAIL_SMTP_HOST"), "TYPE" => "STRING"), "SMTP_PORT" => array("NAME" => Loc::getMessage("SCALE_ADEF_SET_EMAIL_SMTP_PORT"), "TYPE" => "STRING"), "SMTP_USER" => array("NAME" => Loc::getMessage("SCALE_ADEF_SET_EMAIL_SMTP_USER"), "TYPE" => "STRING"), "USER_PASSWORD" => array("NAME" => Loc::getMessage("SCALE_ADEF_SET_EMAIL_USER_PASSWORD"), "TYPE" => "PASSWORD", "VERIFY_TWICE" => "Y"), "EMAIL" => array("NAME" => Loc::getMessage("SCALE_ADEF_SET_EMAIL_EMAIL"), "TYPE" => "STRING"), "SMTPTLS" => array("NAME" => Loc::getMessage("SCALE_ADEF_SET_EMAIL_SMTPTLS"), "TYPE" => "CHECKBOX", "CHECKED" => "N", "STRING" => "--smtptls"))), "CRON_SET" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sites -s ##VM_SITE_ID## -a cron --enable", "NAME" => Loc::getMessage("SCALE_ADEF_CRON_SET"), "PAGE_REFRESH" => "Y"), "CRON_UNSET" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sites -s ##VM_SITE_ID## -a cron --disable", "NAME" => Loc::getMessage("SCALE_ADEF_CRON_UNSET"), "PAGE_REFRESH" => "Y"), "HTTP_OFF" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sites -s ##VM_SITE_ID## -a https --enable", "NAME" => Loc::getMessage("SCALE_ADEF_HTTP_OFF"), "PAGE_REFRESH" => "Y"), "HTTP_ON" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sites -s ##VM_SITE_ID## -a https --disable", "NAME" => Loc::getMessage("SCALE_ADEF_HTTP_ON"), "PAGE_REFRESH" => "Y"), "REBOOT" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a bx_reboot -H ##SERVER_PARAMS:hostname## -o json", "ASYNC" => "Y", "NAME" => Loc::getMessage("SCALE_ADEF_REBOOT")), "UPDATE_BVM" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a bx_update -H ##SERVER_PARAMS:hostname## -o json", "ASYNC" => "Y", "PAGE_REFRESH" => "Y", "NAME" => Loc::getMessage("SCALE_ADEF_BVM_UPDATE")), "UPDATE_ALL_BVMS" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a bx_update -o json", "ASYNC" => "Y", "PAGE_REFRESH" => "Y", "NAME" => Loc::getMessage("SCALE_ADEF_BVM_UPDATE")), "CHANGE_PASSWD_BITRIX" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a bx_passwd -u bitrix -H ##SERVER_PARAMS:hostname## -P ##USER_PARAMS:NEW_PASSWD## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_CHANGE_PASSWD_BITRIX"), "USER_PARAMS" => array("NEW_PASSWD" => array("NAME" => Loc::getMessage("SCALE_ADEF_CHPASS_UP_NEW_PASS"), "TYPE" => "PASSWORD", "REQUIRED" => "Y", "VERIFY_TWICE" => "Y"))), "SITE_ADD" => array("NAME" => Loc::getMessage("SCALE_ADEF_SITE_ADD"), "START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sites" . " -o json" . " -a create" . " -s ##USER_PARAMS:SITE_NAME##" . " -t link" . " -r ##USER_PARAMS:SITE_PATH##", "ASYNC" => "Y", "PAGE_REFRESH" => "Y", "USER_PARAMS" => array("SITE_NAME" => array("NAME" => Loc::getMessage("SCALE_ADEF_SITE_ADD_NAME"), "TYPE" => "STRING", "REQUIRED" => "Y"), "SITE_PATH" => array("NAME" => Loc::getMessage("SCALE_ADEF_SITE_ADD_SITE_PATH"), "TYPE" => "STRING"))), "SITE_DEL" => array("NAME" => Loc::getMessage("SCALE_ADEF_SITE_DEL"), "START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sites -o json -a delete -s ##VM_SITE_ID##", "ASYNC" => "Y", "PAGE_REFRESH" => "Y"), "APACHE_ADD_ROLE" => array("NAME" => Loc::getMessage("SCALE_ADEF_APACHE_ADD_ROLE"), "START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sites -H ##SERVER_PARAMS:hostname## -a web --enable -o json", "ASYNC" => "Y", "PAGE_REFRESH" => "Y"), "APACHE_DEL_ROLE" => array("NAME" => Loc::getMessage("SCALE_ADEF_APACHE_DEL_ROLE"), "START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sites -H ##SERVER_PARAMS:hostname## -a web --disable -o json", "ASYNC" => "Y", "PAGE_REFRESH" => "Y"), "SPHINX_ADD_ROLE" => array("NAME" => Loc::getMessage("SCALE_ADEF_SPHINX_ADD_ROLE"), "START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sphinx -a create -s ##SERVER_PARAMS:hostname## --dbname ##CODE_PARAMS:DB_NAME## ##USER_PARAMS:INDEX## -o json", "ASYNC" => "Y", "PAGE_REFRESH" => "Y", "USER_PARAMS" => array("INDEX" => array("NAME" => Loc::getMessage("SCALE_ADEF_SPHINX_ADD_ROLE_INDEX"), "TYPE" => "CHECKBOX", "CHECKED" => "N", "STRING" => "--reindex")), "CODE_PARAMS" => array("DB_NAME" => 'return \\Bitrix\\Main\\Application::getConnection()->getDbName();')), "SPHINX_DEL_ROLE" => array("NAME" => Loc::getMessage("SCALE_ADEF_SPHINX_DEL_ROLE"), "START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/bx-sphinx -a remove -s ##SERVER_PARAMS:hostname## --dbname ##CODE_PARAMS:DB_NAME## -o json", "ASYNC" => "Y", "PAGE_REFRESH" => "Y", "CODE_PARAMS" => array("DB_NAME" => 'return \\Bitrix\\Main\\Application::getConnection()->getDbName();')), "CREATE_PULL_NET_IFACE" => array("START_COMMAND_TEMPLATE" => "sudo -u root /opt/webdir/bin/wrapper_ansible_conf -a create -I ##USER_PARAMS:NET_IFACE## -o json", "NAME" => Loc::getMessage("SCALE_ADEF_CREATE_PULL"), "PAGE_REFRESH" => "Y", "USER_PARAMS" => array("NET_IFACE" => array("NAME" => Loc::getMessage("SCALE_ADEF_CREATE_PULL_NET_IFACE"), "TYPE" => "DROPDOWN", "VALUES" => \Bitrix\Scale\Helper::getNetworkInterfaces()))));
$APPLICATION->AddHeadScript("/bitrix/js/scale/action.js"); $APPLICATION->AddHeadScript("/bitrix/js/scale/infotable.js"); $APPLICATION->AddHeadScript("/bitrix/js/scale/itloadbar.js"); $APPLICATION->AddHeadScript("/bitrix/js/scale/server.js"); $APPLICATION->AddHeadScript("/bitrix/js/scale/provider.js"); $APPLICATION->AddHeadScript("/bitrix/js/scale/admin_frame.js"); $APPLICATION->SetAdditionalCSS("/bitrix/js/scale/css/scale-page-style.css"); $jsLangMesIds = array("SCALE_PANEL_JS_APD_BUT_START", "SCALE_PANEL_JS_APD_2_CONFIRM", "SCALE_PANEL_JS_APD_2_NOT_CONCIDE", "SCALE_PANEL_JS_ACT_CONFIRM", "SCALE_PANEL_JS_ERROR", "SCALE_PANEL_JS_ARD_RES", "SCALE_PANEL_JS_ACT_RES_ERROR", "SCALE_PANEL_JS_ARD_NAME", "SCALE_PANEL_JS_ARD_RESULT", "SCALE_PANEL_JS_ARD_MESSAGE", "SCALE_PANEL_JS_APD_TITLE", "SCALE_PANEL_JS_ACT_EXEC_ERROR", "SCALE_PANEL_JS_ACT_EXEC_SUCCESS", "SCALE_PANEL_JS_MENU", "SCALE_PANEL_JS_PASS_MUST_BE_CHANGED", "SCALE_PANEL_JS_BID_ERROR", "SCALE_JS_SERVER_TITLE_TITLE", "SCALE_PANEL_MONITORING_DISABLED", "SCALE_PANEL_JS_ADVICE_TO_BACKUP", "SCALE_PANEL_JS_GLOBAL_ACTIONS", "SCALE_PANEL_JS_MONITORING_DATABASE_CREATING", "SCALE_PANEL_JS_ACT_CONFIRM_TITLE", "SCALE_PANEL_JS_ADVICE_TO_BACKUP_TITLE", "SCALE_PANEL_JS_CANCEL", "SCALE_PANEL_JS_CLOSE", "SCALE_PANEL_JS_BX_ENV_NOT_INSTALLED", "SCALE_PANEL_JS_BX_ENV_NEED_UPDATE", "SCALE_PANEL_JS_BX_ENV_VERSION", "SCALE_PANEL_JS_BX_INFO_ERROR", "SCALE_PANEL_JS_ACT_SERVER_WILL_AVAILABLE", "SCALE_PANEL_JS_ACT_HOUR", "SCALE_PANEL_JS_ACT_MIN", "SCALE_PANEL_JS_ACT_SEC", "SCALE_PANEL_JS_EXTRA_DB_CONFIRM", "SCALE_PANEL_JS_EXTRA_DB_CONFIRM_TITLE", "SCALE_PANEL_JS_WFA_TITLE", "SCALE_PANEL_JS_WFA_TEXT", "SCALE_PANEL_JS_PROVIDER", "SCALE_PANEL_JS_PROVIDER_CHOOSE", "SCALE_PANEL_JS_PROVIDER_MANUAL", "SCALE_PANEL_JS_PROVIDER_BUT_CHOOSE", "SCALE_PANEL_JS_PROVIDER_CONFIG_CHOOSE", "SCALE_PANEL_JS_PROVIDER_NO_CONFIGS", "SCALE_PANEL_JS_PROVIDER_LIST_ERROR", "SCALE_PANEL_JS_PROVIDER_ERROR", "SCALE_PANEL_JS_PROVIDER_CONFIGS_ERROR", "SCALE_PANEL_JS_PROVIDER_ORDER_ERROR", "SCALE_PANEL_JS_REFRESH_TITLE", "SCALE_PANEL_JS_REFRESH_TEXT", "SCALE_PANEL_JS_BX_VER_ERROR", "SCALE_PANEL_JS_BX_ENV_NEED_UPDATE2", "SCALE_PANEL_JS_PROVIDER_ORDER_SUCCESS", "SCALE_PANEL_JS_PROVIDER_ORDER_SUCCESS_TITLE"); $dataRefreshTimeInterval = 300000; //ms how often we want to refresh monitoring info. $serversList = \Bitrix\Scale\ServersData::getList(); $runningAction = \Bitrix\Scale\ActionsData::checkRunningAction(); //If one of the actions runs now - get it params, to show dialog, and block page $pullCreateAction = 'CREATE_PULL'; if (empty($serversList)) { $netIfaces = \Bitrix\Scale\Helper::getNetworkInterfaces(); if (is_array($netIfaces) && count($netIfaces) > 1) { $pullCreateAction = "CREATE_PULL_NET_IFACE"; } } require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; if (\Bitrix\Scale\Helper::checkBxEnvVersion()) { ?> <div class="adm-scale-page-wrap" id="adm-scale-page-wrap"> <div class="adm-scale-blocks-wrapper" id="adm-scale-blocks-wrapper"<?php echo empty($serversList) ? ' style="width:100%;"' : ''; ?> > <?php if (Bitrix\Main\ModuleManager::isModuleInstalled("cluster") || empty($serversList)) { ?>