Установка BAYRELL CLoud OS на Raspberry PI

Данная инструкция описывает процесс установки BAYRELL Cloud OS альфа версии 0.1.0 с приложением time_planner. Репозиторий с ОС доступен на гихабе.

Базовая настройка и установка Docker

1) Установите и настройте Raspberry PI как описано в инструкции.

2) Установите Docker и дополнительные приложения

apt-get install -y docker.io git

3) В файл /etc/iptables/rules.v4 добавьте строчки перед -A ALLOW-INPUT -j RETURN

# Разрешить Docker Swarm
-A ALLOW-INPUT -p tcp -m tcp --dport 2376 -j ACCEPT
-A ALLOW-INPUT -p tcp -m tcp --dport 2377 -j ACCEPT
-A ALLOW-INPUT -p tcp -m tcp --dport 7946 -j ACCEPT
-A ALLOW-INPUT -p udp -m udp --dport 7946 -j ACCEPT
-A ALLOW-INPUT -p udp -m udp --dport 4789 -j ACCEPT

4) Создайте кластер

docker swarm init --advertise-addr 192.168.1.25

Выдаст ключ подключения к Docker swarm. Если вы забыли Token, то введите команду docker swarm join-token manager на primary node. Подключитесь к остальным серверам и выполните команду, для того чтобы их подключить к кластеру.

docker swarm join --token TOKEN IP-АДРЕС-ГЛАВНОГО-СЕРВЕРА

5) В файле /etc/docker/daemon.json пропишите. Это нужно для хранения логов рекомендуется journald, чтобы автоматически происходила ротация логов.

{
  "log-driver": "journald"
}

6) В крон через команду sudo crontab -e пропишите команду, которая будет автоматически очищать контейнеры

0 0 * * * yes | docker container prune > /dev/null

7) Выдайте всем нодам в кластере уникальные имена

Узнать ID нод можно командой

docker node ls

Назначить имя можно командой:

docker node update --label-add name=docker0 raspberrypi

Рекомендуется первый сервер назвать именем docker0, т.к. это имя далее указано в конфигах Cloud OS.

Проверить назначенные label можно командой

docker node inspect ID_ноды --pretty

8) Добавьте пользователя pi в группу docker

usermod -a -G docker pi

9) Перезагрузите распу

init 6

Установка BAYRELL Cloud OS

1) Чтобы попробовать альфа версию операционной системы нужно скачать конфиги. Зайдите под пользователем pi в домашнюю папку и выполните команду:

https://github.com/bayrell-os/cloud_os_example

2) Перейдите в папку cloud_os_example

cd cloud_os_example

3) Пропишите управляющий домен, под которым будет работать у вас облачная ОС. Он указан в самом начале в файле generate.sh. По умолчанию cloud_os.test. Убедитесь что домен cloud_os.test адресует на адрес 192.168.1.25.

CLOUD_DOMAIN="cloud_os.test"

4) Сгенерируйте секретные ключи и токены

./generate.sh

5) Создайте сеть cloud_router для облачной ОС

./network.create.sh

6) Скачайте необходимые образы. Выполните команду

./images.download.sh

7) Запуск базы данных для панели управления ОС

./cloud_os_mysql.sh compose

8) Запуск установщика. На данный момент установщик содержит только интерфейс управления базы данных

./cloud_os_installer.sh compose

Установщик запускает веб интерфейс на порту 88.

9) Подождите, пока запустятся сервисы cloud_os_mysql1 и cloud_os_installer. Проверьте командой запущенные сервисы:

docker service ls

Должно вывестив графе REPLICAS значение 1/1.

ID                  NAME                 MODE                REPLICAS            IMAGE                              PORTS
44jcqbxa79s7        cloud_os_installer   replicated          1/1                 bayrell/cloud_os_installer:0.1.0
3hu548amot7c        cloud_os_mysql1      replicated          1/1                 bayrell/alpine_mariadb:10.4

Если реплика стоит 0/1, то значит нужно подождать. Идет скачивание образа.

10) После того как сервисы запустились. Установите базу данных для cloud_os. Зайдите по адресу http://cloud_os.test:88/. Логин к интерфейсу "main", пароль такой же "main".

11) Перейдите в раздел Adminer, создайте базу с названием system_panel и загрузите в эту базу дамп.

12) Запустите саму панель управление и роутер к ней.

./cloud_os_system_panel.sh compose
./cloud_router.sh compose

13) Проверьте, что они успешно запустились через команду docker service ls

14) После запуска роутера, сама ОС должна быть доступна по адресу http://cloud_os/. Логин admin, пароль admin

Когда вы авторизуйтесь вы зайдете в консоль Облачной ОС.

15) Запуск приложения Time Planner. Выполните команды:

./prod_mysql.sh compose
./prod_app_time_planner.sh compose

16) Зайдите в веб интерфейсе ОС в раздел Services (Службы) и переодически обновляйте страницу, до тех пор, пока не появятся службы prod_mysql и prod_app_time_planner

17) Для службы prod_app_time_planner поставьте "Admin Page" значение "Yes". Обратите внимание, что есть служба prod_app_time_planner_cron. Для нее нужно оставить значение "No". Рядом появиться кнопка View. Перейдите по ней. Должна открыться админка самой службы. Если пишет Page not found, подождите 1 минуту и обновите страницу.

18) В админке службы prod_app_time_planner создайте базу данных time_planner и загрузите в нее дамп.

19) Перейдите в веб интерфейсе управления ОС в раздел Layers и создайте слой данных для prod_app_time_planner. Значение UID ставить не нужно.

20) Перейдите в раздел Top Menu. И создайте две записи, для главной страницы и для time planner. Это верхнее меню будет синхронизироваться со всеми службами. Синхронизация осуществляется раз в 15 минут.

21) Удалите инсталятор

./cloud_os_installer.sh delete

22) Установка завершена 🙂