Статья также доступна на украинском (перейти к просмотру).
Содержание
- Автоматическая и автоматизированная установка – в чем разница
- Описание конфигурации
- Способы предоставления установщику описания конфигурации (доставка конфигурации)
- Сетевая автоинсталляция сервера Ubuntu
Режим автоматической инсталляции для Ubuntu Server поддерживается новым установщиком Subiquity, начиная с версии 20.04. Однако с выходом в апреле месяце текущего года релиза Ubuntu 24.04 LTS реализация указанного режима перешла на более высокий уровень. Это связано с приведением формата записи директив для Subiquity в соответствии с форматом облачной конфигурации. Использование Cloud-init для предоставления конфигурации автоинсталляции позволяет избежать необходимости изменения установочного носителя и обеспечить более гибкое управление процессом. Продемонстрируем на конкретных примерах возможные варианты использования автоинсталляции на основе облачной конфигурации.
Автоматическая и автоматизированная установка – в чем разница
Автоматизированная установка подразумевает периодическое обращение системы к пользователю для уточнения данных и формирования соответствующей конфигурации системы при развертывании. Для Ubuntu такой способ получил название Preseeds и используется инсталлятором типа debian-installer (d-i), поддерживая при этом формат debconf-set-selections.
Во время процесса развертывания системы вопросы выводятся на терминал последовательно один за другим. При этом d-i периодически останавливает работу и ждет ответа пользователя. В случае отсутствия ответа хотя бы на один вопрос работа инсталлятора не будет завершена и, соответственно, система не будет развернута.
В случае автоматической или автоинсталляции достаточно лишь передать системе данные о новой конфигурации, после чего она сама выполняет всю работу. Для Ubuntu версии 20.04 и выше такая возможность реализуется с помощью установщика типа Subiquity, которым, в частности, поддерживается формат YAML файла автоинсталляции и облачная технология Cloud-init.
Процесс развертывания системы проходит без вывода на терминал вопросов, а только на основании значений параметров, указанных в файле YAML формата. В случае отсутствия для любого из параметров установленного в файле значения система принимает значение, установленное по умолчанию и продолжает свою работу до полного завершения процесса. Лишь при отсутствии значений параметров, установленных по умолчанию, процесс завершается сбоем системы и, соответственно, отменой процесса ее развертывания.
Описание конфигурации
Файл установки для описания конфигурации использует формат YAML. На верхнем уровне структуры описания конфигурации обычно находится ключ autoinstall, наличие которого обязательно для возможности использования технологии Cloud-init для передачи данных по конфигурации. Для всех других вариантов доставки ключ не обязателен, но его присутствие рекомендовано разработчиками, поскольку это позволит в дальнейшем избежать путаницы и, соответственно, возможных ошибок. Присутствие любого другого ключа на этом же уровне приведет к появлению ошибки в процессе автоматического развертывания системы.
На других уровнях структура описания состоит из набора ключей и их значений, которые определяют тип конфигурации. Нераспознанные ключи обычно игнорируются для версии 1 документа, но в следующих версиях это будет вызывать роковую ошибку проверки.
Пример минимальной конфигурации приведен ниже:
autoinstall: version: 1 interactive-sections: - network identity: username: admin password: $crypt_pass
Рассмотрим кратко назначение каждой секции. Раздел version обозначает версию файла конфигурации, которая в настоящее время может иметь только значение 1. Но в дальнейшем использование этого ключа позволит производить гибкие настройки версий документа.
Раздел interactive-sections используется для формирования списка ключей, которые будут отображаться в пользовательском интерфейсе, так же, как и в случае обычной установки. Это позволяет пользователю изменить параметры, установленные по умолчанию. Например, это может касаться отладки сети, как в нашем случае (ключ network).
Раздел identity позволяет указать учетные пользовательские данные, необходимые системе для выполнения процесса инсталляции. Пароль лучше указывать в формате криптографического кодирования.
Способы предоставления установщику описания конфигурации (доставка конфигурации)
Существует несколько путей предоставления описания конфигурации, использующего автоинсталлятор. Приведем их:
- Использование командной строчки ядра системы;
- Размещение файла в корневом каталоге инсталляционного носителя;
- Cloud-config;
- Размещение в корни файловой системы системы инсталляции (ISO).
Рассмотрим каждый из указанных вариантов в отдельности.
Использование командной строчки ядра системы. В этом случае передать местонахождение YAML-файла можно с помощью параметра subiquity.autoinstallpath. Запись будет выглядеть следующим образом:
subiquity.autoinstallpath=path/to/autoinstall.yaml`
При этом даже если файл будет найден, установщик все равно сделает запрос на подтверждение записи системы на диск. Чтобы этого избежать, нужно обязательно в командной строчке указать ключ автоинсталляции. Только после этого система будет развернута в автоматическом режиме.
Размещение файла в корневом каталоге инсталляционного носителя. Файл autoinstall.yaml должен находиться в той же главе, что и ISO-файл, то есть там, где находится директория Casper. При этом данные о конфигурации передаются непосредственно установщику Subiquity и поэтому указывать ключевое слово верхнего уровня autoinstall в файле не требуется.
Размещение в корни файловой системы системы инсталляции (ISO). Этот способ обычно требует внесения изменений в ISO-файла, и потому им желательно не пользоваться.
Cloud-config. Здесь вместо файла autoinstall.yaml используется файл с именем user-data, содержащий всю необходимую информацию по конфигурации. При этом в ее определении обязательно присутствие ключевого слова верхнего уровня autoinstall.
Пример формата оформления раздела приведен ниже:
#cloud-config autoinstall: version: 1 ...
Следует отметить, что поиск файла с конфигурацией осуществляется Subiquity последовательно в каждом из указанных мест к первой найденной конфигурации. Очередность поиска определяется тем порядком, который приведен нами выше. На первом месте – командная строчка ядра системы, на последнем – корень файловой системы системы инсталляции. (ISO).
Во время процесса автоинсталляции Ubuntu autoinstall создает файл автоматической установки для возможности повторения процесса в будущем, который находится по адресу: /var/log/installer/autoinstall-user-data.
Сетевая автоинсталляция сервера Ubuntu
Рассмотрим последовательность действий для автоматического развертывания сервера на удаленной машине. Но сначала укажем необходимые исходные данные:
Текущий сервер:
VPS-сервер под управлением Ubuntu 22.04.
Приведем данные удаленного хоста для будущей конфигурации:
Архитектура – amd64;
Имя хоста – cf1317758.paneltest.kiev.ua;
Имя пользователя – admin.
Последовательность действий будет следующей:
- Загрузка ISO-образа сервера Ubuntu;
- Монтирование каталога с загруженным файлом;
- Формирование конфигурации Cloud-Init и ее отправка через HTTP;
- Создание целевого диска;
- Запуск процесса инсталляции;
- Проверка работоспособности развернутой системы.
Загрузка ISO-образа сервера Ubuntu
Загрузим на наш сервер в каталог downubuntu ISO-образ последней рабочей версии ОС Ubuntu Server с сайта разработчиков. Для этого введем в терминале:
$ wget https://releases.ubuntu.com/23.10/ubuntu-23.10-live-server-amd64.iso
Процесс активирован и файл начал загружаться в каталог downubuntu.
Монтирование каталога с установочным файлом
Смонтируем загруженный установочный файл на нашем VPS-сервере. Для этого введем в терминале:
$ sudo mount -r ~/downubuntu/ubuntu-23.10-live-server-amd64.iso /mnt
Файл смонтирован. Теперь перейдем к формированию конфигурации cloud-init.
Формирование конфигурации Cloud-Init и ее отправка через HTTP
Как уже отмечалось, для возможности использования облачной технологии YAML-файл автоинсталляции должен иметь имя user-data. Создадим каталог с именем testcloud, а в нем файл user-data. Для этого введем в терминале:
$ mkdir -p ~/testcloud $ cd ~/testcloud
Запустим редактор nano для создания файлу:
$ nano user-data
Введем в файл описание минимальной конфигурации, следующее:
#cloud-config autoinstall: version: 1 identity: hostname: cf1317758.paneltest.kiev.ua password: "aHBN/TPol/Iw7bNLUtZLifnj7L4rGv8jx8qHyt+6l0r7eshkK739693jigxJ6FNb6KrEnDUTrVqCDYkl20RHlJSI0Dte4h31Y3CM1iNqOL" username: admin
Сохраним внесенные изменения и выйдем из редактора.
После этого создадим пустой файл с именем meta-data, необходимый для работы сервиса:
$ touch meta-data
Файл создано.
Откроем новое окно терминала, в котором отправим сложившуюся конфигурацию с помощью протокола http. Для этого в командной строчке введем следующую команду:
$ python3 -m http.server 3003
Создание целевого диска
Введем в терминале:
$ truncate -s 10G image.img
Запуск процесса инсталляции
Инициируем процесс инсталляции Ubuntu Server на удаленной машине. Для этого введем в терминале:
$ kvm -no-reboot -m 2048 \ -drive file=image.img,format=raw,cache=none,if=virtio \ -cdrom ~/downubuntu/ubuntu-23.10-live-server-amd64.iso \ -kernel /mnt/casper/vmlinuz \ -initrd /mnt/casper/initrd \ -append 'autoinstall ds=nocloud-net;s=http://_gateway:3003/'
В результате выполнения введенных команд будет загружена сформированная нами конфигурация, после чего запустится процесс инсталляции Ubuntu Server. В конце процесса программа установки перезагрузится и kvm завершит свою работу.
Проверка работоспособности развернутой системы
Для загрузки уже развернутой серверной операционной системы необходимо ввести следующую команду в терминале:
$ kvm -no-reboot -m 2048 \ -drive file=image.img,format=raw,cache=none,if=virtio
При этом данные пользователя системы будут такими же, как мы указали в сложившейся ранее конфигурации:
имя пользователя – admin;
имя хоста – cf1317758.paneltest.kiev.ua.
В этом можно убедиться при аутентификации в развернутой системе.
Дата-центр FREEhost.UA предлагает большой выбор серверов для аренды, под любые задачи. У нас Вы найдете сервера для обучения, размещение нескольких небольших сайтов, мощные серверы для больших проектов и серверы для организации удаленной работы сотрудников. По желанию на сервер может быть установлена Ubuntu/Debian/Centos, или за дополнительную оплату Windows. Также на сервере мы можем установить панель управления. Большинство конфигураций есть, поэтому через несколько часов после заказа настроенный сервер уже готов к работе.
Подписывайтесь на наш телеграм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов.
Смотрите наш канал Youtube на https://www.youtube.com/freehostua.
Мы в чем ошиблись, или что-то пропустили?
Напишите об этом в комментариях, мы с удовольствием ответим и обсуждаем Ваши замечания и предложения.
Дата: 29.05.2024 Автор: Александр Ровник
|
|
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus