Skip to content

Comment installer les versions actuelles d'Ubuntu via un démarrage réseau PXE et une installation automatisée ?

Nous passons en revue de manière exhaustive chaque écrit dans notre espace dans le but de toujours vous montrer les informations véridiques et actuelles.

Solution :

Introduction

Au lieu d'avoir un petit paquetage spécifique à la tâche, il est maintenant nécessaire d'utiliser l'image ISO complète régulière. Seul l'installateur de serveur Subiquity peut être automatisé, il est donc nécessaire d'utiliser l'image du serveur même pour une installation de bureau.

Les étapes suivantes concernent la version actuelle 20.10 (Groovy Gorilla). Pour les versions futures, remplacez toutes les occurrences de 20.10 par le numéro de la version que vous souhaitez installer.

Conditions préalables

Prérequis sur la machine serveur qui va servir les fichiers PXE, l'image d'installation et la configuration d'auto-installation :

  • Un serveur TFTP fonctionnel et une configuration DHCP correspondante.
  • Un serveur web en fonctionnement
  • Avoir les paquets pxelinux, syslinux-efi, syslinux-common sont installés

Servir l'image ISO et la configuration d'auto-installation

  1. Téléchargement de l'image complète du serveur live : wget https://releases.ubuntu.com/20.10/ubuntu-20.10-live-server-amd64.iso
  2. Copiez l'image ISO sur votre serveur web
  3. Créez un répertoire sur le serveur web pour contenir la configuration d'auto-installation. Créez les fichiers meta-data et user-data dans le répertoire.
  4. Ecrivez votre configuration d'auto-installation dans le fichier user-data en utilisant https://ubuntu.com/server/docs/install/autoinstall-reference comme référence

Préparer et servir l'environnement PXE

  1. Allez dans le répertoire que votre serveur TFTP dessert, par défaut. /srv/tftp

  2. Copiez l'image ISO téléchargée dans la section précédente dans le répertoire actuel.

  3. Créez quelques répertoires que nous allons utiliser dans les étapes suivantes : mkdir -p iso_mount init boot/uefi boot/bios pxelinux.cfg

  4. Montez l'image et extrayez le noyau et l'initrd :

     mount -o loop ubuntu-20.10-live-server-amd64.iso iso_mount/
     cp -p iso_mount/casper/vmlinuz init/
     cp -p iso_mount/casper/initrd init/
     umount iso_mount
    
  5. Préparez les fichiers PXELINUX pour le démarrage via UEFI ainsi que via BIOS :

     # UEFI
     cp -p /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi boot/uefi
     cp -p /usr/lib/syslinux/modules/efi64/ldlinux.e64 boot/uefi
     cp -p /usr/lib/syslinux/modules/efi64/libcom32.c32 boot/uefi
     cp -p /usr/lib/syslinux/modules/efi64/libutil.c32 boot/uefi
     cp -p /usr/lib/syslinux/modules/efi64/vesamenu.c32 boot/uefi
    
     # BIOS
     cp -p /usr/lib/PXELINUX/pxelinux.0 boot/bios
     cp -p /usr/lib/syslinux/modules/bios/ldlinux.c32 boot/bios
     cp -p /usr/lib/syslinux/modules/bios/libcom32.c32 boot/bios
     cp -p /usr/lib/syslinux/modules/bios/libutil.c32 boot/bios
     cp -p /usr/lib/syslinux/modules/bios/vesamenu.c32 boot/bios
    
  6. Configurez votre serveur DHCP pour définir le nom de fichier de démarrage sur. boot/uefi/syslinux.efi pour les clients UEFI et boot/bios/pxelinux.0 pour les clients BIOS

  7. Créez une configuration PXELINUX à pxelinux.cfg/default similaire à ce qui suit . Remplacez les URL entre crochets par les URL de votre serveur web : Remplacez par l'URL de l'image ISO et par l'URL du répertoire contenant la configuration d'autoinstallation (y compris une barre oblique de fin de ligne !).

     DEFAULT vesamenu.c32
     PROMPT 0
     NOESCAPE 1
    
     MENU TITLE PXE System Installation
    
     LABEL Ubuntu 20.10
       MENU LABEL ubuntu_20.10
       KERNEL ../../init/vmlinuz
       INITRD ../../init/initrd
       APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url= autoinstall ds=nocloud-net;s=
    
  8. Liez la configuration PXELINUX dans le répertoire boot répertoires pour l'UEFI et le BIOS :

     ln -s ../../pxelinux.cfg boot/uefi/pxelinux.cfg
     ln -s ../../pxelinux.cfg boot/bios/pxelinux.cfg
    

