В данной статье я расскажу о создании локального сервера обновлений для ОС 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, но это уже как говорится совсем другая история. На этом всё, рекомендации и дополнения приветствуются.