Рубрики
KVM

KVM auto install / virt-install / debian / pressed.cfg

Ссылки:

Автоустановка debian-виртуалок в KVM — один из способов.
https://www.debian.org/releases/stretch/mips/apbs03.html.ru https://help.ubuntu.com/lts/installation-guide/s390x/apb.html https://www.debian.org/releases/stable/amd64/apbs04.ru.html https://www.debian.org/releases/buster/example-preseed.txt

preseed.cfg — файл настроек инсталляции

# настройки языка и локали в устанавливаемой системе. Используем американскую локаль, но указываем, что наш сервер находится в России.
d-i debian-installer/language string en
d-i debian-installer/country string RU
d-i debian-installer/locale string en_US.UTF-8
d-i localechooser/supported-locales multiselect en_US.UTF8, ru_RU.UTF8

# Настройки клавиатуры. Опять же - американская раскладка.
d-i console-keymaps-at/keymap select us
d-i keyboard-configuration/variant select American English

# Выбираем интерфейс сети, через который будет происходить установка. Для KVM-виртуалок в 99% случаев (если сами не ломали) это eth0. Если сомневаемся - ставим auto.
d-i netcfg/choose_interface select auto

# Настройки сети. Я привожу пример для ipv6, для v4 вам просто нужно будет поменять адреса.
# важный момент - если настраиваете здесь ipv6 сеть, то обязательно используйте ipv6 nameservers.
# Иначе netmask ffff:ffff:ffff:ffff:: внутри debian-installer'a превратится в 255.255.255.0 (или что-то такое) и вам придется лезть в консоль, чтобы перевбивать настройки лапками.
# если вам нужен ipv4 - то просто замените ipaddress, netmask, gateway, nameservers на корректные v4-адреса. Ничего дополнительно указывать не нужно.
# использую dhcp
d-i netcfg/dhcp_timeout string 2
d-i netcfg/disable_dhcp boolean false
#d-i netcfg/get_ipaddress string 10.0.0.1
#d-i netcfg/get_netmask string 10.0.0.255
#d-i netcfg/get_gateway string 10.0.0.1
#d-i netcfg/get_nameservers string 10.0.0.1
#d-i netcfg/confirm_static boolean true

# hostname и domain для наливаемой машинки.
# fqdn машины в данном случае будет temporary.debian.pro - если хотите, чтобы на сервере нормально работала отправка почты, то такой же fqdn должен быть прописан в PTR записи "основного" адреса машинки.
d-i netcfg/get_hostname string linux13
d-i netcfg/get_domain string b14esh.com

# Если вы выберете ftp, то mirror/country string устанавливать не нужно.
#d-i mirror/protocol string ftp
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

# прокси внутри инсталлера нам не нужен.
d-i mirror/http/proxy string

# Настройки часового пояса - наш сервер будет жить по часикам в Москве.
# дополнительно, при установке синхронизируем время с ntp.ubuntu.com
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Moscow
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string ntp.ubuntu.com

# Настройка HDD. Внутри виртуалок нам подойдет разметка auto regular atomic (последний раздел - swap = 2xRAM, первый раздел - /, занимающий всё, что осталось после swap'a).
# Саму систему ставим на /dev/vda.
d-i partman-auto/disk string /dev/vda
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# устанавливаем рутовый пароль.
# после установки его, само собой, лучше менять (preseed могут спереть).
d-i passwd/root-password password ПАРОЛЬ_ДЛЯ_РУТА
d-i passwd/root-password-again password ПАРОЛЬ_ДЛЯ_РУТА

# не создаём дополнительных пользователей, кроме рута.
#d-i passwd/make-user boolean false

# создаем пользователя
# To create a normal user account.
d-i passwd/user-fullname string ИМЯ_ПОЛЬЗОВАТЕЛЯ
d-i passwd/username string ИМЯ_ПОЛЬЗОВАТЕЛЯ
# Normal user's password, either in clear text
d-i passwd/user-password password ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ
d-i passwd/user-password-again password ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ


# остальные настройки apt'a - включаем contrib и non-free репозитории.
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true

# не отправляем данные об установленных пакетах.
popularity-contest popularity-contest/participate boolean false

# ставим только ssh-сервер - никаких гномов/web-серверов и так далее.
tasksel tasksel/first multiselect ssh-server
# указываем, что нам нужны дополнительные пакеты - openssh-server (дада, я видел его строчкой выше, но хочу быть уверенным), htop и dstat.
d-i pkgsel/include string openssh-server htop dstat sudo


# ставим загрузчик
d-i grub-installer/only_debian boolean true

#пофиг ставим загрузчик 
d-i grub-installer/with_other_os boolean true

# Из-за возможного наличия подключённых карт памяти USB, расположение MBR
# нельзя определить безопасно, поэтому нужно указать:
d-i grub-installer/bootdev  string /dev/vda
# Для установки на первое устройство (считая, что это не карта памяти USB):
d-i grub-installer/bootdev  string default



# вырубаем виртуалку.
d-i finish-install/reboot_in_progress note
d-i debian-installer/exit/poweroff boolean true




Главный вопрос… а не льзя ли получить файл pressed.cfg, да попроще….

Ответ можно. И очень просто :)
Продолжение следует...
0. Ставим debian и настраиваем его как нам нужно. 

1. Немного о файлах 
/var/log/installer/cdebconf - в этом каталоге в  конце установки создаются , база данных программы установки debconf, по умолчанию файл разрешено читать только суперпользователю.
templates.dat - хранятся необработанные шаблоны
questions.dat — текущие значения и значения, назначенные переменным

/var/lib/cdebconf - для выяснения возможных ответов на вопросы можно использовать редактор nano для просмотра файла прямо во время процесса установки
/var/log/installer - каталог и все файлы в нём будут удалены из системы при вычистке пакета installation-report

2. Альтернативный метод — выполнить установку вручную и затем, после перезагрузки, 
использовать команду debconf-get-selections из пакета debconf-utils, 
чтобы сохранить базу данных debconf и базу данных программы установки cdebconf в один файл preseed.cfg

apt install debconf-utils - ставим необходимое debconf-utils 
echo "#_preseed_V1" > preseed.cfg
debconf-get-selections --installer >> preseed.cfg
debconf-get-selections >> preseed.cfg

3. Файл preseed.cfg то получили теперь его надо бы отредактировать......

4. Проверяем файл preseed.cfg на валидность....
debconf-set-selections -c preseed.cfg - для проверки правильности формата файла ответов до установки


пример install_debian.sh

#!/bin/bash
virt-install  \
--name linux2 \  - исправь
-r 1024  \
--disk path=/PVE/linux2.qcow2,size=8  \   - исправь
--vcpus 1  \ 
--location=http://ftp.ru.debian.org/debian/dists/stable/main/installer-amd64/  \  - исправь
--initrd-inject=/home/b14esh/ansible/roles/debian_install/preseed.cfg  \  - исправь
--extra-args="auto keyboard-configuration/xkb-keymap=en"  \
--vnc \
--noautoconsole  \
--os-type Debian10  \
--accelerate  \
--network bridge=br0,model=virtio  \  - исправь
--hvm

А должно быть так install_debian.sh

#!/bin/bash
virt-install  --name ИМЯ_ХОСТА -r 1024  --disk path=/PVE/ИМЯ_ЖЕСТКОГО_ДИСКА.qcow2,size=8  --vcpus 2  --location=http://ftp.ru.debian.org/debian/dists/stable/main/installer-amd64/  --initrd-inject=/home/b14esh/ansible/roles/debian_install/preseed.cfg  --extra-args="auto keyboard-configuration/xkb-keymap=en"  --vnc   --noautoconsole   --os-type Debian10  --accelerate  --network bridge=br0,model=virtio  --hvm