Вопрос или проблема
Я только что установил (физический, “bare metal”) сервер с новым образом установки сервера 21.10 (чтобы протестировать и подготовиться к 22.04) на USB-накопитель.
Установка прошла успешно, но я не увидел варианта, позволяющего установить с помощью файла cloud-init с моего веб-сервера, что не только упростило бы установку, но и обеспечило бы одинаковую установку нескольких серверов.
Как мне сделать так, чтобы установка сервера 21.10/22.04 использовала заданный файл cloud-init с веб-сервера вместо интерактивного диалога (за исключением установки через pxe/maas)?
С уважением
Если вы будете использовать интерфейс Subiquity Terminal, опции cloud-init не будет. Однако, если вы посмотрите на autoinstall, в рамках этого вы можете предоставить раздел user-data
и включить туда настройки cloud-init.
https://ubuntu.com/server/docs/install/autoinstall
https://ubuntu.com/server/docs/install/autoinstall-reference
Вам нужно будет изменить строку ядра grub на установочном носителе. Вам потребуется включить такие опции, как ‘autoinstall’, а также ‘datasource(ds)’ в строку ядра. Например:
autoinstall ds=nocloud-net;s=http://10.10.0.1:8000/
В дополнение к упомянутым выше ссылкам на autoinstall, вам следует обратиться к документации cloud-init, особенно по источнику Nocloud.
https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html
Ответ или решение
Установка сервера с использованием скрипта cloud-init может значительно упростить процесс, особенно если вы хотите развернуть несколько серверов с одинаковыми настройками. В версиях Ubuntu Server 21.10 и 22.04 вы можете использовать функцию autoinstall для автоматизации установки с использованием cloud-init.
Вот пошаговая инструкция, как настроить установку Ubuntu Server с использованием файла cloud-init из вашего веб-сервера:
1. Подготовка файла cloud-init
Сначала создайте файл конфигурации cloud-init, который будет содержать необходимые настройки. Например, вы можете создать файл user-data
со следующим содержимым:
#cloud-config
users:
- name: myuser
sudo: ALL=(ALL) NOPASSWD:ALL
groups: admin
shell: /bin/bash
package_update: true
package_upgrade: true
packages:
- vim
- htop
Загрузите этот файл на ваш веб-сервер, чтобы он был доступен по URL (например, http://10.10.0.1:8000/user-data
).
2. Подготовка установочного медиа
Вам необходимо будет изменить параметры загрузки ядра на установочном медиа. Вам нужно добавить опции autoinstall
и datasource
. Вот как это сделать:
-
Загрузите установочное медиа (например, на USB-накопитель).
-
Для доступа к меню GRUB в процессе загрузки, удерживайте клавишу
Shift
илиEsc
. -
Выберите пункт меню для загрузки установщика.
-
Нажмите
e
для редактирования параметров загрузки. -
Найдите строку, которая начинается с
linux /casper/vmlinuz…
, и добавьте следующие параметры к её концу:autoinstall ds=nocloud-net;s=http://10.10.0.1:8000/
В результате строка будет выглядеть примерно так:
linux /casper/vmlinuz ... autoinstall ds=nocloud-net;s=http://10.10.0.1:8000/
-
Нажмите
F10
, чтобы загрузить с изменёнными параметрами.
3. Начало установки
Теперь, когда сервер загружается с установочного медиа, он автоматически будет искать файл user-data
по указанному URL и применять настройки, содержащиеся в нём. Убедитесь, что ваш веб-сервер доступен и файл доступен по указанному пути.
4. Дополнительные источники информации
Рекомендуется ознакомиться с официальной документацией по autoinstall и cloud-init для получения дополнительной информации:
Заключение
Следуя этим шагам, вы сможете настроить и использовать cloud-init для автоматической установки Ubuntu Server с вашего веб-сервера. Это позволит вам быстро и легко развернуть несколько серверов с одинаковыми настройками.