Так как наш проект по внедрению REDOS перешел в Production-фазу, то как я уже говорил мы работаем в закрытом контуре без доступа в интернет. Следовательно для установки програмного обеспечения и обновлений нам необходимо развернуть собственный пакетный репозитарий.
Установка необходимого программного обеспечения.
Нам понадобиться собственно утилиты для клонирования репозитария и веб-сервер Apache.
# dnf install httpd createrepo yum-utils
# dnf install mod_ssl
Клонирование официальных репозиториев локально
Доступ в интернет с этого сервера разрешен только на врема обновления репозиториев и с использованием HTTP-прокси. Поэтому модифицируем наши официальные репозитории REDOS на использование HTTP Proxy.
Репозиторий Base — /etc/yum.repos.d/RedOS-Base.repo.
[base]
proxy=http://10.54.32.54:3128
name=RedOS - Base
baseurl=https://repo1.red-soft.ru/redos/8.0/$basearch/os,https://mirror.yandex.ru/redos/8.0/$basearch/os,http://repo.red-soft.ru/redos/8.0/$basearch/os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1
Репозиторий Updates — /etc/yum.repos.d/RedOS-Updates.repo.
[updates]
proxy=http://10.54.32.54:3128
name=RedOS - Updates
baseurl=https://repo1.red-soft.ru/redos/8.0/$basearch/updates,https://mirror.yandex.ru/redos/8.0/$basearch/updates,http://repo.red-soft.ru/redos/8.0/$basearch/updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1
Создаем каталоги куда будем сохранять наши репозитарии.
# mkdir -p /opt/repo/base/
# mkdir -p /opt/repo/updates/
Создаем локальные клоны репозитариев.
# reposync --repoid=base --downloadcomps --download-metadata --norepopath -p=/opt/repo/base/
# reposync --repoid=updates --downloadcomps --download-metadata --norepopath -p=/opt/repo/updates/
После загрузки репозиториев создаем метаданные.
# createrepo -v /opt/repo/base/ -g comps.xml
# createrepo -v /opt/repo/updates/ -g comps.xml
Обязательно проверьте общий объем репозитария и убедитесь, что у вас достаточно места на диске. Клонирование занимает довольно много времени в связи с большим объемом репозитария.
# dnf repoinfo base | grep «Размер репозитория»
Размер репозитория : 99 G
# dnf repoinfo updates | grep «Размер репозитория»
Размер репозитория : 209 G
Настройка WEB-сервера для предоставления доступа к репозитариям для клиентов
Прежде всего вводим наш сервер обновлений в FreeIPA-домен. Таким образом мы зададим ему обновляемое доменное имя в рамках домена и выпустим сертификат сервера для HTTP-сервера.
Повторяться не буду и просто оставлю ссылки на заметки:
- Ввод рабочей станции РЕД ОС в IPA-домен
- Генерация ключа и сертификата для сайта с помощью удостоверяющего центра (УЦ RedOS)
И теперь нам осталось сконфигурировать WEB-сервер Apache для предоставления досупа к репозитарию и простейшем виде конфигурация виртуального хоста будет выглядеть следующим образом (/etc/httpd/conf.d/rrepo01-vm-nux.ipa.sngp.su.conf).
<VirtualHost *:80>
ServerName rrepo01-vm-nux.ipa.sngp.su
RewriteEngine on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName rrepo01-vm-nux.ipa.sngp.su
DocumentRoot /opt/repo/
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/rrepo01-vm-nux.ipa.sngp.su.crt
SSLCertificateKeyFile /etc/httpd/ssl/rrepo01-vm-nux.ipa.sngp.su.key
</VirtualHost>
</IfModule>
<Directory "/opt/repo/">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Настраиваем права доступа и запускаем сервис.
# systemctl start httpd
# systemctl enable httpd
# chown apache:apache /opt/repo/
Создаем скрипт для обновления репозитариев и перестроения базы метаданных репозитария (/usr/local/bin/repo_update.sh).
#!/bin/sh
reposync --repoid=base --downloadcomps --download-metadata --norepopath -p=/opt/repo/base/
createrepo -v /opt/repo/base/ -g comps.xml
reposync --repoid=updates --downloadcomps --download-metadata --norepopath -p=/opt/repo/updates/
createrepo -v /opt/repo/updates/ -g comps.xml
Настройка клиента для использования локального хранилища репозиториев REDOS
В моем случае я сделал единый файл конфигурации для base и update следующего вида (/etc/yum.repos.d/RedOS-LOCAL.repo).
[base]
name=RedOS - Base
baseurl=https://rrepo01-vm-nux.ipa.sngp.su/base
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1
[updates]
name=RedOS - Updates
baseurl=https://rrepo01-vm-nux.ipa.sngp.su/updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1




