NOPE LinkedIn

Catégories:
Lab

Installer un serveur Debian 12 par Installimage

Comment installer un serveur physique en Debian 12 avec un partitionnement spécifique

Activer le mode Rescue sur le serveur

Pour utiliser le script installimage il faut tout dabord activer le mode rescue sur le serveur. Il faut passer par le menu ROBOT sur l’interface de gestion de votre compte. ATTENTION, rien à voir avec la console de gestion Cloud, ici c’est ce qu’Hetzner appel le Robot.

Activate rescue mode on serveur

Une fois activé le mode rescue, il faut relancer le serveur.

Reset système

Connection au serveur

Normalement le serveur redémarre et il est possible de se connecte dessus en ssh sur son adresse ip habituelle, soit vaec la clef ssh si elle a été renseignée, soit avec le mot de passe communiqué par l’interface lors du passage en mode rescue. Il est possible qu’une alerte sur une modification de l’identification de votre serveur apparaisse. Normal à ce stade, il suffit d’accepter.

Alerte ssh

Vous devriez vous retrouver sur quelque chose de ce type.

Linux rescue 6.3.7 #1 SMP Fri Jun  9 15:06:58 UTC 2023 x86_64

-------------------------------------------------------------------------------------------------------------------------

  Welcome to the Hetzner Rescue System.

  This Rescue System is based on Debian GNU/Linux 12 (bookworm) with a custom kernel.
  You can install software like you would in a normal system.

  To install a new operating system from one of our prebuilt images, run 'installimage' and follow the instructions.

  Important note: Any data that was not written to the disks will be lost during a reboot.

  For additional information, check the following resources:
    Rescue System:           https://docs.hetzner.com/robot/dedicated-server/troubleshooting/hetzner-rescue-system
    Installimage:            https://docs.hetzner.com/robot/dedicated-server/operating-systems/installimage
    Install custom software: https://docs.hetzner.com/robot/dedicated-server/operating-systems/installing-custom-images
    other articles:          https://docs.hetzner.com/robot

-------------------------------------------------------------------------------------------------------------------------

Rescue System up since 2023-07-08 18:13 +02:00

/usr/bin/xauth:  file /root/.Xauthority does not exist
Hardware data:

   CPU1: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz (Cores 8)
   Memory:  64098 MB
   Disk /dev/nvme0n1: 512 GB (=> 476 GiB)
   Disk /dev/sda: 4000 GB (=> 3726 GiB)
   Disk /dev/sdb: 4000 GB (=> 3726 GiB)
   Total capacity 7928 GiB with 3 Disks

Network data:
   eth0  LINK: yes
         MAC:  ab:cd:ef:1d:h4:65
         IP:   111.222.333.444
         IPv6: 1111.222.333.444::2/64
         Intel(R) PRO/1000 Network Driver

root@rescue ~ #

Lancement de l’installation via installimage

Il faut lancer la commande:

root@rescue ~ # installimage

Un menu de sélection de l’OS apparait

Sélection distribution

On sélectionne ensuite la version de la Debian à installer.

Sélection version debian

Une alerte apparait. Nous allons faire toutes nos modifications maintenant.

Alerte ouverture script

Mise en forme du fichier d’installation

Notre serveur dispose d’une SSD de 512Go et de deux disques de 4To. Le SSD va héberger la partie OS et les deux disques seront utilisé pour la partie Docker et pour le stockage de données. Nous allons donc devoir désactiver le RAID logiciel et créer les différentes partitions et points de montage.

Configuration du stockage

Enumération des disques.

## ====================
##  HARD DISK DRIVE(S):
## ====================

## PLEASE READ THE NOTES BELOW!

# unkown
DRIVE1 /dev/nvme0n1
# Onboard: HGST HUS726040ALA614
DRIVE2 /dev/sda
# Onboard: TOSHIBA MG04ACA400N
DRIVE3 /dev/sdb

On formate le premier disque, mais on choisit de garder les deux autres intactes

FORMATDRIVE1 1
FORMATDRIVE2 0
FORMATDRIVE3 0
## if you dont want raid over your three drives then comment out the following line and set SWRAIDLEVEL not to 5
## please make sure the DRIVE[nr] variable is strict ascending with the used harddisks, when you comment out one or more harddisks

## ===============
##  SOFTWARE RAID:
## ===============

## activate software RAID?  < 0 | 1 >

On désactive le RAID en positionnant l’option à 0. Le type de RAID n’a pas trop d’intérêt mais on le positionne quand même à 1

SWRAID 0

## Choose the level for the software RAID < 0 | 1 | 5 | 10 >

SWRAIDLEVEL 1

Configuration du nom du serveur

## ==========
##  HOSTNAME:
## ==========

## which hostname should be set?
##
HOSTNAME debian-64gb-fsn1-2

Configuration de la couche réseau

Pour ne pas avoir d’IP V6, il suffit de changer à yes

## ================
##  NETWORK CONFIG:
## ================

# IPV4_ONLY no

Configuration du stockage

C’est la partie du script la plus importante, tant sur le nombre de ligne que aussi sur la complexité.

## ==========================
##  PARTITIONS / FILESYSTEMS:
## ==========================

## define your partitions and filesystems like this:
##
## PART  <mountpoint/lvm/btrfs.X>  <filesystem/VG>  <size in MB>
##
## * <mountpoint/lvm/btrfs.X>
##            mountpoint for this filesystem *OR*
##            keyword 'lvm' to use this PART as volume group (VG) for LVM *OR*
##            identifier 'btrfs.X' to use this PART as volume for
##            btrfs subvolumes. X can be replaced with a unique
##            alphanumeric keyword
##            NOTE: no support btrfs multi-device volumes
##            NOTE: reiserfs support is deprecated and will be removed in a future version
## * <filesystem/VG>
##            can be ext2, ext3, ext4, btrfs, reiserfs, xfs, swap  *OR*  name
##            of the LVM volume group (VG), if this PART is a VG.
## * <size>
##            you can use the keyword 'all' to assign all the
##            remaining space of the drive to the *last* partition.
##            you can use M/G/T for unit specification in MiB/GiB/TiB
##
## notes:
##   - extended partitions are created automatically
##   - '/boot' cannot be on a xfs filesystem
##   - '/boot' cannot be on LVM!
##   - when using software RAID 0, you need a '/boot' partition
##
## example without LVM (default):
## -> 4GB   swapspace
## -> 512MB /boot
## -> 10GB  /
## -> 5GB   /tmp
## -> all the rest to /home
#PART swap   swap        4G
#PART /boot  ext2      512M
#PART /      ext4       10G
#PART /tmp   xfs         5G
#PART /home  ext3       all
#
##
## to activate LVM, you have to define volume groups and logical volumes
##
## example with LVM:
#
## normal filesystems and volume group definitions:
## -> 512MB boot  (not on lvm)
## -> all the rest for LVM VG 'vg0'
#PART /boot  ext3     512M
#PART lvm    vg0       all
#
## logical volume definitions:
#LV <VG> <name> <mount> <filesystem> <size>
#
#LV vg0   root   /        ext4         10G
#LV vg0   swap   swap     swap          4G
#LV vg0   home   /home    xfs          20G
#
##
## to use btrfs subvolumes, define a volume identifier on a partition
##
## example with btrfs subvolumes:
##
## -> all space on one partition with volume 'btrfs.1'
#PART btrfs.1    btrfs       all
##
## btrfs subvolume definitions:
#SUBVOL <volume> <subvolume> <mount>
#
#SUBVOL btrfs.1  @           /
#SUBVOL btrfs.1  @/usr       /usr
#SUBVOL btrfs.1  @home       /home
#
## your system has the following devices:
#
# Disk /dev/nvme0n1: 512.12 GB (=> 476.94 GiB)
# Disk /dev/sda: 4.01 TB (=> 3.64 TiB)
# Disk /dev/sdb: 4.01 TB (=> 3.64 TiB)
#
## Based on your disks and which RAID level you will choose you have
## the following free space to allocate (in GiB):
# RAID  0: ~1428
# RAID  1: ~476
# RAID  5: ~952
#

PART swap swap 32G
PART /boot ext3 1024M
PART / ext4 all

Nous allons mettre en commentaire la derniére partie du script et modifier la partie concernant LVM

## normal filesystems and volume group definitions:
## -> 512MB boot  (not on lvm)
## -> all the rest for LVM VG 'vg0'
PART /boot  ext3     512M
PART lvm    vg0       all
#
## logical volume definitions:
#LV <VG> <name> <mount> <filesystem> <size>
#
LV vg0   lv_root   /        ext4         20G
LV vg0   lv_var   /var        ext4         20G
LV vg0   lv_usr   /usr        ext4         30G
LV vg0   lv_opt   /opt        ext4         20G
LV vg0   lv_log   /var/log    ext4         5G
LV vg0   lv_local   /usr/local  ext4         10G
LV vg0   lv_swap   swap     swap          4G
LV vg0   lv_home   /home    xfs          20G
LV vg0   lv_srv   /srv    ext4          30G

Une fois les modifications terminées, plus qu’a sortir en faisant un <CTRL><F2> pour sauvegarder puis <CTRL>+<F10> pour sortir et lancer l’installation

                Hetzner Online GmbH - installimage

  Your server will be installed now, this will take some minutes
             You can abort at any time with CTRL+C ...

         :  Reading configuration                           done
         :  Loading image file variables                    done
         :  Loading debian specific functions               done
   1/16  :  Deleting partitions                             done
   2/16  :  Test partition size                             done
   3/16  :  Creating partitions and /etc/fstab              done
   4/16  :  Creating LVM volumes                            done
   5/16  :  Formatting partitions
         :    formatting /dev/nvme0n1p1 with ext3           done
         :    formatting /dev/vg0/lv_root with ext4         done
         :    formatting /dev/vg0/lv_var with ext4          done
         :    formatting /dev/vg0/lv_usr with ext4          done
         :    formatting /dev/vg0/lv_opt with ext4          done
         :    formatting /dev/vg0/lv_log with ext4          done
         :    formatting /dev/vg0/lv_local with ext4        done
         :    formatting /dev/vg0/lv_swap with swap         done
         :    formatting /dev/vg0/lv_home with xfs          done
         :    formatting /dev/vg0/lv_srv with ext4          done
   6/16  :  Mounting partitions                             done
   7/16  :  Sync time via ntp                               done
         :  Importing public key for image validation       done
   8/16  :  Validating image before starting extraction     done
   9/16  :  Extracting image (local)                        done
  10/16  :  Setting up network config                       done
  11/16  :  Executing additional commands
         :    Setting hostname                              done
         :    Generating new SSH keys                       done
         :    Generating ramdisk                            done
         :    Generating ntp config                         done
  12/16  :  Setting up miscellaneous files                  done
  13/16  :  Configuring authentication
         :    Fetching SSH keys                             done
         :    Disabling root password                       done
         :    Disabling SSH root login with password        done
         :    Copying SSH keys                              done
  14/16  :  Installing bootloader grub                      done
  15/16  :  Running some debian specific functions          done
  16/16  :  Clearing log files                              done

                  INSTALLATION COMPLETE
   You can now reboot and log in to your new system with the
 same credentials that you used to log into the rescue system.

root@rescue ~ #

Lancement du script avec options

Une possibilité trés intéressante est le lancement du script avec des options. Un fois ouvert comme précédemment, il est pratiquement pas nécessaire de faire d’édition et on peux sortir en faisant un <CTRL>+<F2>.