Conclusion

Vous devriez maintenant être en mesure de démarrer les clients UEFI et BIOS via PXE dans l'installateur Subiquity, qui s'exécutera ensuite de manière automatisée selon votre configuration d'autoinstallation.

Installation du bureau

Si vous installez un système de bureau, il est nécessaire d'installer l'option ubuntu-desktop paquet.

Vous devrez également corriger la configuration du réseau dans le système installé, car Subiquity permet de... systemd-networkd au lieu de NetworkManagerqui est normalement utilisé sur les systèmes de bureau :

  1. Supprimez la configuration réseau créée par Subiquity : rm /etc/netplan/00-installer-config.yaml

  2. Créez un fichier /etc/netplan/01-network-manager-all.yaml avec le contenu suivant :

     # Let NetworkManager manage all devices on this system
     network:
       version: 2
       renderer: NetworkManager
    
  3. Exécutez netplan apply ou redémarrer

Bon, je pourrais tout aussi bien donner mon avis sur la question... alors c'est parti !

Intro

Vous trouverez ci-dessous un guide PXE complet, depuis la configuration du serveur et de tous les services requis, jusqu'aux premiers démarrages. Il comprend également des instructions pour les deux Ubuntu 20.04.1 et 20.10., avec l'installation automatique du serveur Ubuntu, l'installation interactive du serveur et le démarrage en direct du bureau (comme la version PXE du "Live CD"). Le guide avait été légèrement modifié pour inclure toutes les options dans un seul menu de démarrage avec toutes les variantes. Les scénarios BIOS et UEFI sont tous deux expliqués.

J'utilise un composant de Syslinux appelé "lpxelinux" (première minuscule "L"), qui a le support pour démarrer le noyau et init à partir de HTTP également. syslinux.efi a déjà cela aussi. HTTP permet des transferts plus rapides, plus nous permet d'avoir une organisation un peu différente des fichiers, plus quelques autres avantages mineurs en bout de ligne (pour les plus grandes implémentations).

C'est un guide complet étape par étape !

Serveur PXE - Ubuntu 20.04.1 LTS

Installez le serveur Ubuntu comme d'habitude, commencez avec les options minimales installées, mais j'active habituellement le serveur OpenSSH pour permettre l'administration à distance. Après l'installation, assurez-vous de le mettre à jour complètement.

sudo su
apt-get update && apt-get upgrade -y

Outils et exigences

Nous avons besoin d'un serveur TFTP, d'un serveur HTTP(S) et d'un serveur DHCP. Vous pouvez utiliser d'autres serveurs si vous les avez déjà, mais pour faciliter la suite, nous allons tout installer sur notre Ubuntu 20.04.1 LTS nouvellement installé....

J'ai choisi les paquets les plus populaires :

apt-get install tftpd-hpa apache2 isc-dhcp-server

Nous aurons également besoin de récupérer les fichiers syslinux. Puisque le guide de Marian a déjà montré comment les obtenir à partir des paquets apt, je vais faire autrement, par souci d'exhaustivité (vous pouvez mélanger les approches comme vous le souhaitez). Nous obtenons les fichiers de l'officiel kernel.org

mkdir /root/pxe
mkdir /root/pxe/syslinux
cd /root/pxe/syslinux
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
tar -xf syslinux-6.03.tar.gz
cd syslinux-6.03/
ll

J'ai profité de l'occasion pour créer un répertoire temporaire pour nous sous /root/pxe et syslinux sous ce dernier. N'hésitez pas à placer ces fichiers où vous le souhaitez, assurez-vous simplement de modifier les commandes par la suite.

SYSLINUX - LPXELINUX (fichiers)

Ensuite, nous copions les fichiers dont nous aurons besoin. N'hésitez pas à copier d'autres modules, mais ceux-ci sont suffisants.

