2021: различия между версиями
Перейти к навигации
Перейти к поиску
Vovan (обсуждение | вклад) (→Installer NNTC) |
Vovan (обсуждение | вклад) (→Installer NNTC) |
||
Строка 1: | Строка 1: | ||
=Installer NNTC= | =Installer NNTC= | ||
− | + | ==FOR /dev/sdX== | |
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
SCRIPT=$0 | SCRIPT=$0 | ||
− | SHARE_RESOURCE='// | + | SHARE_RESOURCE='//172.16.254.123/data/fdisk1' # ресурс по протоколу smb/cifs |
DEPLOY_DIR='SRV_DEFAULT' # откуда брать tar-архивы на ресурсе SHARE_RESOURCE | DEPLOY_DIR='SRV_DEFAULT' # откуда брать tar-архивы на ресурсе SHARE_RESOURCE | ||
SHARE_LOGIN='userftp' # логин | SHARE_LOGIN='userftp' # логин | ||
Строка 13: | Строка 13: | ||
HDD1_VG_NAME="system" | HDD1_VG_NAME="system" | ||
SYSVOL_ROOT_NAME="root" | SYSVOL_ROOT_NAME="root" | ||
− | SYSVOL_ROOT_SIZE_G=" | + | SYSVOL_ROOT_SIZE_G="1" |
+ | |||
+ | # разметка жёстких дисков, включая lvm, создание файловых систем | ||
+ | function deploy_prepare_fs() { | ||
+ | echo "Подготовка файловых систем..." | ||
+ | echo "Разметка диска \"${HDD1}\"..." | ||
+ | fdisk ${HDD1_PREFIX} <<EOF | ||
+ | g | ||
+ | n | ||
+ | |||
+ | |||
+ | +512M | ||
+ | t | ||
+ | 1 | ||
+ | 1 | ||
+ | n | ||
+ | |||
+ | |||
+ | +1G | ||
+ | t | ||
+ | 2 | ||
+ | 20 | ||
+ | n | ||
+ | |||
+ | |||
+ | |||
+ | t | ||
+ | 3 | ||
+ | 31 | ||
+ | w | ||
+ | EOF | ||
+ | |||
+ | echo "Форматирование efi" | ||
+ | mkfs -t vfat -F "${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_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} | ||
+ | echo "Удаление pv -- завершено." | ||
+ | } | ||
+ | |||
+ | # очистка дисков | ||
+ | function deploy_clear_hdds() { | ||
+ | echo "Очистка разметки на дисках..." | ||
+ | fdisk ${HDD1_PREFIX} <<EOF | ||
+ | g | ||
+ | w | ||
+ | EOF | ||
+ | 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 | ||
+ | |||
+ | 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 -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 understand the risk!\":" -i "" CONFIRM_CLEAR | ||
+ | if [ "yes, I understand the risk!" == "${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') | ||
+ | deploy_mount | ||
+ | [ -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 | ||
+ | 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 #" | ||
+ | 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> | ||
+ | |||
+ | |||
+ | ==FOR /dev/nvmeX== | ||
+ | <pre> | ||
+ | #!/bin/bash | ||
+ | SCRIPT=$0 | ||
+ | |||
+ | SHARE_RESOURCE='//172.16.254.123/data/fdisk1' # ресурс по протоколу smb/cifs | ||
+ | DEPLOY_DIR='SRV_DEFAULT' # откуда брать tar-архивы на ресурсе SHARE_RESOURCE | ||
+ | SHARE_LOGIN='userftp' # логин | ||
+ | SHARE_PASS='' # пароль | ||
+ | HDD1='/dev/nvme0n1' | ||
+ | HDD1_PREFIX="${HDD1}p" | ||
+ | HDD1_VG_NAME="system" | ||
+ | SYSVOL_ROOT_NAME="root" | ||
+ | SYSVOL_ROOT_SIZE_G="1" | ||
# разметка жёстких дисков, включая lvm, создание файловых систем | # разметка жёстких дисков, включая lvm, создание файловых систем |
Версия 12:16, 12 января 2021
Installer NNTC
FOR /dev/sdX
#!/bin/bash SCRIPT=$0 SHARE_RESOURCE='//172.16.254.123/data/fdisk1' # ресурс по протоколу smb/cifs DEPLOY_DIR='SRV_DEFAULT' # откуда брать tar-архивы на ресурсе SHARE_RESOURCE SHARE_LOGIN='userftp' # логин SHARE_PASS='' # пароль HDD1='/dev/sda' HDD1_PREFIX="${HDD1}" HDD1_VG_NAME="system" SYSVOL_ROOT_NAME="root" SYSVOL_ROOT_SIZE_G="1" # разметка жёстких дисков, включая lvm, создание файловых систем function deploy_prepare_fs() { echo "Подготовка файловых систем..." echo "Разметка диска \"${HDD1}\"..." fdisk ${HDD1_PREFIX} <<EOF g n +512M t 1 1 n +1G t 2 20 n t 3 31 w EOF echo "Форматирование efi" mkfs -t vfat -F "${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_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} echo "Удаление pv -- завершено." } # очистка дисков function deploy_clear_hdds() { echo "Очистка разметки на дисках..." fdisk ${HDD1_PREFIX} <<EOF g w EOF 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 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 -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 understand the risk!\":" -i "" CONFIRM_CLEAR if [ "yes, I understand the risk!" == "${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') deploy_mount [ -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 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 #" 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
FOR /dev/nvmeX
#!/bin/bash SCRIPT=$0 SHARE_RESOURCE='//172.16.254.123/data/fdisk1' # ресурс по протоколу smb/cifs DEPLOY_DIR='SRV_DEFAULT' # откуда брать tar-архивы на ресурсе SHARE_RESOURCE SHARE_LOGIN='userftp' # логин SHARE_PASS='' # пароль HDD1='/dev/nvme0n1' HDD1_PREFIX="${HDD1}p" HDD1_VG_NAME="system" SYSVOL_ROOT_NAME="root" SYSVOL_ROOT_SIZE_G="1" # разметка жёстких дисков, включая lvm, создание файловых систем function deploy_prepare_fs() { echo "Подготовка файловых систем..." echo "Разметка диска \"${HDD1}\"..." fdisk ${HDD1_PREFIX} <<EOF g n +512M t 1 1 n +1G t 2 20 n t 3 31 w EOF echo "Форматирование efi" mkfs -t vfat -F "${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_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} echo "Удаление pv -- завершено." } # очистка дисков function deploy_clear_hdds() { echo "Очистка разметки на дисках..." fdisk ${HDD1_PREFIX} <<EOF g w EOF 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 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 -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 understand the risk!\":" -i "" CONFIRM_CLEAR if [ "yes, I understand the risk!" == "${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') deploy_mount [ -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 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 #" 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