Установка пакетов на сервер без доступа к интернет
Обзор
Чтобы установить систему на сервер, на котором отсутствует доступ к интернет, необходимо воспользоваться установщиком пакетов.
Его необходимо запускать на локальной машине с доступом к интернет.
С помощью docker-контейнера с экземпляром ОС, аналогичной установленной на сервере, установщик загружает необходимые пакеты, копирует на сервер и устанавливает там со всеми зависимостями.
Процесс имеет около 10 этапов и может занять до 15 минут.
В случае доступа к серверу через VPN может отсутствовать одновременный доступ к сети интернет на локальной машине.
Для этого скрипт установщика уведомляет о необходимости подготовиться и обеспечить то или иное подключение, и ожидает подтверждения от человека.
После завершения скрипта-установщика все необходимые пакеты будут установлены на сервере, и в ходе основного процесса установки можно выбрать режим установки без доступа к сети интернет.
Алгоритм
1) Распаковать или скопировать инсталлятор era. Например в каталог /tmp
2) Установить docker на локальной машине.
sudo apt install -y docker-ce docker-ce-cli containerd.io
3) Запустить скрипт-установщик пререквизитов.
cd /tmp/debian_ubuntu bash prerequisites.sh
4) Ввести адрес сервера, на который производится установка, и логин пользователя на сервере. При запросе ввести пароль пользователя.
Welcome to era prerequisites installer. NOTE! You need docker installed on local host. =============================================================== Install packages script started =============================================================== Enter remote server IP-address: 192.168.0.115 Enter remote server login: admin
5) По мере работы установщика подтверждать наличие подключения к серверу и к сети интернет на локальной машине.
Список этапов скрипта установки
1) Подключение к удаленному серверу по ssh, загрузка скриптов на сервер.
2) Определение типа и версии операционной системы на сервере (osver.sh).
3) Определение списка необходимых пакетов, которые отсутствуют на сервере (filter_packages.sh).
4) Запуск на локальной машине docker-контейнера с операционной системой, аналогичной удаленному серверу. Установка в контейнере пакетов. (container_start.sh)
5) Построение списка зависимостей для необходимых пакетов в контейнере (container_deps.sh).
6) Фильтрация списка зависимостей, которые отсутствуют на сервере (filter_packages.sh).
7) Скачивание пакетов в docker-контейнере в папку с подключенным волюмом для доступа из хоста (container_download.sh).
8) Остановка docker-контейнера.
9) Загрузка скачанных пакетов на сервер (upload.sh).
10) Установка скачанных пакетов на сервере (install_packages.sh).
Список пакетов
apt install -y rsync \ net-tools \ tree \ curl \ wget \ zip \ sshpass \ sysstat \ htop \ iotop \ dstat \ smartmontools \ tshark \ locales \ locales-all \ nfs-kernel-server \ nfs-common \ apt-transport-https \ ca-certificates \ software-properties-common \ gnupg-agent \ docker-ce \ docker-ce-cli \ containerd.io \ postgresql-14