TFTPD a déjà un répertoire que nous allons utiliser, sous : /var/lib/tftpboot/

Copiez-y les fichiers, dans des répertoires séparés (certains fichiers ont les mêmes noms mais sont destinés à des architectures différentes).

# files for 64bit uefi
mkdir /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/efi/syslinux.efi /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/menu/menu.c32 /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/menu/vesamenu.c32 /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/libutil/libutil.c32 /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/elflink/ldlinux/ldlinux.e64 /var/lib/tftpboot/efi64
cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/lib/libcom32.c32 /var/lib/tftpboot/efi64
cd /var/lib/tftpboot/efi64
ll

# files for 32bit bios
mkdir /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/core/lpxelinux.0 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/menu/menu.c32 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/menu/vesamenu.c32 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/libutil/libutil.c32 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 /var/lib/tftpboot/bios
cp /root/pxe/syslinux/syslinux-6.03/bios/com32/lib/libcom32.c32 /var/lib/tftpboot/bios
cd /var/lib/tftpboot/bios
ll

Serveur DHCP

Le serveur DHCP lui-même doit avoir une IP statique. Faisons donc cela (si vous ne l'avez pas fait pendant l'installation).

Modifiez la configuration du réseau (fichier YAML) :

nano /etc/netplan/00-installer-config.yaml

Contenu :

# This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      addresses: [10.10.2.1/24]
      gateway4: 10.10.2.99
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
  version: 2

Appliquez la configuration :

netplan apply

Ensuite, nous devons entrer la configuration de base pour les zones et les pools du serveur DHCP. Je fais une configuration supplémentaire ici pour vous montrer que vos futurs clients PXE peuvent être dans des sous-réseaux différents de votre serveur PXE. Dans mon cas, le serveur PXE (avec tous les services) est à 10.10.2.1. J'ai deux sous-réseaux connectés via un routeur virtuel : 10.10.1.0/24 et 10.10.2.0/24

nano /etc/dhcp/dhcpd.conf

Contenu (juste un exemple) :

# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 10.10.1.0 netmask 255.255.255.0 {
 range 10.10.1.110 10.10.1.120;
 option routers 10.10.1.99;
 option domain-name-servers 1.1.1.1, 8.8.8.8;
# option domain-name "mydomain.example";
}

subnet 10.10.2.0 netmask 255.255.255.0 {
 range 10.10.2.110 10.10.2.120;
 option routers 10.10.2.99;
 option domain-name-servers 1.1.1.1, 8.8.8.8;
# option domain-name "mydomain.example";
}

# pxe client, uefi64
host uefi-client {
  hardware ethernet fa:fa:fa:00:0e:07;
  fixed-address 10.10.1.201;
  next-server 10.10.2.1;
  filename "efi64/syslinux.efi";
}

# pxe client, bios
host bios-client {
  hardware ethernet fa:fa:fa:00:0e:17;
  fixed-address 10.10.2.202;
  next-server 10.10.2.1;
  filename "bios/lpxelinux.0";
}

Note : Veuillez modifier le fichier en fonction de votre situation ! Vous devez avoir des sous-réseaux corrects, des passerelles, ainsi qu'une adresse MAC (adresse matérielle) correcte de vos clients !

Et vous devrez définir l'interface sur laquelle le déamon DHCP écoutera, utiliser ip a pour vérifier quelle interface cela serait pour vous (je l'ai à eth0)

nano /etc/default/isc-dhcp-server

Contenu :

INTERFACESv4="eth0"
INTERFACESv6=""

Assurez-vous de redémarrer le service :

systemctl restart isc-dhcp-server.service
systemctl status isc-dhcp-server.service

Et activez-le pour qu'il démarre automatiquement au redémarrage du serveur :

systemctl enable isc-dhcp-server.service

Si vous avez des fautes de frappe ou d'autres erreurs comme des doublons d'IP ou de noms de clients, deamon échouera. Vérifiez les journaux si le statut est rouge.

tail -n 100 /var/log/syslog

OPTIONNEL - paramètres du routeur

Si vous avez différents sous-réseaux, assurez-vous d'ajouter. ip helper pour DHCP, aussi souvent configuré comme DHCP relay dans la plupart des routeurs. Il suffit de le faire pointer vers l'adresse IP de votre serveur PXE (si vous avez des services répartis sur plusieurs serveurs, alors faites-le pointer vers celui qui détient les services DHCP).

