Создание корпоративного репозитория Р-Виртуализация

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

Данная инструкция позволит вам настроить веб сервер NGINX в операционной системе Alpine Linux для размещения статических файлов, например репозитория дистрибутивов ПО.

Необходимо выполнить следующие команды для добавления и настройки Nginx:

  • Обновить кэш менеджера пакетов, командой:
     apk update 
  • Установить веб-сервер NGINX:
    apk add nginx
  • Добавить пользователя веб-сервера в систему и задать ему соответствующие права
    adduser -D -g 'www' www
      chown -R www:www /var/lib/nginx
      chown -R www:www /var/local-repo
  • Создать конфигурационный файл нового веб-ресурса и задать ему следующие значения, где repo.local - доменный адрес создаваемого сервера.
    vi /etc/nginx/http.d/mirror.conf
    /etc/nginx/http.d/mirror.conf
    server {
        listen      80;
        server_name repo.local;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header Referrer-Policy "no-referrer";
     
        root /var/local-repo/;
     
        location / {
          autoindex on;
          allow all;
          sendfile on;
          sendfile_max_chunk 1m;
          autoindex_exact_size off;
          autoindex_format html;
          autoindex_localtime on;
          }
        error_page 404 /404.html;
        location = /40x.html {
          }
        error_page 500 502 503 504 /50x.html;
          location = /50x.html {
          }
    }
  • Запустить веб-сервер NGINX и настроить его автоматическую загрузку при включении операционной системы.
    rc-service nginx start
    rc-update add nginx default 

ОПЦИОНАЛЬНО: Настройка авторизации на веб сервере

Для защиты веб сервера NGINX простой авторизацией, требующей ввод имени пользователя и пароля необходимо:

  • Установить необходимые пакеты, командой
     apk add apache2-utils 
  • Создать файл, который будет содержать логины и шифрованные пароли пользователей, имеющих доступ:
     touch /etc/nginx/.htpasswd && chown www:www /etc/nginx/.htpasswd 
  • Добавить в авторотационный файл новую запись имени пользователя и пароля, командой1):
     htpasswd /etc/nginx/.htpasswd username
  • Внести в конфигурационный файл веб-сервера NGINX, в раздел location / строки с указанием необходимости авторизации пользователей2):
    vi /etc/nginx/http.d/mirror.conf
    /etc/nginx/http.d/mirror.conf
          auth_basic "Restricted Content";
          auth_basic_user_file /etc/nginx/.htpasswd;
  • Перезапустить веб сервер NGINX
     rc-service nginx restart 
  • Проверить полученный результат, обратившись по адресу веб-сервера.

Настройка синхронизации пакетов

Для регулярной синхронизации пакетов и обновления локального репозитория необходимо добавить следящие строки в планировщик заданий пользователя www. Для этого необходимо выполнить команду

crontab -u www -e

В открывшемся редакторе планировщика добавить следующие строки:

0 0 * * 1-5 /usr/bin/rsync -av rsync://updates.rosplatforma.ru/r-virtualization-linux /var/local-repo/www/r-virtualization-linux --exclude "6" --delete
0 2 * * 1-5 /usr/bin/rsync -av rsync://updates.rosplatforma.ru/r-virtualization /var/local-repo/www/r-virtualization --delete
0 4 * * 1-5 /usr/bin/rsync -av rsync://updates.rosplatforma.ru/r-management /var/local-repo/www/r-management --exclude "*-6.0.0" --delete

В данном примере команд планировщика производится синхронизация трех репозиториев по будням в 0, 2, 4 часа. Пакеты версии 6 исключаются.

На момент подготовки инструкции репозиторий без версии 6 занимает 220 ГБ.

Изменение адреса репозитория в гипервизоре Росплатформа

