Need to test on a new system

parent 527e752e
#!/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
# Запрос информации у пользователя
read -p "Введите название нодов (через пробел):" nodes
# Обновление системы на удаленных хостах через SSH
# Запрос подтверждения перед обновлением
# Функция для обновления машины
update_remote_system() {
local node="$1"
# Запрос пользователя о необходимости обновления
read -p "Хотите обновить систему на машине $node? (y/n):" update_response
if [ "$update_response" == "y" ] || [ "$update_response" == "Y" ]; then
echo -e "${yellow}Обновление системы на машине $node...${reset}"
ssh "$node" "epm update && epm upgrade -y"
echo -e "${yellow}Обновление системы на машине $node завершено.${reset}"
else
echo -e "${yellow}Обновление системы на машине $node отменено пользователем.${reset}"
fi
}
# Вызываем функцию для обновления каждой машины
for node in $nodes; do
update_remote_system "$node"
done
# Устанавливаем ceph-common:
for node_id in ${nodes}; do
ssh "$node_id" epmi ceph-common
done
# Установливаем sh для пользователя:
for node_id in ${nodes}; do
ssh "$node_id" chsh -s /bin/bash ceph
done
# Установливаем параметры sudoers:
for node_id in ${nodes}; do
ssh "$node_id" "echo 'ceph ALL = (root) NOPASSWD:ALL' | tee '/etc/sudoers.d/ceph'"
done
# Изменяем права на файл
for node_id in ${nodes}; do
ssh "$node_id" chmod 0440 /etc/sudoers.d/ceph
done
# Установка Ceph на сервере
if ! epm qp ceph-deploy; then
epm install ceph-deploy python-module-setuptools
fi
# Копируем публичный ssh ключ на все узлы кластера пользователю ceph в /var/lib/ceph
# Путь к файлу id_ed25519.pub
public_key="/root/.ssh/id_ed25519.pub"
read -p "Введите название основного сервера: " server_name
# Цикл для копирования ключа и добавления в authorized_keys
for node in $nodes; do
echo -e "${yellow}Копирование ключа на машину $node и добавление в authorized_keys...${reset}"
ssh-copy-id -i "$public_key" "$node"
ssh "$node" "cat /root/.ssh/authorized_keys | grep $server_name > /var/lib/ceph/authorized_keys"
echo -e "${yellow}Ключ успешно скопирован и добавлен на машину $node. В каталог /var/lib/ceph${reset}"
done
# Добавляем в файл ~/.ssh/config строки:
echo -e "Host $(hostname)\nHostname $(hostname -i)\nUser root" | tee ".ssh/config" > /dev/null
#Создайте директорию ceph-cluster для конфигурационных файлов и файлов ceph-deploy и переходим в неё
mkdir ceph-cluster
cd ceph-cluster
# Создайте конфигурационный файл кластера:
ceph-deploy new $nodes
# Просим пользователя указать его публичную сеть, длоя внесения в конфиг
read -p "Введите адрес публичной сети с указанием подсети: " public_network
echo -e "public_network = $public_network" >> ceph.conf
# Установливаем ceph-deploy на узлы кластера:
ceph-deploy install $nodes
# Создаем и проводим инициализацию серверов-мониторов:
ceph-deploy --overwrite-conf mon create ${nodes}
# Создаем сервис мониторинга:
ceph-deploy mgr create $server_name
#Создаем Metadata сервера (Если CephFS):
ceph-deploy mds create $nodes
#Скопируем конфигурационные файлы на узлы кластера:
ceph-deploy admin $nodes
# Переменная для хранения OSD
osd_disks=""
# Получение списка доступных дисков
available_disks=$(lsblk -o NAME,TYPE -n | awk '$2=="disk" {print $1}')
# Переменная для хранения 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
# Добавим в кластер серверы с данными:
for node in $nodes; do
echo -e "${yellow}Добавление диска $disk на ноде $node в кластер...${reset}"
ceph-deploy osd create --data /dev/$disk $node
echo -e "${yellow}Добавление диска в кластер $disk на ноде $node завершено.${reset}"
done
# Завершено
echo -e "${yellow}Установка и настройка Ceph завершены.${reset}"
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