Serveur TFTP

Nous devons configurer les choses de base pour le serveur TFTP, mais une seule option doit vraiment être changée/vérifiée - le chemin vers votre répertoire TFTP racine. /var/lib/tftpboot

nano /etc/default/tftpd-hpa

Contenu :

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
#TFTP_DIRECTORY="/srv/tftp"
# /var/lib/tftpboot
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"

Assurez-vous de redémarrer le service également.

systemctl restart tftpd-hpa

Et activez-le pour qu'il démarre automatiquement au redémarrage du serveur :

systemctl enable tftpd-hpa

Vous pouvez utiliser le client TFTP pour tester le service si vous voulez être sûr que tout va bien.

SYSLINUX / (l)pxelinux configs

Nous avons besoin de quelques configs pour démarrer ! Au minimum, nous avons besoin d'une default pour chaque architecture. Nous les plaçons dans le répertoire TFTP

mkdir /var/lib/tftpboot/efi64/pxelinux.cfg
mkdir /var/lib/tftpboot/bios/pxelinux.cfg
touch /var/lib/tftpboot/efi64/pxelinux.cfg/default
touch /var/lib/tftpboot/bios/pxelinux.cfg/default
nano /var/lib/tftpboot/efi64/pxelinux.cfg/default

Contenu du fichier :

DEFAULT menu.c32
 PROMPT 0

 MENU TITLE PXE Boot Menu
 MENU COLOR TABMSG    37;40 #80ffffff #00000000
 MENU COLOR HOTSEL    30;47 #40000000 #20ffffff
 MENU COLOR SEL       30;47 #40000000 #20ffffff
 MENU COLOR SCROLLBAR 30;47 #40000000 #20ffffff
 MENU WIDTH 80
 MENU MARGIN 22
 MENU PASSWORDMARGIN 26
 MENU ROWS 6
 MENU TABMSGROW 15
 MENU CMDLINEROW 15
 MENU ENDROW 24
 MENU PASSWORDROW 12
 MENU TIMEOUTROW 13
 MENU VSHIFT 6
 NOESCAPE 1
 ALLOWOPTIONS 0
 MENU AUTOBOOT Starting Local System in # seconds

 LABEL bootlocal
  MENU LABEL ^Local Boot
  MENU DEFAULT
  LOCALBOOT 0
 TIMEOUT 300
 TOTALTIMEOUT 3000

 LABEL UbuntuServer-20.04.1-auto
  MENU LABEL Ubuntu 20.04.1 Live Auto Installer
  KERNEL http://10.10.2.1/ubuntu-server-20.04.1/vmlinuz
  INITRD http://10.10.2.1/ubuntu-server-20.04.1/initrd
   APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://10.10.2.1/ubuntu-server-20.04.1/

 LABEL UbuntuServer-20.04.1-interactive
  MENU LABEL Ubuntu 20.04.1 Live Interactive Installer
  KERNEL http://10.10.2.1/ubuntu-server-20.04.1/vmlinuz
  INITRD http://10.10.2.1/ubuntu-server-20.04.1/initrd
  APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.04.1-live-server-amd64.iso

 LABEL UbuntuDesktop-20.04.1-live
  MENU LABEL Ubuntu 20.04.1 Desktop Live CD
  KERNEL http://10.10.2.1/ubuntu-desktop-20.04.1/vmlinuz
  INITRD http://10.10.2.1/ubuntu-desktop-20.04.1/initrd
  APPEND root=/dev/ram0 ramdisk_size=3000000 boot=casper ip=dhcp netboot=url url=http://10.10.2.1/ubuntu-20.04.1-desktop-amd64.iso

 LABEL UbuntuServer-20.10-auto
  MENU LABEL Ubuntu 20.10 Live Auto Installer
  KERNEL http://10.10.2.1/ubuntu-server-20.10/vmlinuz
  INITRD http://10.10.2.1/ubuntu-server-20.10/initrd
   APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.10-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://10.10.2.1/ubuntu-server-20.10/

 LABEL UbuntuServer-20.10-interactive
  MENU LABEL Ubuntu 20.10 Live Interactive Installer
  KERNEL http://10.10.2.1/ubuntu-server-20.10/vmlinuz
  INITRD http://10.10.2.1/ubuntu-server-20.10/initrd
  APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.10-live-server-amd64.iso

 LABEL UbuntuDesktop-20.10-live
  MENU LABEL Ubuntu 20.10 Desktop Live CD
  KERNEL http://10.10.2.1/ubuntu-desktop-20.10/vmlinuz
  INITRD http://10.10.2.1/ubuntu-desktop-20.10/initrd
  APPEND root=/dev/ram0 ramdisk_size=3000000 boot=casper ip=dhcp netboot=url url=http://10.10.2.1/ubuntu-20.10-desktop-amd64.iso

