2021
Версия от 21:46, 16 марта 2021; Vovan (обсуждение | вклад)
Содержание
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
NGINX
certbot
server { listen 80; server_name some.domain.com www.some.domain.com; client_max_body_size 200M; location / { proxy_pass http://localhost:3333; } location @fallback { proxy_pass http://localhost:3333; } location ~* "/\.(htaccess|htpasswd)$" { deny all; return 404; } }
googlechrome
kiosk mode with basic auth
cat ./run-app-with-basic-auth-in-chrome-kiosk-mode-on-ubuntu-x11.sh
#!/bin/bash export DISPLAY=:0 google-chrome-stable \ --autoplay-policy=no-user-gesture-required \ --disable-pinch \ --overscroll-history-navigation=0 \ --kiosk \ --app=http://my.kiosk.app.with.basic.auth/& sleep 5s xte 'key u' xte 'key s' xte 'key e' xte 'key r' xte 'key Tab' xte 'key p' xte 'key a' xte 'key s' xte 'key s' xte 'key w' xte 'key d' xte 'key Tab' xte 'key Tab' xte 'key Return'
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