2021
Содержание
Installer NNTC
moved to gitlab https://gitlab.nntc.nnov.ru/vslugin/nntc-installer
#!/bin/bash SCRIPT=$0 SHARE_RESOURCE='//172.16.254.123/data/fdisk1' # ресурс smb/cifs DEPLOY_DIR='NONAME' # каталог с tar-архивами на ресурсе SHARE_RESOURCE SHARE_LOGIN='userftp' # логин SHARE_PASS='' # пароль HDD1='/dev/sda' # ex: /dev/nvme0n1 or /dev/sda HDD1_SUFFIX_TEST_NVME=${HDD1:5:4} HDD1_SUFFIX='' if [ "${HDD1_SUFFIX_TEST_NVME}" == "nvme" ]; then HDD1_SUFFIX='p' fi HDD1_PREFIX="${HDD1}${HDD1_SUFFIX}" HDD1_VG_NAME="system" SYSVOL_ROOT_NAME="root" SYSVOL_ROOT_SIZE_G="1" SAVE_UBUNTU_IN_BASE_INSTALLATION="No" # разметка жёстких дисков, включая lvm, создание файловых систем function deploy_prepare_fs() { echo "Подготовка файловых систем..." echo "Разметка диска \"${HDD1}\"..." fdisk ${HDD1} <<EOF g n +512M t 1 1 n +1G t 2 20 n t 3 31 w EOF echo "Форматирование efi" mkfs.vfat "${HDD1_PREFIX}1" echo "Форматирование boot" mkfs.ext4 -F "${HDD1_PREFIX}2" echo "Создание pv для vg \"${HDD1_VG_NAME}\"" pvcreate "${HDD1_PREFIX}3" echo "Создание vg \"${HDD1_VG_NAME}\" на базе pv \"${HDD1_PREFIX}3\"" vgcreate ${HDD1_VG_NAME} "${HDD1_PREFIX}3" echo "Создание lv \"${SYSVOL_ROOT_NAME}\" в vg \"${HDD1_VG_NAME}\"" lvcreate -y ${HDD1_VG_NAME} --name ${SYSVOL_ROOT_NAME} --size ${SYSVOL_ROOT_SIZE_G}g lvextend -l +100%FREE "/dev/mapper/${HDD1_VG_NAME}-${SYSVOL_ROOT_NAME}" echo "Форматирование /dev/${HDD1_VG_NAME}/${SYSVOL_ROOT_NAME}" mkfs.ext4 -F "/dev/${HDD1_VG_NAME}/${SYSVOL_ROOT_NAME}" echo "Подготовка файловых систем -- завершено." } # монтирование function deploy_mount() { echo "Монтирование файловых систем..." mkdir /mnt/sysboot /mnt/sysefi /mnt/sysroot mount "${HDD1_PREFIX}2" /mnt/sysboot/ mount "${HDD1_PREFIX}1" /mnt/sysefi/ mount /dev/${HDD1_VG_NAME}/${SYSVOL_ROOT_NAME} /mnt/sysroot/ #mount "${HDD1_PREFIX}3" /mnt/sysroot/ echo "Монтирование файловых систем -- завершено." } # монтирование function deploy_mount_default_ubuntu() { echo "Монтирование файловых систем (стандартная установка ubuntu)..." mkdir /mnt/sysboot /mnt/sysefi /mnt/sysroot mount "${HDD1_PREFIX}2" /mnt/sysroot/ mount "${HDD1_PREFIX}1" /mnt/sysefi/ mount --bind /mnt/sysroot/boot /mnt/sysboot/ echo "Монтирование файловых систем -- завершено." } # размонтирование function deploy_umount() { echo "Размонтирование файловых систем..." cd /mnt umount sys* SAMBA rmdir sys* /mnt/SAMBA echo "Размонтирование файловых систем -- завершено." } # удаление lv-томов function deploy_delete_lv() { echo "Удаление томов lvm..." lvremove -y "/dev/mapper/${HDD1_VG_NAME}-${SYSVOL_ROOT_NAME}" echo "Удаление томов lvm -- завершено." } # удаление vg function deploy_delete_vg() { echo "Удаление vg..." vgremove -y ${HDD1_VG_NAME} echo "Удаление vg -- завершено." } # удаление pv function deploy_delete_pv() { echo "Удаление pv..." pvremove -y "${HDD1_PREFIX}3" echo "Удаление pv -- завершено." } # очистка дисков function deploy_clear_hdds() { echo "Очистка разметки на дисках..." wipefs --all --force ${HDD1} echo "Очистка разметки на дисках -- завершено." } # распаковка раздела efi function deploy_efi() { echo "распаковка efi ..." cd /mnt/sysefi tar -xpf /mnt/SAMBA/${DEPLOY_DIR}/sysefi.tar echo "распаковка efi -- завершено." } # распаковка раздела boot function deploy_boot() { echo "распаковка boot ..." cd /mnt/sysboot tar -xpf /mnt/SAMBA/${DEPLOY_DIR}/sysboot.tar echo "распаковка boot -- завершено." } # распаковка корня системы function deploy_root() { echo "распаковка root ..." cd /mnt/sysroot tar -xpf /mnt/SAMBA/${DEPLOY_DIR}/sysroot.tar echo "распаковка root -- завершено." } # запаковка раздела efi function deploy_backup_efi() { echo "запаковка efi ..." cd /mnt/sysefi tar -cpf /mnt/SAMBA/${DEPLOY_DIR}/sysefi.tar . echo "запаковка efi -- завершено." } # запаковка раздела boot function deploy_backup_boot() { echo "запаковка boot ..." cd /mnt/sysboot tar -cpf /mnt/SAMBA/${DEPLOY_DIR}/sysboot.tar . echo "запаковка boot -- завершено." } # запаковка корня системы function deploy_backup_root() { echo "запаковка root ..." cd /mnt/sysroot tar -cpf /mnt/SAMBA/${DEPLOY_DIR}/sysroot.tar . echo "запаковка root -- завершено." } # получение UUID устройства по его имени function deploy_get_uuid() { DEVICE="$1" UUID=$(blkid | grep ${DEVICE} | awk -F "UUID" {'print $2'} | awk -F '"' {'print $2'}) echo ${UUID} } # обновление /etc/fstab внутри будущей системы function deploy_update_fstab() { echo "обновление /etc/fstab ..." UUID_sysboot=$(deploy_get_uuid "${HDD1_PREFIX}2") UUID_sysefi=$(deploy_get_uuid "${HDD1_PREFIX}1") UUID_sysroot=$(deploy_get_uuid "/dev/mapper/${HDD1_VG_NAME}-${SYSVOL_ROOT_NAME}") echo "UUID_sysboot ${UUID_sysboot}" echo "UUID_sysefi ${UUID_sysefi}" echo "UUID_sysroot ${UUID_sysroot}" cp /mnt/sysroot/etc/fstab /mnt/sysroot/etc/fstab_original cat <<EOF >/mnt/sysroot/etc/fstab #sysroot UUID=${UUID_sysroot} / ext4 defaults 0 0 #sysboot UUID=${UUID_sysboot} /boot ext4 defaults 0 0 #sysefi UUID=${UUID_sysefi} /boot/efi vfat defaults 0 0 #swap #/swapfile none swap sw 0 0 EOF echo "обновление /etc/fstab ... -- завершено." } # установка загрузчика function deploy_update_grub() { echo "установка загрузчика ..." mount --bind /mnt/sysboot /mnt/sysroot/boot mkdir /mnt/sysroot/{proc,sys,dev} mkdir /mnt/sysroot/boot/efi mount --bind /mnt/sysefi /mnt/sysroot/boot/efi mount -t proc /proc /mnt/sysroot/proc mount -t sysfs /sys /mnt/sysroot/sys mount --bind /dev/ /mnt/sysroot/dev chroot /mnt/sysroot/ <<EOF grub-install ${HDD1} update-grub update-grub2 EOF cd /mnt umount /mnt/sysroot/dev umount /mnt/sysroot/sys umount /mnt/sysroot/proc umount /mnt/sysroot/boot/efi umount /mnt/sysroot/boot echo "установка загрузчика -- завершено." } # функция развёртывания deploy_install_go() { STARTED_DATE=$(date '+%Y-%m-%d %H:%M:%S') deploy_prepare_fs deploy_mount deploy_efi deploy_boot deploy_root deploy_update_fstab deploy_update_grub deploy_umount FINISHED_DATE=$(date '+%Y-%m-%d %H:%M:%S') echo "" echo "#################################################" echo "# #" echo "# Установка завершена #" echo "# #" echo "# начало установки: ${STARTED_DATE} #" echo "# завершение установки: ${FINISHED_DATE} #" echo "# #" echo "# нажмите любую клавишу для продолжения... #" echo "# #" echo "#################################################" echo "" read } function deploy_start() { echo "" echo "Параметры ниже рекомендуется оставить по умолчанию:" read -e -p "Системный диск (блочное устройство): " -i "${HDD1}" HDD1 read -e -p "Системная группа томов (VG): " -i "${HDD1_VG_NAME}" HDD1_VG_NAME read -e -p "Имя корневого логического тома (LV): " -i "${SYSVOL_ROOT_NAME}" SYSVOL_ROOT_NAME read -e -p "Размер корневого логического тома, GB: " -i "${SYSVOL_ROOT_SIZE_G}" SYSVOL_ROOT_SIZE_G echo "" read -e -p "Начинаем установку?! Введите \"Yes\" для продолжения:" -i "" READY if [ "Yes" == "$READY" ]; then deploy_install_go else echo "" echo "############################################" echo "# #" echo "# ! Установка отменена #" echo "# #" echo "# нажмите любую клавишу для продолжения... #" echo "# #" echo "############################################" read fi } function deploy_install() { [ -d /mnt/SAMBA ] || mkdir /mnt/SAMBA IS_MOUNT=$(mount | grep /mnt/SAMBA | wc -l) if [ "${IS_MOUNT}" == "0" ]; then echo "" echo "Для развёртывания системы из хранилища используйте параметры по умолчанию (Enter) или измените текущие значения." echo "" read -e -p "Адрес ресурса smb/cifs: " -i "${SHARE_RESOURCE}" SHARE_RESOURCE read -e -p "Логин smb/cifs: " -i "${SHARE_LOGIN}" SHARE_LOGIN read -s -e -p "Пароль smb/cifs (ввод пароля не отображается): " -i "${SHARE_PASS}" SHARE_PASS read -e -p "Каталог с архивами системы: " -i "${DEPLOY_DIR}" DEPLOY_DIR echo "" echo "" mount.cifs ${SHARE_RESOURCE} /mnt/SAMBA -o username=${SHARE_LOGIN},pass=${SHARE_PASS},iocharset=utf8 MOUNT_STATUS=$? if [ ${MOUNT_STATUS} -ne 0 ]; then echo "" echo "##############################################" echo "# #" echo "# ! Ошибка при монтировании хранилища #" echo "# #" echo "# Проверьте данные для подключения #" echo "# и доступность хранилища по ним! #" echo "# #" echo "# нажмите любую клавишу для продолжения... #" echo "# #" echo "##############################################" echo "" read else deploy_start fi else deploy_start fi } # функция очистки function deploy_uninstall_go() { STARTED_DATE=$(date '+%Y-%m-%d %H:%M:%S') deploy_umount deploy_delete_lv deploy_delete_vg deploy_delete_pv deploy_clear_hdds FINISHED_DATE=$(date '+%Y-%m-%d %H:%M:%S') echo "" echo "###############################################" echo "# #" echo "# Очистка завершена #" echo "# #" echo "# начало очистки: ${STARTED_DATE} #" echo "# завершение очистки: ${FINISHED_DATE} #" echo "# #" echo "# нажмите любую клавишу для продолжения... #" echo "# #" echo "###############################################" echo "" read } function deploy_uninstall() { echo "" echo "Удаление полностью очистит жёсткий диск. Эта операция -- Н Е О Б Р А Т И М А!" echo "" echo "Эта операция -- НЕОБРАТИМА!" echo " Эта операция -- Н Е О Б Р А Т И М А !" echo " Эта операция -- Н Е О Б Р А Т И М А!" echo "" echo "" read -e -p "Начинаем удаление?! Для продолжения наберите текст \"yes, I really want to brick this device!\":" -i "" CONFIRM_CLEAR if [ "yes, I really want to brick this device!" == "${CONFIRM_CLEAR}" ]; then deploy_uninstall_go else echo "" echo "############################################" echo "# #" echo "# ! Очистка отменена #" echo "# #" echo "# нажмите любую клавишу для продолжения... #" echo "# #" echo "############################################" echo "" read fi } # функция развёртывания deploy_backup_go() { STARTED_DATE=$(date '+%Y-%m-%d %H:%M:%S') #SAVE_UBUNTU_IN_BASE_INSTALLATION if [ "Yes" == "$SAVE_UBUNTU_IN_BASE_INSTALLATION" ]; then deploy_mount_default_ubuntu else deploy_mount fi [ -d /mnt/SAMBA/${DEPLOY_DIR} ] || mkdir /mnt/SAMBA/${DEPLOY_DIR} deploy_backup_efi deploy_backup_boot deploy_backup_root deploy_umount FINISHED_DATE=$(date '+%Y-%m-%d %H:%M:%S') echo "" echo "##############################################" echo "# #" echo "# Сохранение завершено #" echo "# #" echo "# начало сохранения: ${STARTED_DATE} #" echo "# завершение сохранения: ${FINISHED_DATE} #" echo "# #" echo "# нажмите любую клавишу для продолжения... #" echo "# #" echo "##############################################" echo "" read } function deploy_backup_start() { echo "" echo "ВНИМАНИЕ! Параметры ниже должны соответствовать параметрам инсталляции системы:" read -e -p "Системный диск (блочное устройство): " -i "${HDD1}" HDD1 read -e -p "Системная группа томов (VG): " -i "${HDD1_VG_NAME}" HDD1_VG_NAME read -e -p "Имя корневого логического тома (LV): " -i "${SYSVOL_ROOT_NAME}" SYSVOL_ROOT_NAME read -e -p "Размер корневого логического тома, GB: " -i "${SYSVOL_ROOT_SIZE_G}" SYSVOL_ROOT_SIZE_G read -e -p "Сохраняем систему после базовой установки ubuntu (Yes/No)?: " -i "${SAVE_UBUNTU_IN_BASE_INSTALLATION}" SAVE_UBUNTU_IN_BASE_INSTALLATION echo "" read -e -p "Начинаем сохранение?! Введите \"Yes\" для продолжения:" -i "" READY if [ "Yes" == "$READY" ]; then deploy_backup_go else echo "" echo "#############################################" echo "# #" echo "# ! Сохранение отменено #" echo "# #" echo "# нажмите любую клавишу для продолжения... #" echo "# #" echo "#############################################" echo "" read fi } function deploy_backup() { [ -d /mnt/SAMBA ] || mkdir /mnt/SAMBA IS_MOUNT=$(mount | grep /mnt/SAMBA | wc -l) if [ "${IS_MOUNT}" == "0" ]; then echo "" echo "Для сохранения системы в хранилище используйте параметры по умолчанию (Enter) или измените текущие значения." echo "" echo "ВНИМАНИЕ! Все существующие архивы в заданном каталоге с архивами будут перезаписаны, если они существуют!" echo "" echo "ВНИМАНИЕ! Во избежании перезаписи существующих каталогов имя каталога с архивами создано автоматически согласно текущей дате" echo "" echo "" read -e -p "Адрес ресурса smb/cifs: " -i "${SHARE_RESOURCE}" SHARE_RESOURCE read -e -p "Логин smb/cifs: " -i "${SHARE_LOGIN}" SHARE_LOGIN read -e -p "Пароль smb/cifs: " -i "${SHARE_PASS}" SHARE_PASS read -e -p "Каталог с архивами системы: " -i "$(date '+%Y-%m-%d_%H-%M-%S')__SAVE__UNNAMED" DEPLOY_DIR echo "" echo "" mount.cifs ${SHARE_RESOURCE} /mnt/SAMBA -o username=${SHARE_LOGIN},pass=${SHARE_PASS},iocharset=utf8 MOUNT_STATUS=$? if [ ${MOUNT_STATUS} -ne 0 ]; then echo "" echo "##############################################" echo "# #" echo "# ! Ошибка при монтировании хранилища #" echo "# #" echo "# Проверьте данные для подключения #" echo "# и доступность хранилища по ним! #" echo "# #" echo "# нажмите любую клавишу для продолжения... #" echo "# #" echo "##############################################" echo "" read else deploy_backup_start fi else deploy_backup_start fi } while true; do clear echo "" echo "#############################################" echo "# NNTC Installer (COVID Version 2021-01-12) #" echo "#############################################" echo "" echo "Вручную мастер можно запустить командой: /bin/installer.sh" echo "" read -n 1 -e -p "Введите 'x' для закрытия этого диалога или нажмите 'Enter' для продолжения: " -i "" is_exit if [ "x" == "$is_exit" ]; then exit 0 fi echo "" echo "Меню:" echo "" echo "1 - выполнить установку" echo "0 - выполнить удаление" echo "2 - выполнить сохранение" echo "" read -n 1 -e -p "Выберите операцию: " -i "" OPERATION case "${OPERATION}" in "1") deploy_install ;; "0") deploy_uninstall ;; "2") deploy_backup ;; esac done
pve
LXC
Развёртывание контейнеров из образов
pct create 101 /path/to/template.tar.gz \ -arch amd64 \ -hostname container-1 \ -rootfs local-zfs:20 \ -memory 1024 \ -ostype ubuntu \ -cores 4 \ -ignore-unpack-errors 1 \ -unprivileged
MOODLE Update
Patches
JS Errors in file lib/form/filemanager.js
File
lib/form/filemanager.js
Patch
425a426 > if(buttonDeleteFile){ 461a463 > } 632c634,637 < this.filemanager.one('.fp-btn-delete').addClass('d-none'); --- > const fm = this.filemanager.one('.fp-btn-delete'); > if(fm){ > fm.addClass('d-none'); > } 634c639,642 < this.filemanager.one('.fp-btn-delete').removeClass('d-none'); --- > const fm = this.filemanager.one('.fp-btn-delete'); > if(fm){ > fm.removeClass('d-none'); > }
Mariadb in Docker (for emsh)
Deploy
run
docker run --name mariadb-emsh \ -p 3306:3306 \ -d \ -e MYSQL_ROOT_PASSWORD=<YOU_PASSWORD_HERE> \ -e MYSQL_DATABASE=db \ -e MYSQL_USER=student \ -e MYSQL_PASSWORD=student \ mariadb
start
docker start mariadb-emsh
stop
docker stop mariadb-emsh
Manage
Обычная бд под названием db на полный доступ пользователю student с паролем student
mysql -ustudent -pstudent -h 172.16.254.140 db
Ридонли бд под названием rodb н ридонли доступ пользователю student с паролем student
mysql -ustudent -pstudent -h 172.16.254.140 db
База данных под названием rodb на полный доступ пользоваелю root с паролем emsh123321
mysql -uroot -pemsh123321 -h 172.16.254.140 rodb
Залить дамп в базу от рута
mysql -uroot -pemsh123321 -h 172.16.254.140 rodb < file_with_dump.sql
Выгрузить дамп базы
mysqldump -uroot -p<YOU_PASSWORD_HERE> -h 172.16.254.140 rodb > file_with_dump.sql