Notez que je tire les deux vmlinuz et initrd du serveur HTTP. Le même serveur héberge l'image ISO et nos fichiers d'auto-installation. Nous allons configurer ce serveur web ensuite, pas d'inquiétude.

Depuis default a la même apparence pour le BIOS et l'UEFI, il suffit de le copier (ou de le lier si vous le souhaitez).

cp /var/lib/tftpboot/efi64/pxelinux.cfg/default /var/lib/tftpboot/bios/pxelinux.cfg/default

Si vous les gardez séparés, vous pouvez changer les options sur eux individuellement. Le menu accepte également la liaison par le biais de include option. Mais si vous voulez des menus avancés, lisez les docs ou quelques articles supplémentaires.

Serveur web - HTTP(S)

Je vais décrire une configuration HTTP simple, mais vous pouvez étendre cela à HTTPS plus tard. Ce serait recommandé si votre environnement n'est pas fermé, et si vous avez des mots de passe définis dans les fichiers d'auto-installation. Pour le laboratoire de base, nous utilisons HTTP.

Nous devons récupérer les ISOs. Comme j'ai mis à la fois le serveur et le bureau dans le menu, je vais répéter cela une fois pour chaque ISO. Je sais que la question concerne le serveur, mais les extras ne vous feront pas de mal. Si vous voulez juste le serveur ou le bureau, sautez simplement l'autre.

C'est pour Ubuntu Server LTS 20.04.1

wget https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-live-server-amd64.iso -O /var/www/html/ubuntu-20.04.1-live-server-amd64.iso

Extrayez le noyau et les initramfs (vmlinuz et initrd) dans le sous-dossier de cette distro/variation/version. Vous pouvez en avoir beaucoup plus sur votre menu PXE multi-boot.

mount /var/www/html/ubuntu-20.04.1-live-server-amd64.iso /mnt/
mkdir /var/www/html/ubuntu-server-20.04.1
cp /mnt/casper/vmlinuz /var/www/html/ubuntu-server-20.04.1/
cp /mnt/casper/initrd /var/www/html/ubuntu-server-20.04.1/
umount  /mnt

Ceci est pour Desktop LTS 20.04.1

wget https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso -O /var/www/html/ubuntu-20.04.1-desktop-amd64.iso

Et de nouveau extraire, notez que j'ai ajouté un nom de dossier différent.

mount /var/www/html/ubuntu-20.04.1-desktop-amd64.iso /mnt/
mkdir /var/www/html/ubuntu-desktop-20.04.1
cp /mnt/casper/vmlinuz /var/www/html/ubuntu-desktop-20.04.1/
cp /mnt/casper/initrd /var/www/html/ubuntu-desktop-20.04.1/
umount  /mnt

Ce qui suit est pour Serveur Ubuntu 20.10

wget https://releases.ubuntu.com/20.10/ubuntu-20.10-live-server-amd64.iso -O /var/www/html/ubuntu-20.10-live-server-amd64.iso

Extraire les fichiers, à nouveau dans un dossier séparé

mount /var/www/html/ubuntu-20.10-live-server-amd64.iso /mnt/
mkdir /var/www/html/ubuntu-server-20.10
cp /mnt/casper/vmlinuz /var/www/html/ubuntu-server-20.10/
cp /mnt/casper/initrd /var/www/html/ubuntu-server-20.10/
umount  /mnt

Et enfin, ceci est pour Ubuntu Desktop 20.10

