Alterator-mirror

Материал из ALT Linux Wiki
Версия от 11:21, 22 сентября 2021; Elena Mishina (обсуждение | вклад) (+ ссылка на http://sisyphus.ru/rsync/)

Название пакета

alterator-mirror

Назначение

Модуль Сервер обновлений предназначен для зеркалирования репозиториев ALT Linux и публикации их для обновлений рабочих станций и серверов.

Модуль позволяет:

  • просмотреть информацию о зеркалируемых репозиториях;
  • выбрать репозитории для зеркалирования из предложенного списка;
  • настроить периодичность зеркалирования;
  • настроить параметры каждого зеркалируемого репозитория: источник, архитектура, параметры публикации.

Настройка хранилища репозитория

По умолчанию локальное зеркало репозитория находится в /srv/public/mirror. Для того, чтобы зеркалирование происходило в другую папку необходимо эту папку примонтировать в папку /srv/public/mirror. Для этого в файл /etc/fstab следует вписать следующую строку

/media/disk/localrepo /srv/public/mirror none rw,bind,auto 0 0

где /media/disk/localrepo — папка-хранилище локального репозитория.

Настройка сервера обновлений

Модуль Сервер обновлений доступен в веб-интерфейсе по адресу https://ip-address:8080 (раздел «Серверы» ▷ «Сервер обновлений»):

Сервер обновлений

На странице модуля можно выбрать, как часто выполнять закачку пакетов, можно выставить время, когда начинать зеркалирование.

Здесь также можно выбрать репозитории, локальные срезы которых необходимы. При нажатии на название репозитория, появляются настройки этого репозитория:

Настройки репозитория

Необходимо выбрать источник, архитектуру процессора (если их несколько, то стоит выбрать соответствующие).

Примечание: При выборе любой архитектуры также будет добавлен источник с noarch.


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

Локальное зеркало репозитория
В этом режиме на сервере создаётся копия удалённого репозитория. Загрузка ПО клиентскими машинами может производится с локального сервера по протоколам HTTP, HTTPS, FTP, rsync (для каждого протокола нужно настроить соответствующие службы). Наличие на локальном сервере зеркала репозитория при большом количестве машин в сети позволяет существенно сэкономить на трафике.
Публикация репозитория
В этом случае публикуется или URL внешнего сервера, содержащего репозиторий или, если включено локальное зеркало репозитория, адрес этого сервера. Такая публикация позволяет клиентским машинам автоматически настроить свои менеджеры пакетов на использование внешнего или локального репозитория.
Внимание! Зеркалирование потребует наличия большого количества места на диске.

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

SRPMS
*-debuginfo-*
Шаблоны указываются по одному в отдельной строке. Символ «*» используется для подстановки любого количества символов.


Примечание: Для исключения части пакетов из зеркалирования можно воспользоваться сервисом, позволяющим отфильтровать пакеты по RPM-группе. Полученный список нужно добавить в поле «Исключить каталоги и файлы.»


Настройка локального репозитория заканчивается нажатием на кнопку «Применить».

Локальное зеркало репозитория

По окончании первой синхронизации репозиторий готов к использованию. Загрузка ПО клиентскими машинами, может производиться с локального сервера по протоколам HTTP, HTTPS, FTP, rsync. На сервере при этом должна быть настроена соответствующая служба. Ниже приведён пример настройки HTTP- и FTP-сервера.

Настройка веб-сервера

Установить веб-сервер, например nginx:

# apt-get install nginx

Создать файл конфигурации сервера в /etc/nginx/sites-available.d/repo.conf:

server {
  listen 80;
  server_name localhost .local <ваш ip>;

  access_log /var/log/nginx/repo-access.log;
  error_log /var/log/nginx/repo-error.log;

  location /mirror {
    root /srv/public;
    autoindex on;
   }
}

Сделать ссылку в /etc/nginx/sites-enabled.d/:

# ln -s /etc/nginx/sites-available.d/repo.conf /etc/nginx/sites-enabled.d/repo.conf

Запустить nginx и добавить его в автозагрузку:

# systemctl enable --now nginx

Настройка FTP-сервера

Установить пакет vsftpd:

# apt-get install vsftpd lftp

Настроить параметры использования vsftpd в файле /etc/xinetd.d/vsftpd:

# default: off
# description: The vsftpd FTP server.
service ftp
{
    disable = no # включает службу
    socket_type = stream
    protocol = tcp
    wait = no
    user = root
    nice = 10
    rlimit_as = 200M
    server = /usr/sbin/vsftpd
    only_from = 0/0 # предоставить доступ для всех IP
}

Перезапустить xinetd:

# systemctl restart xinetd

Изменить настройку прав доступа в файле /etc/vsftpd/conf:

local_enable=YES

Создать каталог /var/ftp/mirror:

# mkdir -p /var/ftp/mirror

Примонтировать каталог/srv/public/mirror в /var/ftp/mirror с опцией --bind:

# mount --bind /srv/public/mirror /var/ftp/mirror
Примечание: Для автоматического монтирования каталога /srv/public/mirror при загрузке системы необходимо добавить следующую строку в файл /etc/fstab:
/srv/public/mirror /var/ftp/mirror none defaults,bind 0 0


Использование на стороне клиента

На клиентских машинах необходимо настроить репозитории:

# apt-repo add <Протокол>://<ip сервера>/mirror/p9/branch

Например:

# apt-repo rm all
# apt-repo add http://192.168.0.185/mirror/p9/branch

Проверить правильность настройки репозиториев:

# apt-repo
rpm http://192.168.0.185/mirror p9/branch/x86_64 classic
rpm http://192.168.0.185/mirror p9/branch/noarch classic


Публикация репозитория — использование на стороне клиента

На клиентских машинах необходимо настроить модуль Обновление системы отметив в нем «Обновление системы, управляемое сервером». Процесс обновления будет запускаться автоматически согласно заданному расписанию.

Собственно обновление осуществляется не через общесистемные источники в /etc/apt/sources.list*, а командой

/usr/sbin/sisyphus-updates >/var/log/sisyphus-updates.log 2>&1

конфигурация: /etc/sisyphus-updates/sisyphus-updates.conf

При этом и на сервере и на клиенте должна быть запущена служба avahi-daemon