Alterator-mirror

Материал из ALT Linux Wiki

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

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 — папка-хранилище локального репозитория.

Либо отредактировать файл /usr/lib/alterator/backend3/mirror, изменив переменную dest_dir=/media/disk/localrepo

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

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

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

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

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

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

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

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


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

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

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

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


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

Примечание: Если в каталогах /srv/public/mirror/<репозиторий>/branch/<архитектура>/base/ нет файлов pkglist.* значит зеркалирование не закончено (т.е. не все файлы загружены на ваш сервер).


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

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

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

Установить веб-сервер, например 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.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


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

Установить пакет rsync-server:

# apt-get install rsync-server

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

# default: off
# default: off
# description: The rsync server is a good addition to an ftp server,
#       as it allows crc checksumming etc.
service rsync
{
        disable         = no
        socket_type     = stream
        wait            = no
        user            = root
        nice            = 10
        rlimit_as       = 16M
        server          = /usr/bin/rsync
        server_args     = --daemon
        only_from       = 0.0.0.0 # предоставить доступ для всех IP
}

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

# systemctl restart xinetd

Внести изменения в конфигурационный файл /etc/rsyncd.conf:

[mirror]
        log file = /var/log/rsyncd/rsyncd.log
        comment = Mirror AltLinux P10
        path = /srv/public/mirror
        read only = true
        transfer logging = yes

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

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

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

Например:

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

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

# apt-repo
rpm http://192.168.0.185/mirror p10/branch/x86_64 classic
rpm http://192.168.0.185/mirror p10/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