wget https://releases.ubuntu.com/20.10/ubuntu-20.10-desktop-amd64.iso -O /var/www/html/ubuntu-20.10-desktop-amd64.iso

Extraire à nouveau les fichiers, dans un dossier séparé une fois de plus.

mount /var/www/html/ubuntu-20.10-desktop-amd64.iso /mnt/
mkdir /var/www/html/ubuntu-desktop-20.10
cp /mnt/casper/vmlinuz /var/www/html/ubuntu-desktop-20.10/
cp /mnt/casper/initrd /var/www/html/ubuntu-desktop-20.10/
umount  /mnt

Cela devrait être fait. Testez avec votre navigateur pour voir si vous pouvez atteindre les fichiers dans des emplacements corrects. Nous avons utilisé le répertoire Apache par défaut sur Ubuntu pour héberger tous les fichiers, donc aucune étape supplémentaire ne devrait être nécessaire.

Fichier d'auto-installation pour le serveur 20.04 et 20.10.

Les docs d'Ubuntu disent que vous pouvez simplement installer un serveur, puis trouver un fichier type avec vos sélections dans... /var/log/installer/autoinstall-user-data fichier.

Pour tester dans un laboratoire, vous pouvez utiliser ce fichier comme modèle, mais cela nécessitera quelques modifications.

Pour avoir juste une configuration minimale, vous pouvez utiliser le code ci-dessous (à nouveau du code YAML, attention aux espacements si vous faites des modifications manuelles) :

nano /var/www/html/ubuntu-server-20.04.1/user-data

Contenu :

#cloud-config
autoinstall:
  version: 1
  apt:
    geoip: true
    preserve_sources_list: false
    primary:
    - arches: [amd64, i386]
      uri: http://hr.archive.ubuntu.com/ubuntu
    - arches: [default]
      uri: http://ports.ubuntu.com/ubuntu-ports
  identity: {hostname: pxe-client, password: $6$zN/uHJD1rEXD/ETf$q8CoBt3xXmBT37RslyWcpLT1za4RJR3QEtosggRKN5aZAAf6/mYbFEQO66AIPm965glBXB1DGd0Sf.oKi.Rfx/,
    realname: pxe, username: pxe}
  keyboard: {layout: hr, toggle: null, variant: ''}
  locale: en_US
  network:
    network:
      version: 2
      ethernets:
        eth0:
          dhcp4: no
          dhcp6: no
  ssh:
    allow-pw: true
    install-server: true

Note : Cette configuration va configurer le serveur avec le nom d'hôte. pxe-clientet le nom d'utilisateur et le mot de passe étant tous deux pxe. Le serveur n'aura pas de réseau (DHCP désactivé), donc il ne fera pas de mise à jour automatique pendant l'installation (pour un test plus rapide). Et il aura un serveur OpenSSH préinstallé, avec une connexion par mot de passe. Notez les éléments régionaux (hr = Croatie, nous avons donc un miroir croate pour apt, et un clavier croate), modifiez-les pour votre pays. Voir votre exemple /var/log/installer/autoinstall-user-data comme un modèle pour ajouter vos propres ajustements.

Ubuntu nécessite meta-data également. Il DOIT être vide. Il suffit donc de le créer dans le même répertoire que celui où vous avez placé le fichier user-data fichier

touch /var/www/html/ubuntu-server-20.04.1/meta-data

Pour voir plus d'options voir la docs officielle :
https://ubuntu.com/server/docs/install/autoinstall-reference

Pour Ubuntu 20.10 tout est identique, il suffit de copier le code, ou de le créer dans le bon chemin :

nano /var/www/html/ubuntu-server-20.10/user-data
touch /var/www/html/ubuntu-server-20.10/meta-data

Utilisez le même échantillon de données utilisateur, elles sont interchangeables entre 20.04 et 20.10. Notez également le double network: network: partie... 20.04 avait un bug où il exigeait une telle configuration, tandis que 20.10 n'a pas le bug, mais supporte cela comme une fonctionnalité de compatibilité ascendante.

Vérifiez vos fichiers

Je vous recommande de vérifier que vous avez tous les fichiers en place pour toutes les variations :

