Вопрос или проблема
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. Основные аспекты, на которые стоит обратить внимание, включают:
-
Настройка сети: Для того чтобы autoinstall был успешно выполнен, настройки сети должны быть сконфигурированы до загрузки системы, так как они влияют на возможность доступа к внешним ресурсам, таким как GPG-ключи и репозитории.
-
Управление списком источников apt: Поле
preserve_sources_list: false
должно затирать существующий список источников, но это не всегда происходит как ожидается. Необходимо удостовериться, что все необходимые параметры указаны правильно. -
Ранняя и поздняя инициализация (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
, убедитесь, что это правильно отражено в настройках. Также убедитесь, что указан правильный адрес DNS, который может резолвить необходимые домены. -
Репозитории apt: Проверьте, что список источников apt правильно записан. Может потребоваться явное указание всех параметров, чтобы избежать нештатных ситуаций. Если новые репозитории не добавляются, проверьте права и формат ключей GPG.
-
Загрузка GPG-ключей: Если возникает ошибка "malformed data", это может быть результатом неверной настройки сети или неверного формата ключа. Убедитесь, что файл GPG корректно доступен по ссылке и что он не поврежден.
-
Полезные команды и средства диагностики:
- Используйте
lspci
,ip addr
,ethtool
для проверки сетевых интерфейсов и их состояния. - Проверьте логи установки в
/var/log/installer/
для диагностики проблем.
- Используйте
-
Отладка процесса: Попробуйте загрузить GPG-ключ и вручную проверить доступ к нему на машине с похожими параметрами сети и настроек, чтобы удостовериться в его валидности.
На практике автоматизация установки требует точного понимания всех этапов процесса и правильной конфигурации всех задействованных компонентов. Работа с сетью и зеркалами без доступа к интернету добавляет дополнительные сложности, но такое окружение можно успешно развернуть при должной тщательности подготовки и тестирования.