• База знань
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

Стаття також доступна російською (перейти до перегляду).

Як використовувати Ubuntu autoinstall

Зміст

Режим автоматичної інсталяції для 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

Передача конфігурації через http

Створення цільового диску

Введемо в терміналі:

$ 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 на віддаленому сервері

В результаті виконання введених команд буде завантажена сформована нами конфігурація, після чого запуститься процес інсталяції 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
Автор: Олександр Ровник
Голосування

Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:

navigate
go
exit
Дякуємо, що обираєте FREEhost.UA