usage:  installimage [options]

  without any options, installimage starts in interactive mode.
  possible options are:

  -h                    display this help

  -a                    automatic mode / batch mode - use this in combination
                        with the options below to install without further
                        interaction. there will be no further confirmations
                        for deleting disks / all your data, so use with care!

  -c <configfile>       use the specified config file in
                        /root/.oldroot/nfs/install/configs for autosetup. when using
                        this option, no other options except '-a' are accepted.

  -x <post-install>     Use this file as post-install script, that will be executed after
                        installation inside the chroot.

  -n <hostname>         set the specified hostNAME.
  -r <yes|no>           activate software RAID or not.
  -l <0|1|5|6|10>       set the specified raid LEVEL.
  -i <imagepath>        use the specified IMAGE to install (full path to the OS image)
                        - supported image sources: local dir, ftp, http, nfs
                        - supported image types: tar,tar.gz,tar.bz,tar.bz2,tar.xz,tar.zst,tgz,tbz,txz
                        examples:
                        - local: /path/to/image/filename.tar.gz
                        - ftp:   ftp://<user>:<password>@hostname/path/to/image/filename.tar.bz2
                        - http:  http://<user>:<password>@hostname/path/to/image/filename.tbz
                        - https: https://<user>:<password>@hostname/path/to/image/filename.tbz
                        - nfs:   hostname:/path/to/image/filename.tgz
  -g                    Use this to force validation of the image file with detached GPG signature.
                        If the image is not valid, the installation will abort.
  -p <partitions>       define the PARTITIONS to create, example:
                        - regular partitions:  swap:swap:4G,/:ext3:all
                        - lvm setup example:   /boot:ext2:256M,lvm:vg0:all
  -v <logical volumes>  define the logical VOLUMES you want to be created
                        - example: vg0:root:/:ext3:20G,vg0:swap:swap:swap:4G
  -d <drives>           /dev names of DRIVES to use, e.g.: sda or sda,sdb
  -f <yes|no>           FORMAT the second drive (if not used for raid)?
  -s <de|en>            Language to use for different things (e.g.PLESK)
  -z PLESK_<Version>    Install optional software like PLESK with version <Version>
  -K <path/url>         Install SSH-Keys from file/URL
  -t <yes|no>           Take over rescue system SSH public keys
  -u <yes|no>           Allow usb drives
  -G <yes|no>           Generate new SSH host keys (default: yes)

On lance la commande suivante:

root@rescue ~ # installimage \
-n debian-64gb-fsn1-2 \
-r no \
-d nvme0n1 \
-p /boot:ext3:256M,lvm:vg0:all \
-v vg0:lv_root:/:ext4:20G,\
vg0:lv_var:/var:ext4:20G,\
vg0:lv_opt:/opt:ext4:20G,\
vg0:lv_usr:/usr:ext4:30G,\
vg0:swap:swap:swap:4G,\
vg0:lv_home:/home:ext4:20G,\
vg0:lv_log:/var/log:ext4:5G,\
vg0:lv_srv:/srv:ext4:30G

Les options utilisées sont:

  • -n - Définition du nom du serveur
  • -r - Activation du Raid ou non. Le fait de passer cette option supprime la paragraphe dans le fichier de configuration.
  • -p - Partitionnement du disque
  • -v - Découpage LVM

Reboot

Pour relancer le serveur normalement il suffit de lancer la commande:

root@rescue ~ # reboot

Vous perdez la main et le serveur doit normalement être disponible sur la même adresse ip mais hors mode rescue.

ATTENTION: Si le serveur ne reboot pas sur la nouvelle installation mais sur un raid, c’est qu’il a démarré sur les autres disques que celui qui vient de servir. C’est pour cette raison qu’il est plus sur de formater tous les disques en ajoutant les options:

FORMATDRIVE2 1
FORMATDRIVE3 1

référence: