Автоматическая установка Ubuntu 24.04 с использованием локальных репозиториев

Вопрос или проблема

Заранее извиняюсь за длинный пост, но я хотел включить как можно больше контекста.

BLUF: Я пытаюсь автоматизировать установку Ubuntu 24.04, используя локальное зеркало, а не открывая какие-либо из коробок в интернет. У меня есть частное зеркало, размещенное на http://101.101.101.101:81/ubuntu, однако, если я настраиваю секцию APT в моем autoinstall.yaml, чтобы она указывала на частное зеркало, установка Ubuntu не завершается, а установщик вылетает с ошибкой.

Я знаю, что похожие вопросы уже задавались ранее, однако я еще не нашел решения проблемы, с которой я сталкиваюсь. Я чисто установил Ubuntu 24.04 без каких-либо изменений на тестовом компьютере без проблем. Затем я смог убедиться, что мое частное зеркало доступно с тестового компьютера, используя ping, curl и т.д. Далее я сократил autoinstall.yaml, чтобы включить только версии, источник, региональные настройки, клавиатуру, часовой пояс и разделы идентификации и убедился, что могу успешно достичь autoinstall.yaml (также размещенного на http://101.101.101.101:81/ubuntu) и установить Ubuntu 24.04 успешно.

Работающий минимальный autoinstall:

#cloud-config
autoinstall:
  version: 1
  source:
    id: ubuntu-desktop-minimal
  locale: en_US.UTF-8
  keyboard:
    layout: us
  timezone: UTC
  identity:
    hostname: ubuntu-auto-test
    username: user
    password: <encrypted_password>

Проблема возникает, когда я пытаюсь добавить секцию APT, чтобы указать на мое частное зеркало. Обратите внимание, что мое частное зеркало имеет следующую структуру:

http://101.101.101.101:81/ubuntu
|-- noble/
  |-- by-hash/
  |-- main/
  |-- restricted/
  |-- universe/
  |-- InRelease
  |-- Release
  |-- Release.gpg
|-- noble-updates/
  |-- by-hash/
  |-- main/
  |-- restricted/
  |-- universe/
  |-- InRelease
  |-- Release
  |-- Release.gpg
|-- noble-backports/
  |-- by-hash/
  |-- main/
  |-- restricted/
  |-- universe/
  |-- InRelease
  |-- Release
  |-- Release.gpg
|-- noble-security/
  |-- by-hash/
  |-- main/
  |-- restricted/
  |-- universe/
  |-- InRelease
  |-- Release
  |-- Release.gpg

Ниже приведен образец моей текущей попытки autoinstall.yaml, включая секцию APT, однако, я пробовал несколько различных конфигураций на данный момент:

#cloud-config
autoinstall:
  version: 1
  source:
    id: ubuntu-desktop-minimal
  locale: en_US.UTF-8
  keyboard:
    layout: us
  timezone: UTC
  identity:
    hostname: ubuntu-auto-test
    username: user
    password: <encrypted_password>

  # Пользовательские зеркала
  apt:
    preserve_sources_list: false
    mirror-selection:
      primary:
      - arches:
        - amd64
        uri: http://101.101.101.101:81/ubuntu

  # Установить пакеты
  packages:
    - vim

Когда установщик вылетает, я вижу некоторые журналы, в которых говорится, что он пытался установить vim, но не смог, и я нахожу следующие журналов в /var/crash/.crash:

subiquity.server.controllers.mirror:180 Ign:1 http://101.101.101.101:81/ubuntu noble InRelease
subiquity.server.controllers.mirror:180 Ign:2 http://101.101.101.101:81/ubuntu noble-updates InRelease
subiquity.server.controllers.mirror:180 Ign:3 http://101.101.101.101:81/ubuntu noble-backports InRelease
subiquity.server.controllers.mirror:180 Err:4 http://101.101.101.101:81/ubuntu noble Release
subiquity.server.controllers.mirror:180  404  [IP: 101.101.101.101 81]
subiquity.server.controllers.mirror:180 E: Репозиторий 'http://101.101.101.101:81/ubuntu noble Release' больше не имеет Release файла.
subiquity.server.controllers.mirror:180 E: Репозиторий 'http://101.101.101.101:81/ubuntu noble-updates Release' больше не имеет Release файла.
subiquity.server.controllers.mirror:180 E: Репозиторий 'http://101.101.101.101:81/ubuntu noble-backports Release' больше не имеет Release файла.

Несмотря на то, что журналы показывают, что Ubuntu пыталась установить vim (что заставляет меня думать, что она обновила источники APT, чтобы указывать на частное зеркало), я не могу найти ссылки на мое частное зеркало ни в одном из файлов /etc/apt/*.

Кто-нибудь сталкивался с этой же проблемой? Как вы это исправили? Еще раз спасибо за вашу помощь.

Ответ или решение

Автоматизация установки Ubuntu 24.04 с использованием локальных репозиториев может быть сложной задачей, особенно если вы стараетесь минимизировать доступ к Интернету. Давайте рассмотрим детали вашего вопроса и предложим возможное решение.


Теория:

Автоматическая установка Ubuntu с помощью autoinstall.yaml позволяет автоматизировать процесс настройки и установки операционной системы. В данном случае, вы пытаетесь перенаправить APT на локальное зеркало, чтобы установка могла происходить без подключения к внешним ресурсам.

Основная проблема заключается в ошибках 404, которые свидетельствуют о том, что APT не может найти файлы Release в указанных путях вашего локального зеркала. Это обычно связано с неверной конфигурацией пути к репозиториям или недоступностью необходимых файлов там, где их ожидают.


Пример:

Вы указали следующее содержимое для вашего файла autoinstall.yaml, включая секцию с APT:

#cloud-config
autoinstall:
  version: 1
  source:
    id: ubuntu-desktop-minimal
  locale: en_US.UTF-8
  keyboard:
    layout: us
  timezone: UTC
  identity:
    hostname: ubuntu-auto-test
    username: user
    password: <encrypted_password>

  # Custom Mirrors
  apt:
    preserve_sources_list: false
    mirror-selection:
      primary:
      - arches:
        - amd64
        uri: http://101.101.101.101:81/ubuntu

  # Install packages
  packages:
    - vim

Логи указывают на отсутствие файлов Release для дистрибутивов noble, noble-updates и noble-backports.


Применение:

  1. Проверка структуры зеркала:

    • Убедитесь, что файлы InRelease, Release, и Release.gpg действительно находятся в указанных директориях вашего зеркала. Поскольку APT пытается обратиться к файлам в http://101.101.101.101:81/ubuntu/dists/<дистрибутив>, файлы должны быть доступны по этому пути. Возможно, ваши файлы находятся в другом подвкаталоге, что и вызывает ошибку 404.
  2. Проверка конфигурации autoinstall.yaml:

    • Возможно, вы не совсем правильно указали способ выбора зеркал. Вместо mirror-selection следует описать источники поподробнее, через секции sources. Например:

      apt:
      preserve_sources_list: false
      sources:
       ubuntu:
         source: "http://101.101.101.101:81/ubuntu"
         suites: [noble, noble-updates, noble-backports, noble-security]
         components: [main, restricted, universe]
  3. Обновление индекса зеркала:

    • Убедитесь, что ваше зеркало обновлено и соответствует версии Ubuntu 24.04. Для этого можно использовать такие инструменты, как apt-mirror или rsync, чтобы синхронизировать зеркало с официальным сервером Ubuntu.
  4. Доступность зеркала:

    • Так как в логах упоминается 101.101.101.101, убедитесь, что хост с этим IP доступен из среды установки, а также что установленный вами сервер (Apache, Nginx и т.д.) корректно обрабатывает HTTP-запросы и не требует дополнительных проверок (например, авторизации), которые могут прерывать APT.
  5. Проверка конфигурации сетевого подключения:

    • Убедитесь, что в процессе начальной установки сеть правильно настраивается и имеет доступ к вашему локальному зеркалу. Любая проблема с маршрутизацией или DNS может повлиять на доступность зеркала.
  6. Логи и диагностика:

    • Проанализируйте получаемые логи взаимодействий с зеркалом более детально на предмет дополнительных ошибок, которые могли быть пропущены. Поместите их в понятный для последующего анализа формат.

Решение этих проблем требует внимательности к деталям конфигурации как в autoinstall.yaml, так и в структуре вашего локального зеркала. Успех зависит от наличия всех необходимых файлов в нужных местах, их доступности, а также от корректного их указания в конфигурациях.

Оцените материал
Добавить комментарий

Капча загружается...