Скрипт для ВКР по установке ceph

parent 6f082427
#!/bin/bash
yellow='\033[0;33m'
reset='\033[0m'
# Функция для вывода подтверждения и чтения ответа
confirm() {
read -p "$1 (y/n): " response
case "$response" in
[yY]|[yY][eE][sS])
return 0
;;
*)
return 1
;;
esac
}
# Запрос подтверждения перед обновлением
if confirm "Вы хотите обновить репозитории и систему?"; then
# Обновление репозиториев
echo -e "${yellow}Обновление репозиториев...${reset}"
epm update
# Обновление системы
echo -e "${yellow}Обновление системы...${reset}"
epm upgrade
echo -e "${yellow}Обновление завершено.${reset}"
else
echo -e "${yellow}Обновление отменено.${reset}"
fi
# Обновление системы на удаленных хостах через SSH
for node in $nodes; do
echo -e "${yellow}Обновление системы на хосте $node${reset}"
ssh "$node" "sudo epm update && sudo epm upgrade -y"
echo -e "${yellow}Обновление системы на хосте $node завершено.${reset}"
done
# Установка Ceph на сервере
if ! epm qp ceph-deploy; then
epm install ceph-deploy ceph
fi
# Запрос информации у пользователя
read -p "Введите название нодов (через пробел):" nodes
# Функция для установки пакета на удаленных нодах через SSH
install_ceph_deploy() {
local nodes="$@" # Получение списка нод из аргументов функции
for node in $nodes; do
echo -e "${yellow}Установка ceph на ноду $node...${reset}"
ssh "$node" " epm install ceph"
echo -e "${yellow}Установка ceph на ноду $node завершена.${reset}"
done
}
install_ceph_deploy $nodes
# Получение списка доступных дисков
available_disks=$(lsblk -o NAME,TYPE -n | awk '$2=="disk" {print $1}')
# Установка ceph на ноды
ceph-deploy install ${nodes}
# Переменная для хранения OSD
osd_disks=""
# Запрос дисков для OSD
for node in $nodes; do
read -p "Выберите диск для OSD на ноде $node ($available_disks):" osd_disk
osd_disks="$osd_disks$node:$osd_disk"
done
# Копирование SSH-ключа на другие ноды
for node in ${nodes}; do
ssh-copy-id -f root@${node}
done
#Создание конфигурационного файла
#cd /etc/ceph
cd /etc/ceph
ceph-deploy new $(hostname) ${nodes}
ceph-deploy --overwrite-conf mon create ${nodes}
#config_file="/etc/ceph/ceph.conf"
#changes_needed="
# [global]
# fsid = $(uuidgen)
# mon_initial_members = $(hostname -s)
# mon host = $(hostname -i)
# auth_cluster_required = cephx
# auth_service_required = cephx
# auth_client_required = cephx
# cluster_network = 192.168.0.0/24
#"
# Функция для внесения изменений в конфигурационный файл
#apply_changes_to_config() {
# local config_file="$1" # Первый аргумент - путь к конфигурационному файлу
# local changes_needed="$2" # Второй аргумент - изменения, которые нужно внести
# Проверка наличия файла
# if [ -f "$config_file" ]; then
# Проверка, что изменения еще не внесены
# if grep -q "$changes_needed" "$config_file"; then
# echo -e "${yellow}Изменения уже присутствуют в конфигурационном файле.${reset}"
# else
# Внесение изменений в конфигурационный файл
# echo "$changes_needed" | tee -a "$config_file" > /dev/null
# echo -e "${yellow}Изменения успешно внесены в конфигурационный файл.${reset}"
# fi
# else
# Создание конфигурационного файла и внесение изменений
# echo "$changes_needed" | sudo tee "$config_file" > /dev/null
# echo -e "${yellow}Конфигурационный файл создан, и изменения успешно внесены.${reset}"
# fi
#}
#apply_changes_to_config "$config_file" "$changes_needed"
# Создаем мониторы, указанные при создании кластера:
cd /etc/ceph/
ceph-deploy mon create-initial
###### ДО СЮДА РАБОТАЕТ
# После перехода на systemd
# именно демоны мониторов почему-то автоматически не добавляются в автостарт,
# поэтому добавляем их в systemd руками:
for node_id in ${nodes}; do
ssh "$node_id" serv ceph-mon on
done
# Запуск Ceph мониторов
#serv ceph-mon on
# Создание OSD на каждом диске
for disk in ${disks}; do
ceph-disk prepare /dev/${disk}
ceph-disk activate /dev/${disk}1
done
# Запуск OSD
serv on ceph-osd.target
# Проверка наличия OSD на ноде
#if ! ceph osd tree | grep -q "$node"; then
# Создание OSD на ноде
# ceph osd create
# ceph-osd -i <id>
# else
# echo "${yellow}Создать OSD не получилось${reset}"
#fi
# Подключение к Ceph
ceph auth get-key client.admin > /etc/ceph/ceph.client.admin.keyring
chmod 600 /etc/ceph/ceph.client.admin.keyring
# Настройка прав доступа для утилиты ceph-deploy
ceph auth get-key client.bootstrap-osd > /dev/null 2>&1 || ceph auth add client.bootstrap-osd mon 'allow profile bootstrap-osd'
ceph auth get-or-create client.bootstrap-osd mon 'profile bootstrap-osd' osd 'profile bootstrap-osd' > /etc/ceph/ceph.client.bootstrap-osd.keyring
# Предварительное форматирование дисков на нодах
for node in $nodes; do
echo "${yellow}Форматирование диска $disk на ноде $node...${reset}"
ssh "$node" "sudo ceph-deploy disk zap $node /dev/$disk"
echo "${yellow}Форматирование диска $disk на ноде $node завершено.${reset}"
done
# Завершено
echo -e "${yellow}Установка и настройка Ceph завершены.${reset}"
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment