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

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

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

1) Перед тем, как устанавливать Облачную ОС настройте саму систему:

2) Обновите систему

apt-get update
apt-get upgrade

3) Установка dnsmasq

apt install dnsmasq

Скопируйте конфиг dnsmasq:

cp /etc/dnsmasq.conf /etc/dnsmasq.conf.example
echo "" > /etc/dnsmasq.conf

Создайте файл /etc/resolv.dnsmasq

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1

В /etc/dnsmasq.conf пропишите:

port=53
listen-address=0.0.0.0
no-dhcp-interface=
bind-interfaces
expand-hosts
local-ttl=1
no-negcache

# Настройки DNS по умолчанию
resolv-file=/etc/resolv.dnsmasq

conf-dir=/etc/dnsmasq.d
cache-size=150
max-cache-ttl=600
min-cache-ttl=60

# Одновременный запрос ко всем DNS серверам
# all-servers

# Запрещаем резолвить домены без точки (нужно для Docker Swarm)
domain-needed

# Для отладки
#log-queries

Раскоментируйте строку в файле /etc/default/dnsmasq

IGNORE_RESOLVCONF=yes

Пропишите ip адреса для домена .local в файле /etc/dnsmasq.d/local

address=/.local/127.0.0.1

Выключите резолвер из внешней сети интернет. Создайте файл /etc/dnsmasq.d/disable-external-network

bind-interfaces
except-interface=enp*
except-interface=wlp*
except-interface=wlan*
except-interface=eth*

Удалите файл /etc/resolv.conf и заново его создайте, потому что остается симлинк от днс резолвера systemd, который не дает создать новый файл.

rm -f /etc/resolv.conf
touch /etc/resolv.conf

В /etc/resolv.conf укажите локальный IP адрес

nameserver 127.0.0.1

Отключите резолвер systemd 

systemctl stop systemd-resolved
systemctl disable systemd-resolved

Перезапустите dnsmasq

systemctl restart dnsmasq

4) Установите Docker

curl -sSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker
apt-get install docker-compose

5) В файл /etc/iptables/rules.v4 добавьте строчки перед -A ALLOW-INPUT -j RETURN. Это нужно для Docker Swarm

# Разрешить 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

# Разрешаем входящие соединения DNS
-A ALLOW-INPUT -i docker0 -p udp -m udp --dport 53 -j ACCEPT
-A ALLOW-INPUT -i docker0 -p tcp -m tcp --dport 53 -j ACCEPT
-A ALLOW-INPUT -i docker_gwbridge -p udp -m udp --dport 53 -j ACCEPT
-A ALLOW-INPUT -i docker_gwbridge -p tcp -m tcp --dport 53 -j ACCEPT

После перезагрузки данные команды применятся

6) В файле /etc/docker/daemon.json пропишите.

{
  "log-driver": "journald",
  "log-opts": {
    "labels":"com.docker.swarm.service.name"
  },
  "dns": ["172.17.0.1"]
}

Это нужно для хранения логов рекомендуется journald, чтобы автоматически происходила ротация логов. А также, чтобы контейнеры использовали dnsmasq.

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

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

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

docker swarm init

Если у вас несколько IP адресов у распы, то нужно указать конкретный IP адрес, по которому должен создаваться кластер, например так:

docker swarm init --advertise-addr 192.168.1.25

Важно, что сменить IP адрес потом будет нельзя.

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

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

Если вы забыли токен, его можно узнать командой:

docker swarm join-token manager

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

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

docker node ls

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

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

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

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

docker node inspect self --pretty

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

usermod -a -G docker ubuntu

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

init 6

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

Под пользователем ubuntu выполните:

1) Обновите время

sudo ntpdate -s time.nist.gov

2) Запустите облачную ОС в домашнюю папку

cd ~
git clone https://github.com/bayrell-os/cloud_os
cd cloud_os

Скачайте образы

./cloud_os.sh download

и установите ОС

./cloud_os.sh setup

Подождите пока выполнится скрипт установки. Он также вас попросит ввести логин администратора, и в конце создаст и выведет его на экран.

3) Добавьте в автозапуск облачную ОС

Создайте файл через команду

nano /etc/rc.local

Пропишите в нем команды:

#!/bin/bash

for i in $(seq 0 6); do
	sleep 10
	docker start cloud_os_standard_1
done

Поставьте флаг выполнения для этого файла

chmod +x /etc/rc.local

4) Установка завершена!

Установка Desktop Client

Для того чтобы установить Desktop Client перейдите по ссылке.

Остались вопросы?

Если вы хотите получить консультацию или оставить комментарий, заполните форму ниже:
Укажите ваше имя:
Укажите вашу почту, чтобы я смог вам ответить:
Напишите ваш вопрос или комментарий: