дата публикации 04.02.2019

Создание зеркала apt-mirror для proxmox

При добавлении новых нод proxmox в кластер ceph важно иметь одинаковую версию всех пакетов. В этом нам поможет создание собственного зеркала обновлений apt-mirror.

Добавляем контейнер или виртуальную машину debian 9. Установим пакет apt-mirror

apt install apt-mirror

Делаем копию установочного конфига и создаем новый конфиг с таким содержимым:

# mv /etc/apt/mirror.list /etc/apt/mirror.list.back
# nano /etc/apt/mirror.list
set base_path /media/data/proxmox-repo # путь к папке с репой
set defaultarch amd64 # архитектура репозитория
set nthreads 20 # системные значения
set _tilde 0

# репозитории, которые надо зеркалить
deb http://ftp.ru.debian.org/debian stretch main contrib
deb http://ftp.ru.debian.org/debian stretch-updates main contrib
deb http://security.debian.org stretch/updates main contrib
deb http://download.proxmox.com/debian stretch pve-no-subscription
deb http://repo.zabbix.com/zabbix/3.0/debian stretch main
deb-src http://repo.zabbix.com/zabbix/3.0/debian stretch main
deb http://download.proxmox.com/debian/ceph-luminous stretch main

# удалять устаревшие версии пакетов
clean http://download.proxmox.com/debian
clean http://ftp.ru.debian.org/debian
clean http://security.debian.org
clean http://repo.zabbix.com/zabbix/3.0/debian
clean http://download.proxmox.com/debian/ceph-luminous

В моем случае помимо основных пакетов proxmox присутствует репозиторий для zabbix. Размер созданной репы будет в районе 100Gb.

Создаем необходимые для работы папки и обновляем зеркало:

mkdir /media/data
mkdir /media/data/proxmox-repo
mkdir /media/data/proxmox-repo/var
mkdir /media/data/proxmox-repo/mirror
mkdir /media/data/proxmox-repo/skel

apt-mirror

На несколько часов можно оставить это дело в покое. Открываем еще одно терминала и продолжаем настройку. 

Установим apache2

apt install apache2

В результате выполнения команды apt-mirror по пути /media/data/proxmox-repo/mirror/ появятся зеркалированные объекты, у меня это выглядит вот так:

# ls -l
download.proxmox.com
ftp.ru.debian.org
repo.zabbix.com
security.debian.org

Для публикации зеркала создадим линки из папки /var/www/html/

ln -s /media/data/proxmox-repo/mirror/download.proxmox.com /var/www/download.proxmox.com
ln -s /media/data/proxmox-repo/mirror/security.debian.org /var/www/security.debian.org
ln -s /media/data/proxmox-repo/mirror/ftp.ru.debian.org /var/www/ftp.ru.debian.org
ln -s /media/data/proxmox-repo/mirror/repo.zabbix.com /var/www/html/repo.zabbix.com

На обновляемых хостах proxmox необходимо заменить все репозитории в /etc/apt/. Должно получиться примерно так:

# старое значение
#deb http://ftp.ru.debian.org/debian stretch main contrib
# новое значение
deb http://ip-адрес-или-доменное-имя/ftp.ru.debian.org/debian stretch main contrib

И так для каждого зеркалированного репозитория.
И последнее действие. Чтоб при обновлении избежать ошибки Release file for is expired создаем файл с таким содержимым на каждой ноде:

nano /etc/apt/apt.conf.d/10no--check-valid-until
Acquire::Check-Valid-Until "0";