2021: различия между версиями
Перейти к навигации
Перейти к поиску
Vovan (обсуждение | вклад) |
Avp (обсуждение | вклад) |
||
| Строка 674: | Строка 674: | ||
mysqldump -uroot -p<YOU_PASSWORD_HERE> -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 | ||
| + | |||
| + | [[Категория:Ежегодник]] | ||
Текущая версия на 10:02, 28 июля 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
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