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
2a2bfda6
Commit
2a2bfda6
authored
Sep 01, 2023
by
Тимофей Смирнов
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Need to test on a new system
parent
527e752e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
149 additions
and
0 deletions
+149
-0
ceph_deploy.0.2.sh
ceph_deploy.0.2.sh
+149
-0
No files found.
ceph_deploy.0.2.sh
0 → 100755
View file @
2a2bfda6
#!/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
)
\n
Hostname
$(
hostname
-i
)
\n
User 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
}
"
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