2021: различия между версиями
Перейти к навигации
Перейти к поиску
Vovan (обсуждение | вклад) (Новая страница: «=Installer NNTC= <pre> #!/bin/bash SCRIPT=$0 SHARE_RESOURCE='//192.168.10.123/data/fdisk1' # ресурс по протоколу smb/cifs DEPLOY_DIR='SRV_DEFAU…») |
Vovan (обсуждение | вклад) (→Installer NNTC) |
||
Строка 73: | Строка 73: | ||
mount "${HDD1_PREFIX}1" /mnt/sysefi/ | mount "${HDD1_PREFIX}1" /mnt/sysefi/ | ||
mount /dev/${HDD1_VG_NAME}/${SYSVOL_ROOT_NAME} /mnt/sysroot/ | mount /dev/${HDD1_VG_NAME}/${SYSVOL_ROOT_NAME} /mnt/sysroot/ | ||
+ | #mount "${HDD1_PREFIX}3" /mnt/sysroot/ | ||
echo "Монтирование файловых систем -- завершено." | echo "Монтирование файловых систем -- завершено." | ||
} | } |
Версия 11:02, 12 января 2021
Installer NNTC
#!/bin/bash SCRIPT=$0 SHARE_RESOURCE='//192.168.10.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="40" # разметка жёстких дисков, включая 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 "# Мастер установки/удаления/сохранения сервера #" echo "# v2020.12.27 #" 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