Skip to content

By Тодор in Linux

Изходни данни за ситуацията

  • Трябва да се инсталира линукс сървър.
  • Нямаме фиизчески достъп до сървъра.
  • Сървъра няма out-of-band управление (iLO, LOM, IPMI и т.н.).
  • Сървъра разполага с ethernet връзка към Интернет.
  • На място (при сървъра) има човек, който може да окаже някакво съдействие. Ще го наречем бай Иван.

План за действие

  • Ще направим имидж (ISO), който ще изпратим на бай Иван, за да го качи на флашка и да зареди сървъра от него.
  • От флашката ще се заредят достатъчно „неща“, които да ни осигурят отдалечен и сигурен достъп до машината, за да продължим инсталацията.

Изпълнение

Ще използваме minimal образ на Ubuntu 20.04 LTS, защото е изключително малък и ще бъде лесно да бъде изпратен на бай Иван.
Образа е наличен тук.
Отваряме ISO-то и редактираме txt.cfg. Той би трябвало да съдържа следните редове:

label install
menu label ^Install
menu default
kernel linux
append vga=788 initrd=initrd.gz --- quiet

Редактираме последният ред (всичко е на един ред):
append vga=788 initrd=initrd.gz console-setup/layoutcode=us locale=en_US.UTF-8 keyboard-configuration/layoutcode=us languagechooser/language-name=English countrychooser/shortlist=BG localechooser/supported-locales=en_US.UTF-8 hostname=ubuntuserver domain=local interface=auto url=https://kamenitza.org/files/preseed.cfg debian-installer/allow_unauthenticated_ssl=true ipv6.disable=1 ---

Нещата, които този ред върши са сравнително ясни и самообясняващи се. По-интересни са

  • interface=auto – Автоматична настройка на мрежовия интерфейс (DHCP).
  • url=https://kamenitza.org/files/preseed.cfg – Съдържа предврителен избор на опции от инсталацията.

Ако в мрежата няма DHCP сървър и IP-то трябва да се настрои ръчно, interface=autо се замества със следните примерни параметри:
netcfg/get_ipaddress=192.168.150.111 netcfg/get_netmask=255.255.255.0 netcfg/get_gateway=192.168.150.1 netcfg/get_nameservers=8.8.8.8 netcfg/disable_dhcp=true

За редакция на ISO файл в Уиндоус няма особено работещи безплатни програмчета. Аз ползвах WinISO, което в триал/демо режим върши работа за малки образи.
По наша преценка се прави бутваща USB флашка (с Rufus) или CD или DVD.
Горещо препоръчвам ползването на възможно най-пълен preseed.cfg, за да се елиминира ръчния труд при повторно изпълнение на задачата:

d-i preseed/early_command                   string anna-install network-console
d-i debian-installer/locale                 string en_US.UTF-8
d-i localechooser/supported-locales         multiselect en_US.UTF-8
d-i console-setup/ask_detect                boolean false
d-i keyboard-configuration/layoutcode       string en
d-i anna/choose_modules                     string network-console
d-i network-console/authorized_keys_url     string https://kamenitza.org/files/ssh-key.txt
d-i mirror/country                          string Bulgaria
d-i mirror/http/hostname                    string bg.archive.ubuntu.com
d-i mirror/http/mirror                      select bg.archive.ubuntu.com
d-i mirror/http/proxy                       string
d-i passwd/user-fullname                    string Todor Kandev
d-i passwd/username                         string tkandev
d-i passwd/user-password-crypted            password $5$ceFBePtE$n0S0.mW1tQQUYH4RPfshNIWd/vilV3E2NhBkUWk/yd0
d-i clock-setup/utc                         boolean false
d-i time/zone                               string Europe/Sofia
d-i clock-setup/ntp                         boolean true
d-i clock-setup/ntp-server                  string bg.pool.ntp.org
d-i pkgsel/update-policy                    select none
d-i apt-setup/services-select               none
d-i apt-setup/universe                      boolean true
d-i tasksel/first multiselect               standard system utilities, OpenSSH server
d-i preseed/late_command                    string \
    in-target mkdir -p /home/tkandev/.ssh; \
    echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN1hQH5HHB8U2PUbUn7nwYUHm0jdz3URoFdYZY1+QSVk kandev-v2" > /target/home/tkandev/.ssh/authorized_keys; \
    in-target chown tkandev:tkandev /home/tkandev/.ssh -R; \
    in-target sed -i s/#PasswordAuthentication\ yes/PasswordAuthentication\ no/g /etc/ssh/sshd_config; \
    apt-install mc net-tools
d-i finish-install/reboot_in_progress       note

Опциите са достатъчно говорящи и самообясняващи се. Основна опция тук е network-console/authorized_keys_url. Представлява URL адрес до SSH ключа, който ще се ползва за автентикация при инсталацията. Друго интересно е създаването на потребител, задаването на парола, добавянето на SSH ключ, включването на този потребител в sudoers и забраняването за ползване на пароли при влизане през SSH. Паролата на потребителя се генерира ето така:
mkpasswd -m sha-256

Сега бай Иван трябва да буутне сървъра с нашия имидж и да избере опцията за инсталация по подразбиране. След няколко минути всичко спира на следния екран:
Linux network instal
Може да си знаем адреса, а може и бай Иван да ни го изпрати по някакъв начин. Инструкциите са ясни. Свързваме се с дадения IP адрес по SSH с потребител installer, като се автентикираме с личния си ключ. Довършваме инсталацията с всичко, което липсва от preseed фйла.

Наздраве! 🙂

Tags: , , , , ,

Comment Feed

No Responses (yet)



Some HTML is OK

or, reply to this post via trackback.