Привет Хабр, меня зовут Данила Гуляев, я — методист Linux-решений в АСКОН, и сегодня мы поговорим о развёртывании программных продуктов в условиях предприятий с закрытыми внутренними сетями. Не секрет, что наша активно развивающаяся линейка продуктов для Linux востребована там, где на рабочих местах нет доступа к интернету. Эта статья должна в первую очередь ответить на вопросы технических специалистов таких предприятий.
Мы будем использовать Astra Linux Special Edition 1.8 в качестве операционной системы как для сервера репозитория, так и для клиентских машин. Покажем на примере КОМПАС-3D и его приложений, но общие принципы, которые мы используем, обязательно сработают и для других программ.
Мы разыграем полноценный сценарий развёртывания приложений в закрытой сети в два этапа.
В первой части имитируем работу из внешней сети: покажем репозитории-источники приложений, разберём их подключение и выгрузим все необходимые пакеты на внешний носитель. Далее этот внешний носитель пройдёт воображаемую проверку безопасности, и его содержимое будет передано в закрытый контур.
Затем мы завершим наш сценарий из внутренней сети: развернём локальный репозиторий с полученными пакетами и установим приложения на машину в закрытом контуре нашего воображаемого предприятия.

Часть 1. Получение установочных материалов из открытой сети
1.1 Подключение репозитория
Посмотрим на последовательность действий сотрудника предприятия во внешней сети, который получит и передаст на дальнейшую проверку необходимые для установки ресурсы.
Пакеты от АСКОН располагаются в официальных открытых репозиториях и могут быть подключены через скрипт, описанный в прилагающейся документации.
Для КОМПАС-3D можно воспользоваться документом Readme или официальной справкой. Скопируем содержимое справки, откроем терминал сочетанием клавиш Alt+T или из меню приложений и выполним команду:
sudo bash -c «$(wget -O — https://repo.ascon.ru/scripts/ascon-stable-deb.sh)»
sudo bash -c "$(wget -O - https://repo.ascon.ru/scripts/ascon-stable-deb.sh)"
Скрипт автоматически подключит репозиторий КОМПАС-3D и получит информацию о содержащихся в нём пакетах.
1.2 Активация репозиториев Astra Linux
Для скачивания и установки нам могут потребоваться также интернет-репозитории Astra Linux, поэтому сначала убедимся, что они подключены. Это можно сделать как с помощью прямого редактирования файла репозиториев, так и командой из следующего пункта справки:
sudo sed -i '/repository-main/s/^#//g' /etc/apt/sources.listsudo sed -i '/repository-extended/s/^#//g' /etc/apt/sources.list
Обновим информацию о подключённых репозиториях командой:
sudo apt update
1.3 Определение состава установки
Все пакеты, связанные с АСКОН, начинаются с ключевого слова ascon-. Мы можем вывести их список и краткие описания командой
apt search -n ascon-*
Или выбрать конкретный пакет и получить его описание командой
apt show ascon-kompas3d-v25-full
таким образом выбрав необходимый для нас состав установки.
1.4 Установка КОМПАС-3D
На данном этапе в условиях открытой сети я бы мог просто поставить, например, полную версию КОМПАС-3D со всеми доступными компонентами командой
sudo apt install ascon-kompas3d-v25-full ascon-common-coredump-watcher
Но наша задача — скачать и передать установочные данные коллегам внутри закрытого контура, поэтому мы пропустим этот шаг и будем двигаться дальше.
1.5 Скачивание пакетов
Подключим к компьютеру внешний носитель (у меня в этой роли будет обычная флешка) и создадим внутри папку, в которой мы хотели бы сохранить архив с передаваемыми пакетами.
Откроем статью базы знаний АСКОН с командами для определения рекурсивных зависимостей пакетов. Скопируем команду для Astra Linux. Откроем терминал из ранее созданной папки и вставим команду:
apt-cache depends —recurse —no-recommends —no-suggests —no-conflicts —no-breaks —no-replaces —no-enhances ascon-kompas3d-v25-full ascon-kompas-coredump watcher | grep «^\w» | sort -u
В выводе получился внушительный список пакетов зависимостей. В данном сценарии нас интересуют только пакеты, связанные с АСКОН, поэтому в конец команды я добавлю | grep ascon.
apt-cache depends —recurse —no-recommends —no-suggests —no-conflicts —no-breaks —no-replaces —no-enhances ascon-kompas3d-v25-full ascon-kompas-coredump-watcher | grep «^\w» | sort -u | grep ascon
Вывод значительно сократился.
Для удобства запишу вывод в текстовый файл внутри той же папки:
apt-cache depends —recurse —no-recommends —no-suggests —no-conflicts —no-breaks —no-replaces —no-enhances ascon-kompas3d-v25-full ascon-kompas-coredump watcher | grep «^\w» | sort -u | grep ascon > list.txt
После чего можно будет скачать все пакеты в текущую папку простой командой
apt download $(cat list.txt)
В данном случае мы скачиваем всё необходимое для установки КОМПАС-3D версии 25 и всех доступных приложений, а также утилиты сбора диагностической информации АСКОН. Мы рекомендуем не пренебрегать этой утилитой даже в условиях отсутствия подключения к интернету, поскольку, наряду с отправкой отчётов при сбоях, эта утилита способна делать выгрузки при ошибках, в некоторых случаях необходимые для осуществления техподдержки.
Дополнительно для вашего удобства репозиторий АСКОН содержит пакет сервера лицензий Guardant, который можно скачать либо с помощью команды apt download grdcontrol, либо напрямую с ресурсов Guardant.
1.6 Передача пакетов в закрытый контур
Мы получили пакеты, а значит наш внешний носитель или архив можно передавать на проверку службы безопасности, а затем – в закрытую сеть предприятия.
Со стороны закрытого контура будет присутствовать сервер и рабочая станция, к которому мы далее подключим репозиторий. Абстрагируемся от создания локальных репозиториев Astra Linux main/extended – предположим, что они уже развёрнуты внутри контура и подключены на сервере и на клиенте. На эту тему у наших коллег есть соответствующая справка.
Часть 2. Развёртывание и подключение локального репозитория в закрытой сети
2.1 Развёртывание сервера с локальным репозиторием
В этом примере предлагается развернуть локальный веб-репозиторий на базе nginx. Для его сборки нам также потребуется утилита dpkg-dev, содержащая утилиты разработчика. Зайдём на сервер, обновим информацию и поставим нужные пакеты:
sudo apt updatesudo apt install nginx dpkg-dev -y
Далее напишем конфигурацию для нашей веб-страницы nginx. Это можно сделать с помощью любого текстового редактора, например, nano. Создадим новый файл в директории /etc/nginx/sites-available под именем repository:
sudo nano /etc/nginx/sites-available/repository
И заполним его минимальной конфигурацией:
server {listen 8080 default_server;listen [::]:8080 default_server;root /srv/repo;location / {try_files $uri $uri/ -404;autoindex on;autoindex_exact_size off;auth_basic off;}}
Данная конфигурация поднимает сервер, который будет слушать TCP-порт 8080 на всех IPv4 и IPv6 адресах без необходимости аутентификации. Корень нашего сервера расположен в директории /srv/repo. По желанию параметры сервера можно поменять для соответствия требованиям в вашей сети. Сохраним конфигурацию и выйдем из редактора с помощью последовательности сочетаний клавиш: Ctrl+O, Enter, Ctrl+X.
Созданную конфигурацию необходимо перенести в рабочий каталог nginx. Это можно сделать простым копированием или, в нашем случае, созданием символической ссылки в директории /etc/nginx/sites-enabled:
sudo ln -s /etc/nginx/sites-available/repository /etc/nginx/sites-enabled
Создание символической ссылки позволит при необходимости менять содержимое файла только в директории /etc/nginx/sites-available/.
Поскольку ссылка вsites-enabledпросто указывает на оригинальный файл, все изменения применятся автоматически после перезагрузки nginx.
Удалим из рабочей директории nginx умолчательную конфигурацию:
sudo unlink /etc/nginx/sites-enabled/default
Проверим новую конфигурацию nginx:
sudo nginx -t
После чего можем перезапустить сервис:
sudo nginx -s reload
Теперь наш сервер запущен и работает. Осталось лишь создать директорию, которая будет содержать репозиторий:
sudo mkdir /srv/repo
Можно проверить работу сервера, отправив запрос с помощью curl:
curl localhost:8080/
Мы получим html-страницу со списком (на данный момент пустым) файлов в корневой директории.
Создадим в директории /srv/repo/ поддиректорию ascon:
sudo mkdir /srv/repo/ascon
И переместим туда все ранее полученные из внешней сети пакеты любым удобным способом.
После наполнения нашего репозитория пакетами необходимо сгенерировать метаданные и упаковать их в .gz-архив:
cd /srv/repo/asconsudo dpkg-scanpackages -m /dev/null > Packagesgzip -9c Packages > Packages.gz
2.2 Подключение репозитория к клиентской машине
На клиенте создадим новый файл репозитория ascon.list в папке /apt/sources.list.d/ и откроем его с помощью любого текстового редактора, например, nano:
sudo nano /etc/apt/sources.list.d/ascon.list
И заполним его следующей строкой:
deb [trusted=yes] http://server.address:8080/ascon ./
Где server.address — это адрес сервера с репозиторием в вашей сети, а параметр [trusted=yes] позволяет подключаться к репозиторию без проверки подписи. При желании вместо этого параметра можно настроить проверку по GPG-ключу: добавить ключ в систему и указать его в конфигурации репозитория.
Сохраним конфигурацию и выйдем из редактора с помощью последовательности сочетаний клавиш: Ctrl+O, Enter, Ctrl+X.
И обновим информацию о подключённых репозиториях:
sudo apt update
2.3 Установка КОМПАС-3D из локального репозитория
После завершения настройки можно будет поставить КОМПАС-3D ранее упомянутой командой, как из сетевого репозитория:
sudo apt install ascon-kompas3d-v25-full ascon-common-coredump-watcher
Заключение
Мы рассмотрели полный цикл подготовки и развертывания КОМПАС-3D в закрытом контуре предприятия. В данном материале использовались стандартные возможности пакетного менеджера и бесплатные утилиты. Итогом стал полностью рабочий локальный репозиторий, который позволяет подключать клиентские машины за считанные минуты и обеспечивает работу, идентичную сетевому хранилищу.
Мы продолжаем развивать линейку наших продуктов для Linux, а также совершенствовать сопутствующую документацию и практические руководства. Разумеется, в рамках одной статьи невозможно охватить все тонкости и сценарии развёртывания ПО в закрытом контуре — условия и задачи могут отличаться для различных предприятий. Мы ценим обратную связь, поэтому приглашаем вас делиться вопросами, идеями и пожеланиями в комментариях.
ссылка на оригинал статьи https://habr.com/ru/articles/1058946/