Найти тему
Сисадмин Михалыч

Локальный сервер обновлений для ALT Linux и Astra Linux

Оглавление

В данной статье я расскажу о создании локального сервера обновлений для ОС ALT Linux и Astra Linux, на базе сервера под управлением ОС ALT Linux.

Почему так? Сам я использую ALT Linux, однако исходя из моей практики во многих государственных учреждениях присутствуют дистрибутивы разных вендоров. О причинах такого положения дел говорить не буду, а просто раз уж так получилось то с этим и работать. В одной из организаций которую я админю сложилась именно такая ситуация, в результате решения которой появилась данная статья. Начнём!

Допустим у нас имеется сервер ALT Linux (СП, p9, p10) установленный в минимальном исполнении со следующими параметрами:

CPU: 2
RAM: 4 GB
HDD: 500 GB (Разделы: / - 20GB, /var - 480 GB)
IP-адрес: 192.168.100.2
Имя хоста: updsrv.domain.local (опционально)

Сам сервер находится не в ЗСПД, а доступ из ЗСПД к нему необходимо организовать разрешением соединений по протоколу tcp на 80 порт, в моём случае на VipNet координаторе.

Обновляем список пакетов, ОС, ядро и перезагружаем:

# apt-get update
# apt-get dist-upgrade -y
# update-kernel -y
# reboot

Создаем необходимые

Устанавливаем Web-сервер apache:

# apt-get install httpd2 -y

Устанавливаем утилиту для создания локального зеркала репозитория ALT Linux:

apt-get install sisyphus-mirror -y

Создадим необходимые каталоги:

# mkdir -p /var/updates/alt
# mkdir -p /var/updates/astra/{ISO,sm,sm-dev,smupd,smupd-dev,orel}

ISO - здесь будут находиться iso-образы дистрибутивов

sm и sm-dev - сюда будут смонтированы iso-образы оригинального дистрибутива и дистрибутива разработчика Смоленск

smupd и smupd-dev - сюда будут смонтированы iso-образы дистрибутива обновлений и дистрибутива обновлений разработчика Смоленск. Данные обновления являются накопительными, поэтому для обновления системы достаточно использовать последнюю версию а не производить обновление по порядку.

Смоленск

Добавляем iso-образы оригинального дистрибутива и дистрибутива разработчика в /var/updates/astra/ISO/ любым удобным способом

Для автоматического монтирования iso-образов вносим изменения в /etc/fstab добавлением строк:

/var/updates/astra/ISO/smolensk-1.6.iso /var/updates/astra/sm udf,iso9660 auto,loop 0 0
/var/updates/astra/ISO/devel-smolensk-1.6.iso /var/updates/astra/sm-dev udf,iso9660 auto,loop 0 0
/var/updates/astra/ISO/20211126SE16.iso /var/updates/astra/smupd udf,iso9660 auto,loop 0 0
/var/updates/astra/ISO/20211126SE16-dev.iso /var/updates/astra/smupd-dev udf,iso9660 auto,loop 0 0

Орел

Пакетная база данного дистрибутива доступна из сети интернет, поэтому будем зеркалировать оттуда.

Создадим скрипт, в котором будет выполнятся вся последовательность команд по закачке обновлений:

# mkdir /root/scripts
# mcedit /root/scripts/updates.sh

Добавим содержимое:

#!/bin/bash
rsync --delete -aqLz dl.astralinux.ru::astra/astra/stable/2.12_x86-64/repository/ /var/updates/astra/orel/

ALT Linux

Для альта воспользуется удобной утилитой sisyphus-mirror, благодаря которой можно зеркалить указанные в конфиге репозитории. Допустим что у нас в сети имеются серверы с ОС ALT Linux p8, p9 и c9f2 (она же СП)

Правим только эти строки в файле /etc/sisyphus-mirror/sisyphus-mirror.conf

SRCROOT=rsync://mirror.yandex.ru/altlinux
DESTROOT=/var/updates/alt
LIST="p9/branch p10/branch c9f2/branch"
ARCH="noarch x86_64 x86_64-i586"

Добавим запуск утилиты в наш скрипт:

# echo sisyphus-mirror >> /root/scripts/updates.sh

Запланируем запуск скрипта каждый день в 01:00

# crontab -e
0 1 * * * /root/scripts/updates.sh

Настроим Web-сервер Apache:

В /etc/httpd2/conf/sites-available/ создадим файл updates.conf

# mcedit /etc/httpd2/conf/sites-available/updates.conf

Наполним содержимым:

<VirtualHost *:80>
DocumentRoot "/var/updates"
Options Indexes FollowSymLinks
ErrorLog "/var/log/httpd2/updates-error.log"
</VirtualHost>

Подключим наш созданный конфиг к конфигу Apache:

# ln -s /etc/httpd2/conf/sites-available/updates.conf /etc/httpd2/conf/sites-enabled/updates.conf

Запускаем Apache и добавляем его в автозапуск:

# systemctl start httpd2
# systemctl enable httpd2

Доступность локального зеркала репозиториев можно проверить открыв в браузере ресурс:

http://192.168.100.2

Если успешно, то переходим к настройке клиентов

Смоленск

Содержимое файла /etc/apt/sources.list приводим к виду:

deb http://192.168.100.2/astra/sm smolensk main contrib non-free
deb http://192.168.100.2/astra/sm-dev smolensk main contrib non-free
deb http://192.168.100.2/astra/smupd smolensk main contrib non-free
deb http://192.168.100.2/astra/smupd-dev smolensk main contrib non-free

Орёл

Содержимое файла /etc/apt/sources.list приводим к виду:

deb http://192.168.100.2/astra/orel/ orel main contrib non-free

ALT Linux

Удалим имеющиеся списки источников обновлений

# rm -f /etc/apt/sources.list.d/

Содержимое файла /etc/apt/sources.list приводим к виду:

p9

rpm [p9] http://192.168.100.2/alt p9/branch/x86_64 classic
rpm [p9] http://192.168.100.2/alt p9/branch/x86_64-i586 classic
rpm [p9] http://192.168.100.2/alt p9/branch/noarch classic

p10

rpm [p10] http://192.168.100.2/alt p10/branch/x86_64 classic
rpm [p10] http://192.168.100.2/alt p10/branch/x86_64-i586 classic
rpm [p10] http://192.168.100.2/alt p10/branch/noarch classic

c9f2

rpm [cert8] http://192.168.100.2/alt c9f2/branch/x86_64 classic
rpm [cert8] http://192.168.100.2/alt c9f2/branch/x86_64-i586 classic
rpm [cert8] http://192.168.100.2/alt c9f2/branch/noarch classic

Логирование

Для логирования процесса зеркалирования необходимо привести скрипт /root/scripts/updates.sh к виду:

#!/bin/bash
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start mirroring Astra" > /var/log/updates.log
rsync --verbose --delete -aLz dl.astralinux.ru::astra/astra/stable/2.12_x86-64/repository/ /var/updates/astra/orel/ >> /var/log/updates.log
echo "`date +"%Y-%m-%d_%H-%M-%S"` End mirroring Astra" >> /var/log/updates.log
echo '*********************' >> /var/log/updates.log
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start mirroring ALT" >> /var/log/updates.log
sisyphus-mirror -i >> /var/log/updates.log
echo "`date +"%Y-%m-%d_%H-%M-%S"` End mirroring ALT" >> /var/log/updates.log

Можно обновлять. При необходимости можно зеркалить и другие дистрибутивы например с mirror.yandex.ru, но это уже как говорится совсем другая история. На этом всё, рекомендации и дополнения приветствуются.