Для смены интернет-репозитория на локальный необходимо выполнить следующие команды в консоли каждого сервера виртуализации Росплатформа.

  • Заархивировать оригинальные конфигурационные файлы на случай необходимости восстановления. Данная команда создает файл-архив /etc/yum.repos.d/internet-repo.tar и переносит туда все настройки репозиторием обновления продукта.
     tar -cf /etc/yum.repos.d/internet-repo.tar --remove-files /etc/yum.repos.d/* 
  • Создать новые конфигурационные файлы, которые будут описывать расположение пакетов обновления ПО, используя команды приведенные ниже или вручную. В конфигурационных файлах и командах необходимо заменить mirror.micronode.ru на соответствующий URL репозитория.
  • Выполнить команду yum update для проверки и обновления пакетов.
echo "[va-agent]
name=R-Management Agent
baseurl=http://mirror.micronode.ru/r-management/va-agent/releases/7.0/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-7
 
[va-agent-updates]
name=R-Management Agent Updates
baseurl=http://mirror.micronode.ru/r-management/va-agent/updates/7.0/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-7" > /etc/yum.repos.d/va-agent.repo
echo "# Rosplatforma repo file
[rosplatforma-base]
name=RosPlatforma - Base
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
 
#released updates
[rosplatforma-updates]
name=RosPlatforma - Updates
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/\$basearch/updates/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY" > /etc/yum.repos.d/r-virtualization-linux.repo
echo "[r-virtualization-os]
name=R-Virtualization
baseurl=http://mirror.micronode.ru/r-virtualization/releases/7.0/\$basearch/os/
enabled=1
gpgcheck=1
priority=50
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7
 
[r-virtualization-updates]
name=R-Virtualization Updates
baseurl=http://mirror.micronode.ru/r-virtualization/updates/7.0/\$basearch/os/
enabled=1
gpgcheck=1
priority=50
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7" > /etc/yum.repos.d/r-virtualization.repo

Содержимое конфигурационных файлов приведено ниже.

/etc/yum.repos.d/va-agent.repo
[va-agent]
name=R-Management Agent
baseurl=http://mirror.micronode.ru/r-management/va-agent/releases/7.0/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-7
 
[va-agent-updates]
name=R-Management Agent Updates
baseurl=http://mirror.micronode.ru/r-management/va-agent/updates/7.0/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-7
/etc/yum.repos.d/r-virtualization-linux.repo
# Rosplatforma repo file
[rosplatforma-base]
name=RosPlatforma - Base
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
 
#released updates
[rosplatforma-updates]
name=RosPlatforma - Updates
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/$basearch/updates/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
/etc/yum.repos.d/r-virtualization.repo
[r-virtualization-os]
name=R-Virtualization
baseurl=http://mirror.micronode.ru/r-virtualization/releases/7.0/$basearch/os/
enabled=1
gpgcheck=1
priority=50
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7
 
[r-virtualization-updates]
name=R-Virtualization Updates
baseurl=http://mirror.micronode.ru/r-virtualization/updates/7.0/$basearch/os/
enabled=1
gpgcheck=1
priority=50
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7

Изменение адреса репозитория в контейнере Р-Управление

Для смены интернет-репозитория в контейнере веб интерфейса Р-Управление на локальный необходимо выполнить следующие команды в консоли сервера виртуализации Росплатформа, на котором в текущий момент выполняется контейнер va-mn.

  • Заархивировать оригинальные конфигурационные файлы на случай необходимости восстановления. Данная команда создает файл-архив /etc/yum.repos.d/internet-repo.tar и переносит туда все настройки репозиторием обновления продукта.
    prlctl exec va-mn "tar -cf /etc/yum.repos.d/internet-repo.tar --remove-files /etc/yum.repos.d/*" 
  • Создать новые конфигурационные файлы, которые будут описывать расположение пакетов обновления ПО, используя команды приведенные ниже или вручную, подключившись к консоли контейнера командой prlctl enter va-mn. В конфигурационных файлах и командах необходимо заменить mirror.micronode.ru на соответствующий URL репозитория.
  • Выполнить команду prlctl exec va-mn yum update -y для проверки и обновления пакетов.

Команды для автоматического создания необходимых файлов приведены ниже:

prlctl exec va-mn 'echo "# Rosplatforma repo file
[rosplatforma-base]
name=RosPlatforma - Base
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
 
#released updates
[rosplatforma-updates]
name=RosPlatforma - Updates
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/\$basearch/updates/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY" >  /etc/yum.repos.d/r-virtualization-linux.repo'
prlctl exec va-mn 'echo "[va-mn]
name=R-Management Management Node
baseurl=http://updates.rosplatforma.ru/r-management/va-mn/releases/7.0/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-MN-7
 
[va-mn-updates]
name=R-Management Management Node Updates
baseurl=http://updates.rosplatforma.ru/r-management/va-mn/updates/7.0/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-MN-7" >  /etc/yum.repos.d/r-management.repo'

Содержимое конфигурационных файлов приведено ниже.

/etc/yum.repos.d/r-virtualization-linux.repo
# Rosplatforma repo file
[rosplatforma-base]
name=RosPlatforma - Base
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
 
#released updates
[rosplatforma-updates]
name=RosPlatforma - Updates
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/$basearchh/updates/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
/etc/yum.repos.d/r-management.repo
[va-mn]
name=R-Management Management Node
baseurl=http://updates.rosplatforma.ru/r-management/va-mn/releases/7.0/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-MN-7
 
[va-mn-updates]
name=R-Management Management Node Updates
baseurl=http://updates.rosplatforma.ru/r-management/va-mn/updates/7.0/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-MN-7

Изменение адреса репозитория в контейнере веб интерфейса Р-Хранилище

Для смены интернет-репозитория в контейнере веб интерфейса Р-Хранилище на локальный необходимо выполнить следующие команды в консоли сервера виртуализации Росплатформа, на котором в текущий момент выполняется контейнер vstorage-ui.

  • Заархивировать оригинальные конфигурационные файлы на случай необходимости восстановления. Данная команда создает файл-архив /etc/yum.repos.d/internet-repo.tar и переносит туда все настройки репозиторием обновления продукта.
    prlctl exec vstorage-ui "tar -cf /etc/yum.repos.d/internet-repo.tar --remove-files /etc/yum.repos.d/*"
  • Создать новые конфигурационные файлы, которые будут описывать расположение пакетов обновления ПО, используя команды приведенные ниже или вручную, подключившись к консоли контейнера командой prlctl enter vstorage-ui. В конфигурационных файлах и командах необходимо заменить mirror.micronode.ru на соответствующий URL репозитория.
  • Выполнить команду prlctl exec vstorage-ui yum update -y для проверки и обновления пакетов.

Команды для автоматического создания необходимых файлов приведены ниже:

prlctl exec vstorage-ui 'echo "# Rosplatforma repo file
[rosplatforma-base]
name=RosPlatforma - Base
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
 
#released updates
[rosplatforma-updates]
name=RosPlatforma - Updates
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/\$basearch/updates/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY" >  /etc/yum.repos.d/r-virtualization-linux.repo'
prlctl exec vstorage-ui 'echo "[storage-ui]
name=Storage UI
baseurl=http://updates.rosplatforma.ru/r-virtualization/releases/7.0/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7
 
[storage-ui-updates]
name=Storage UI Updates
baseurl=http://updates.rosplatforma.ru/r-virtualization/updates/7.0/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7" >  /etc/yum.repos.d/r-virtualization.repo'

Содержимое конфигурационных файлов приведено ниже.

/etc/yum.repos.d/r-virtualization-linux.repo
# Rosplatforma repo file
[rosplatforma-base]
name=RosPlatforma - Base
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
 
#released updates
[rosplatforma-updates]
name=RosPlatforma - Updates
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/$basearch/updates/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
/etc/yum.repos.d/r-virtualization.repo
[storage-ui]
name=Storage UI
baseurl=http://updates.rosplatforma.ru/r-virtualization/releases/7.0/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7
 
[storage-ui-updates]
name=Storage UI Updates
baseurl=http://updates.rosplatforma.ru/r-virtualization/updates/7.0/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7

Использованием репозиториев защищенных простой аутентификацией (basic_auth)

В случае если корпоративный репозиторий пакетов Р-Виртуализация защищен базовой аутентификацией требующей ввода логина пароля для доступа к сайту, в конфигурационных файлах резпоизториев необходимо дополнительно указать имя пользователя и пароль в следующем формате:

username=update
password=P@ssw0rd!

где:

  • update - заменить на логин пользователя.
  • P@ssw0rd! - заменить на пароль.

После внесения изменений конфигурационные файлы должны выглядеть следующим образом:

/etc/yum.repos.d/va-agent.repo
[va-agent]
name=R-Management Agent
baseurl=http://mirror.micronode.ru/r-management/va-agent/releases/7.0/$basearch/os/
username=update
password=P@ssw0rd!
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-7
 
[va-agent-updates]
name=R-Management Agent Updates
baseurl=http://mirror.micronode.ru/r-management/va-agent/updates/7.0/$basearch/os/
username=update
password=P@ssw0rd!
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-7
/etc/yum.repos.d/r-virtualization-linux.repo
# Rosplatforma repo file
[rosplatforma-base]
name=RosPlatforma - Base
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/$basearch/os/
username=update
password=P@ssw0rd!
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
 
#released updates
[rosplatforma-updates]
name=RosPlatforma - Updates
baseurl=http://mirror.micronode.ru/r-virtualization-linux/7/$basearch/updates/
username=update
password=P@ssw0rd!
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPLATFORM_GPG_KEY
/etc/yum.repos.d/r-virtualization.repo
[r-virtualization-os]
name=R-Virtualization
baseurl=http://mirror.micronode.ru/r-virtualization/releases/7.0/$basearch/os/
username=update
password=P@ssw0rd!
enabled=1
gpgcheck=1
priority=50
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7
 
[r-virtualization-updates]
name=R-Virtualization Updates
baseurl=http://mirror.micronode.ru/r-virtualization/updates/7.0/$basearch/os/
username=update
password=P@ssw0rd!
enabled=1
gpgcheck=1
priority=50
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Virtualization-7
/etc/yum.repos.d/r-management.repo
[va-mn]
name=R-Management Management Node
baseurl=http://updates.rosplatforma.ru/r-management/va-mn/releases/7.0/$basearch/os/
username=update
password=P@ssw0rd!
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-MN-7
 
[va-mn-updates]
name=R-Management Management Node Updates
baseurl=http://updates.rosplatforma.ru/r-management/va-mn/updates/7.0/$basearch/os/
username=update
password=P@ssw0rd!
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-R-Management-MN-7
1)
В параметрах команды вместо username необходимо указать логин пользователя
2)
Изменения необходимо внести в конфигурационный файл, который описывает параметры требуемого веб сервера