Ubuntu 24.04 Desktop AutoInstall с изолированным зеркалом Aptly

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

BLUF: Я пытаюсь создать autoinstall.yaml для Ubuntu 24.04 Desktop, который я могу использовать с работающим удаленным зеркалом Aptly в изолированной сети. Идея в том, чтобы в конечном итоге иметь такую конфигурацию, при которой все, что мне нужно сделать – это загрузиться с ISO, и после завершения у меня будет полностью установленная среда, включая необходимые инструменты и пакеты, без участия пользователя.

Я уже создал зеркало Aptly и, используя виртуальную машину с Ubuntu 24.04 Desktop, модифицировал /etc/apt/sources.list.d/ubuntu.sources, чтобы успешно выполнять apt update, apt upgrade и apt install vim.

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

#cloud-config
autoinstall:
  version: 1
  source:
    id: ubuntu-desktop-minimal
    # id: ubuntu-desktop  # <-- Это полная версия Ubuntu Desktop
  locale: en_US.UTF-8
  keyboard:
    layout: us
  timezone: UTC
  identity:
    hostname: ubuntu-workstation
    username: <username>
    password: <encrypted_password>

  network:
    version: 2
    ethernets:
      enp0s3:
        dhcp4: false
        addresses:
          - 1.1.1.2/24
          - 10.10.10.10/24 # Это удаленный сервер, который предоставляет `autoinstall.yaml` и `aptly-keyring.gpg`
        gateway4: 1.1.1.1

  apt:
    preserve_sources_list: false
    primary:
      - arches: [amd64]
        uri: http://1.1.1.1/
        suite: noble
        components: [main]
        signed-by: /usr/share/keyrings/aptly-keyring.gpg

Сейчас этот autoinstall.yaml действительно работает для установки пользователя и учетных данных и частично обновляет /etc/apt/sources.list.d/ubuntu.sources, однако не корректно.

Во-первых, секция network не производит никакого видимого эффекта. Виртуальная машина, которую я тестирую, использует мостовую сеть с локальным компьютером в той же сети, что и зеркало Aptly, поэтому ее IP автоматически устанавливается на 1.1.1.2 даже без моего вмешательства. Однако удаленный сервер, который размещает autoinstall.yaml и aptly-keyring.gpg (10.10.10.10), не добавляется, как я ожидал. Я могу вручную добавить его после установки, но это каким-то образом сводит на нет саму идею.

Кроме того, это, похоже, также негативно влияет на секцию apt. Как я уже говорил, текущий autoinstall.yaml таки модифицирует ubuntu.sources, но не корректно. Я ожидал, что содержимое файла ubuntu.sources будет полностью стерто (preserve_sources_list: false) и заменено на:

Types: deb
URIs: http://1.1.1.1/
Suites: noble
Components: main
Signed-By: /usr/share/keyrings/aptly-keyring.gpg

Однако то, что я получаю:

Types: deb
URIs: http://1.1.1.1/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg 

Как видно, изменена только одна строка (то есть строка URI в основной секции).

Я также добавил секцию late-commands, которая должна забирать ключ gpg и помещать его в нужную директорию, однако, это также не работает из-за ошибки “malformed data”:

late-commands:
    - wget http://10.10.10.10/aptly-keyring.gpg -O /home/user/aptly-keyring.gpg
    - cp /home/user/aptly-keyring.gpg /usr/share/keyrings/aptly-keyring.gpg
    - chmod 644 /usr/share/keyrings/aptly-keyring.gpg

Часть проблемы, я уверен, заключается в том, что секция network не добавляет корректно сеть 10.10.10.10. Я не уверен, когда это происходит, вероятно после установки, но без корректной настройки сети autoinstall не может обратиться к удаленному серверу, чтобы получить ключ gpg. Без ключа gpg утилита apt не может прочитать зеркало Aptly и, следовательно, не может выполнить обновления или установки пакетов. Думая об этом, я также пробовал выполнить те же команды как early-commands, однако, это привело к той же ошибке “malformed data” при установке.

Удалось ли кому-либо добиться какого-либо результата, хотя бы отдаленно близкого к тому, что я описал, как мое конечное состояние? Я новичок в автоматизации, и это мой первый проект, связанный с ней, так что я в растерянности. Любой совет будет очень ценен.

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

Автоматизация установки Ubuntu 24.04 с использованием air-gapped Aptly mirror представляет собой довольно сложную задачу, особенно в условиях ограниченного доступа к сети. Вас интересует создание autoinstall.yaml, который сможет выполнять установку без участия пользователя, включая настройку сети и установку нужных пакетов из зеркала Aptly. Разберем ваши проблемы и предложим возможные решения.

Теория (Theory)

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

  1. Настройка сети: Для того чтобы autoinstall был успешно выполнен, настройки сети должны быть сконфигурированы до загрузки системы, так как они влияют на возможность доступа к внешним ресурсам, таким как GPG-ключи и репозитории.

  2. Управление списком источников apt: Поле preserve_sources_list: false должно затирать существующий список источников, но это не всегда происходит как ожидается. Необходимо удостовериться, что все необходимые параметры указаны правильно.

  3. Ранняя и поздняя инициализация (early-commands и late-commands): Эти скрипты выполняются на разных этапах установки. Ранние команды могут использоваться для настройки сети до начала установки пакетов, а поздние команды — для завершающих действий после настройки основной системы.

Пример (Example)

Вы указали, что сеть не корректно настраивается, и GPG-ключ не может быть загружен. Давайте рассмотрим, как это можно исправить:

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

  network:
    version: 2
    ethernets:
      enp0s3:
        dhcp4: false
        addresses:
          - 1.1.1.2/24
        gateway4: 1.1.1.1
        nameservers:
          addresses: [1.1.1.1]  # Убедитесь, что указаны корректные DNS-сервера
        routes:
          - to: 10.10.10.0/24
            via: 1.1.1.1

  apt:
    preserve_sources_list: false
    primary:
      - arches: [amd64]
        uri: http://1.1.1.1/
        suite: noble
        components: [main]
        signed-by: /usr/share/keyrings/aptly-keyring.gpg

  late-commands:
    - "wget http://10.10.10.10/aptly-keyring.gpg -O /usr/share/keyrings/aptly-keyring.gpg"
    - "chmod 644 /usr/share/keyrings/aptly-keyring.gpg"

Применение (Application)

  1. Настройка сети: Убедитесь, что параметры сети корректны. Например, если ваша машина использует основной шлюз 1.1.1.1, убедитесь, что это правильно отражено в настройках. Также убедитесь, что указан правильный адрес DNS, который может резолвить необходимые домены.

  2. Репозитории apt: Проверьте, что список источников apt правильно записан. Может потребоваться явное указание всех параметров, чтобы избежать нештатных ситуаций. Если новые репозитории не добавляются, проверьте права и формат ключей GPG.

  3. Загрузка GPG-ключей: Если возникает ошибка "malformed data", это может быть результатом неверной настройки сети или неверного формата ключа. Убедитесь, что файл GPG корректно доступен по ссылке и что он не поврежден.

  4. Полезные команды и средства диагностики:

    • Используйте lspci, ip addr, ethtool для проверки сетевых интерфейсов и их состояния.
    • Проверьте логи установки в /var/log/installer/ для диагностики проблем.
  5. Отладка процесса: Попробуйте загрузить GPG-ключ и вручную проверить доступ к нему на машине с похожими параметрами сети и настроек, чтобы удостовериться в его валидности.

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

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

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