Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
ceph-auto
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Timofey
ceph-auto
Commits
cf71d2c3
Commit
cf71d2c3
authored
Aug 30, 2023
by
Тимофей Смирнов
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Скрипт для ВКР по установке ceph
parent
6f082427
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
175 additions
and
0 deletions
+175
-0
ceph_deploy.0.1.sh
ceph_deploy.0.1.sh
+175
-0
No files found.
ceph_deploy.0.1.sh
0 → 100755
View file @
cf71d2c3
#!/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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment