2021: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Installer NNTC)
 
(не показано 15 промежуточных версий 1 участника)
Строка 1: Строка 1:
 
=Installer NNTC=
 
=Installer NNTC=
 
moved to gitlab https://gitlab.nntc.nnov.ru/vslugin/nntc-installer
 
moved to gitlab https://gitlab.nntc.nnov.ru/vslugin/nntc-installer
 +
 +
<pre>
 +
#!/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
 +
</pre>
 +
 +
=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==
 +
 +
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04-ru
 +
 +
<pre>
 +
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;
 +
}
 +
}
 +
</pre>
 +
 +
=googlechrome=
 +
 +
==kiosk mode with basic auth==
 +
 +
cat ./run-app-with-basic-auth-in-chrome-kiosk-mode-on-ubuntu-x11.sh
 +
 +
<pre>
 +
#!/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'
 +
</pre>
 +
 +
 +
=MOODLE Update=
 +
 +
==Patches==
 +
 +
===JS Errors in file lib/form/filemanager.js===
 +
 +
File
 +
 +
lib/form/filemanager.js
 +
 +
Patch
 +
 +
<pre>
 +
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');
 +
> }
 +
</pre>
 +
 +
=Mariadb in Docker (for emsh)=
 +
 +
==Deploy==
 +
 +
run
 +
 +
<pre>
 +
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
 +
</pre>
 +
 +
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
 +
 +
[[Категория:Ежегодник]]

Текущая версия на 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

https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04-ru

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