ll /var/www/html/ubuntu-server-20.04.1/
ll /var/www/html/ubuntu-desktop-20.04.1/
ll /var/www/html/ubuntu-server-20.10/
ll /var/www/html/ubuntu-desktop-20.10/

Les dossiers du serveur devraient avoir 4 fichiers :

initrd
meta-data
user-data
vmlinuz

Les dossiers du bureau devraient avoir 2 fichiers :

initrd
vmlinuz

Si vous avez des problèmes de démarrage, vérifiez les permissions des fichiers listés ci-dessus. Si vous faites un laboratoire, faites juste une chose dangereuse et... chmod tout avec des permissions rw complètes :

chmod -R 777 /var/www/html/*

Pour la production, configurez les permissions appropriées avec juste un accès en lecture là où c'est nécessaire.

Tester tout ça

Dans mon environnement de laboratoire, ainsi que lors du démarrage d'une nouvelle configuration de production, je teste tout cela dans des VM d'abord. J'utilise Hyper-V pour les tests (je sais, tuez-moi, avec des trucs Microsoft ici soudainement 🙂 ). Pour tester le démarrage UEFI, vous créez Generation 2 et pour le démarrage BIOS, vous devez utiliser la machine Generation 1 machine. Assurez-vous d'ajouter suffisamment de RAM à VM pour contenir le RAMDISK ! Ainsi, si la VM teste un serveur avec un disque de 1,5 Go de RAM, alors vous avez besoin de 2 Go de RAM pour la VM, et pour l'ordinateur de bureau nous avons un disque de 3 Go de RAM, donc le mieux est d'avoir 4 Go de RAM attaché à la VM. Aussi, assurez-vous d'attacher les interfaces réseau aux réseaux corrects, comme je l'ai déjà mentionné, je garde un routeur virtuel et plusieurs sous-réseaux, car je dois tester et prouver tout cela pour le déploiement dans des environnements assez grands et compliqués.

Quoi qu'il en soit, une fois que vous avez la VM - il suffit de la démarrer ! Si vous avez tout fait correctement, vous devriez voir un démarrage PXE, VM obtenant l'IP, puis démarrant le menu. Après 30 sec, il démarrera à partir du disque, mais il suffit d'utiliser les touches fléchées pour sélectionner une option. J'ai trouvé le démarrage UEFI beaucoup plus rapide dans mes tests, donc j'ai généralement testé avec UEFI, puis testé BIOS VM une fois que UEFI était là où je le voulais.

Enveloppez-le

Ce n'est que maintenant que je vais admettre que je ne suis pas un gourou de Linux. Mais j'ai passé beaucoup de temps au cours du dernier mois et demi à faire des bottes PXE et à configurer différents environnements pour lui et avec lui. C'est une pile Ubuntu pure dans ce tutoriel. Je prévois d'en écrire une un peu plus orientée Microsoft, mais aussi basée sur SYSLINUX avec un menu multi-boot, et nous permettant de démarrer des distros Linux (assorties) (en plus de Windows). Tout ceci peut être fait avec n'importe quel outil DHCP/HTTP/TFTP, y compris Microsoft Windows Server 2019, avec quelques rôles installés dessus (DHCP, IIS, WDS). De même, vous pouvez utiliser n'importe quelle autre distro pour servir de serveur PXE à vos installations Ubuntu. Vous n'avez pas besoin d'utiliser Apache2 non plus, si vous êtes plus à l'aise avec, par exemple, nginx comme serveur HTTP.

Pour la fin, j'ai fait tous mes tests avec les deux Ubuntu 20.04 et 20.10. L'ensemble de la configuration est EXACTEMENT LA MÊME pour les deux versions. Il suffit de changer les noms des fichiers et des téléchargements ISO. Si vous n'avez besoin que de l'un d'entre eux, sautez simplement les parties pour ce dont vous n'avez pas besoin.

Bonne chasse !

Edit : 2020-11-14 - ajouté tout pour Ubuntu 20.10, nettoyé un peu de code, et ajouté des noms plus significatifs pour les dossiers puisque nous gérons 4 bottes OS différentes maintenant.

Si vous avez aimé notre travail, vous avez la possibilité de laisser une division sur ce que vous ajouteriez à ce message.



Utilisez notre moteur de recherche

Ricerca
Generic filters

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.