Outils pour utilisateurs

Outils du site


fr:rapports:2023:10-21-hub-dc

2023/10/21 (dc) : Serveur de backup

Heure de début : 11h

Présences :

  • Thyrock
  • HgO
  • Célo
  • Niko

Météo

Moment informel durant lequel on exprime en peu de mots comment on se sent et si on a une attente forte pour la réunion. Ce n'est pas un moment de discussion mais d'expression individuelle et ce n'est pas obligatoire 🙂

Attente(s) forte(s)

Si l'une ou l'autre personne exprime une attente forte, merci de vous en occuper en priorité ou de la noter dans le hub ou dans un point approprié.

FIN :

Installation du serveur de remplacement de pbs.htz.neutri.net

Ce sera pour avoir un beau pbs.mdlp.neutri.net \o/

Ce qu'on ne fera pas : - On a un serveur NFS et PXE qui va nous aider à la mise à jour des firmwares du serveur

PXE : quand la carte réseau récupère son IP, elle utilise un bout de code qui est le PXE. Cela permet de démarrer depuis le réseau, ce qui est beau (et ça rime avec réseau).

Tharyrok a mis des barettes de RAM sur le serveur, l'a allumé pour voir s'il démarrait, mais c'est tout.

Matériel

Mais ce serveur, c'est quoi ?

Son nom c'est R510, de la famille Dell PowerEdge

Il possède une carte raid H700 qui ne permet pas d'être en mode passthrough, on va donc devoir configurer notre raid depuis cette carte raid.

On ne pourra pas utiliser de raid software.

Une petite surprise découverte par Tharyrok : on a deux emplacements 2 pouces et demi sur ce serveur. Donc pas besoin de convertisseurs.

On a 12 caddy 3.5 en façade, et 2 emplacements 2.5 dans le ventre de la bête.

Firmware

La première étape est de clear (remettre aux paramètres d'usine) la carte RAID.

Quand la carte raid s'anime pour le démarrage, on peut faire, ctrl+R (r comme RAID).

Chez Dell, on a toujours a peu près le même soft.

<photo>TODO</photo>

PERC H700 nous indique qu'il y a plein de “unconfigured physical disks”.

On se déplace tout en haut du tableau, et là en fait un F2. On choisit “clear config”, et on valide avec Enter. Un gros Yes / No apparaît, on confirme. On revient sur le menu, normalement Foreign Config est pas grisé et on doit le refaire là.

Mais là, on n'a encore rien, donc il n'y a pas de configuration raid résiduelle.

Avec un Ctrl+Alt+Delete, on redémarre.

Reboot counter: 1

On fait F12 pour démarrer sur le réseau.

En démarrant sur le réseau. Le serveur récupère une IP. Et dans le pfsense du Caldarium, on a indiqué dans la config DHCP que quand un nouveau serveur se connecte, il va se connecter à une machine précise pour récupérer sa configuration de démarrage.

On a un menu PXE tout moche et gris, on peut démarrer sur une Centos 7, ce que Tharyrok a configuré avant la réunion.

Pourquoi ? Parce que c'est le seul OS supporté par le Dell SUU (Server Update Utility), qui est un outil fourni par Dell pour mettre à jour les firmware.

suu -u

Il va faire un inventaire des équipements qu'il a sur ce serveur, et comparer les versions qui sont utilisées avec les versions intégrées dans l'outil.

S'il voit des versions plus récentes, il va les mettre à jour.

Là, on peut attendre assez longtemps, une vingtaine de minutes et on ne voit pas vraiment ce qui est en train de se faire. On peut tricher pour obtenir plus d'infos sur ce qui se passe:

htop

Cela permet de voir quels processus sont en train de tourner, et en fonction de ça on peut savoir où il en est.

Sans cette petite ISO sur le réseau, on avait toute une procédure longue et pénible : https://doc.neutrinet.be/inventaire-server-recup#

Pour le serveur NFS, il faut savoir qu'on doit désactiver les ACL car initramfs n'aime pas ça (ça lui donne mal à la tête). Bref, c'est un peu complexe à mettre en place…

Quand le serveur met à jour l'idrac, les ventilo tournent à 100% car le serveur perd l'info de combien de ventilos doivent fonctionner.

Le suu pour la gen 11, a un petit défaut: il n'inclut pas les toutes dernières versions disponibles pour le bios et l'idrac.

Tharyrok a téléchargé lui-même les binaires nécessaires pour les serveurs 310, etc… (en principe c'est le même binaire).

On exécute brutement le binaire (qui est déjà sur l'ISO Centos 7). Un petit message apparait comme sur les boîtes de médicaments pour indiquer qu'il faut faire attention blablabla.

On a besoin du serial number ou service tag du serveur (On le trouve avec un demidecode.). C'est ce qui permet d'identifier le matériel de Dell. On peut voir quand il a été mis en service, etc.

Mais ce qui nous intéresse, c'est de trouver le bon BIOS.

En allant sur le site de Dell, on trouve le bon binaire pour Centos et notre petit R510 ! On le copie sur l'ISO Centos 7.

On copie le binaire sur le serveur, et on se connecte au serveur pour le lancer.

On accepte pas mal de notifs de médicaments, et cela se lance. Il va redémarrer le serveur dans le processus.

Après quelques minutes…

Notre bios est à jour !

Reboot counter: 2

On redémarre sur le réseau, puis on boot sur Cent0S 7, pour pouvoir passer à la mise à jour de l'idrac !

Reboot counter: 3

Donc en résumé, on a d'abord utilisé le SUU pour mettre à jour tous les firmwares. Sauf que la gen 11 n'est plus supportée par Dell, donc on n'a pas toutes les dernières versions à jour dans le SUU. C'est pour cette raison qu'on a dû aller chercher à la main les binaires pour le BIOS et l'Idrac, qui sont les composants les plus critiques.

Idrac 6

L'Idrac 6 est en java 6 ou java 8, donc sur une distribution relativement moderne, cela ne fonctionne plus.

Malheureusement, l'Idrac6 ne supporte que cette version java

Il y a un projet qui permet de récupérer le .jar de l'iDrac et de le triturer pour qu'il soit lançable par une commande java en version 6 à 9.

On va utiliser un autre projet:

https://github.com/ucomesdag/idrac6-console

On va cloner ce repo, et on installe aussi java 7 fournit par Oracle: https://www.oracle.com/be/java/technologies/javase/javase7-archive-downloads.html

On prend ce fournisseur pour avoir le java le plus vanilla possible et être sûr que ça marche.

Sauf qu'il faut un compte… On va donc aller chercher un java fourni par Huawei (😱) et on décompresse le tout. Mais on ne va l'utiliser que pour cet outil là, donc ce n'est pas grave.

L'URL maléfique :

https://repo.huaweicloud.com/java/jdk/7u80-b15/

On met le java téléchargé dans le dossier du repo qu'on a cloné.

Dans le ReadME, il indique une commande pour modifier la variable d'environnement et utiliser java7 :

JAVA_HOME="/home/tharyrok/idrac6-console/jdk1.7.0_80/" ./console.sh 

On doit encore compléter la commande, notamment lui indiquer le hostname du serveur.

Config Bios

Maintenant que tout est à jour, on va tout reset \o/

Dans le BIOS, il y a aucune entrée dans le menu pour reset le BIOS.

C'est facheux.

Il faut allumer toutes les petites lumières du clavier: screenlock + capslock + numlock. C'est un peu comme un jeu.

Il y a un code secret: on peut faire Ctrl+R (pour controle+reset), Ctrl+F (pour controle + Factory) et Ctrl+B (pour reboot)

Après ça le serveur redémarre !

Reboot counter: 4

On revient dans le BIOS

On vérifie que les paramètres sont ok:

  • Processor:
    1. virtualization tech = enabled

    - Serial communication = com1

    • permet de rediriger la sortie serial du serveur vers l'entre serial de l'idrac
  • Power management = active power controller
  • System security
    • AC Power Recovery = on

On sauve les changements et on redémarre (again)

Reboot counter: 5

On fait Ctrl+E (au bon moment) pour entrer dans la config de l'Idrac.

Et là, on fait “Reset to default” et on attend sagement.

On configure : - LAN parameter:

  1. Domain name from DHCP = on
  2. IPv4 Address Source = dhcp

- Virtual media config

  1. Virtual media = Auto-Attached (permet d'attacher le cd rom virtuel à lIdrac)

- System services = disabled

  1. Après le boot, il va vérifier s'il y a un changement matériel et s'il ya des mises à jour à appliquer. Mais cela prend 2-3min au démarrage… On le le désactive parce que les gen 10 et 11 sont plus supportées, donc cela n'a plus beaucoup de sens.

On sauve et on redémarre \o/ On va noter l'IP de l'idrac pour s'y connecter.

Reboot counter: 6

Config raid

On a mis 6 disques durs + 1 disque de remplacement

On a mis 2 SSD dans le petit caddy.

On se connecte à l'IP : 172.16.0.94

Les identifiants par défaut de l'idrac sont:

  • login: root
  • mot de passe: calvin

On va toujours passer par l'idrac pour configurer le serveur à partir de maintenant.

Pour la console, on va devoir utiliser le petit outil idrac6-console qu'on a téléchargé tout à l'heure. On indique les informations de connexion:

JAVA_HOME="/home/tharyrok/idrac6-console/jdk1.7.0_80/" IDRAC_HOST="172.16.0.94" IDRAC_USER="root" IDRAC_PASSWD="calvin" ./console.sh -k

Le -k permet de passer outre la vérification du certificat.

Ca ne marche qu'à moitié. On a essayé en remplaçant le jdk par jre, mais ce n'est pas mieux. On ne va pas débugguer ça.

La librairie Virtual Media (?) n'est pas détectée, mais on parvient quand même à redémarrer le serveur.

On a la console, mais le Virtual Media nous aurait permi en plus de monter l'iso à distance. Là, ce n'est pas grave parce qu'on est à côté du serveur et on va pouvoir utiliser la bonne vieille méthode de la clé usb. Si on avait du le faire à distance, ce serait embêtant.

On démarre dans le controller raid. Au redémarrage, un des deux SSD n'apparait pas dans le RAID controller.

Possible qu'un des câble SAS soit mal connecté. Possible aussi qu'un des SSD soit déjà mort, mais moins probable…

Après investigation, c'est seulement un câble mal connecté.

Cette fois-ci on voit bien les deux SSD ainsi que les 7 disques durs.

On fait F2 pour avoir le menu.

On crée un nouveau Virtual Disk. Pour le système qui sera sur les SSD, on va créer un RAID 1. On sélectionne les deux disques à mettre en RAID. On appuie sur Espace pour les sélectionner.

L'option Fast Init va considérer que les disques sont déjà synchrnonisé. Le Raid va s'initialiser quand il y aura des données.

On va faire un Raid 6 (4 disques de données, 2 disques de parité). On choisit ce Raid pour avoir la plus grande garantie de défaillance matérielle : on peut perdre 2 disques sans perte de données.

On aura un peu moins de 8To de disponible (tous les disques sont de 2To). Comme précédemment, on fait un Fast Init.

On définit un « hot spear », c'est le 7ème disque qui servira de remplacement. Sur le RAID 6, on fait F2, on choisit “manage ded. HS” et on sélectionne le dernier disque qu'on a pas configuré.

En gros, cela indique au serveur que si un disque du raid casse, il utilisera automatiquement ce disque pour un remplacement.

Ctrl+n pour aller à la page suivante (deux fois).

On sélectionne le virtual disk bootable. Dans notre cas, c'est le VD 0. Comme c'est le choix par défaut, on n'a pas besoin de faire appliquer.

Là, on a une erreur car pas de propriété du controleur. En fait, on ne change pas la propriété du contrôleur, c'était déjà le disque bootable.

On revient au premier écran, et on voit la progression du RAID. Il va synchroniser un RAID à la fois.

Installation Debian

Choix 1 : on met un iso sur un NFS et on voit comment le monter sur l'idrac.

Choix 2 : on utilise kexec comme on avait déjà fait dans le labo proxmox.

On va partir sur le choix 1. On va utiliser Ganesha pour la partie NFS.

Chose importante: il ne faut pas oublier de désactiver les ACLs dans la config Ganesha.

Sur le serveur NFS, on va aller télécharger l'iso de Debian netinstall en version 12. On prend l'iso mini, qui ne contient que le kernel. C'est donc une image encore plus petite que la version netinstall qu'on utilise d'habitude. La raison est de réduire la taille de l'iso que l'idrac va devoir télécharger.

Depius l'idrac, dans le menu Remote File Share, on indique le chemin du mini iso sur le serveur NFS.

Si on a un message d'erreur à propos du Virtual Media, on vérifie qu'il est bien attaché.

On a une autre erreur, comme si le serveur ne parvenait pas à atteindre le serveur NFS. On vérifie si ce n'est pas un problème lié à NFS v4… On va forcer le NFS v3.

C'était bien ça le problème. Donc pour un idrac6, le remote share doit être un NFS 3.

Après ça, on redémarre le serveur.

Reboot counter: 7

Au démarrage, l'idrac va chercher l'iso stocké sur le NFS et le monte comme un CD-ROM.

Dans un Datacenter, un serveur NFS avec un CD-ROM peut donc être un point de secours.

On fait F11 pour avoir la liste des périphériques de démarrage. On choisit le CD-ROM. L'install de Debian se lance.

On va dans les options avancées, on choisit l'install expert.

On va reprendre les options par défaut qu'on utilise dans les iso de Neutrinet.

Le mini iso n'a pas tous les drivers nécessaires. On va donc devoir re-tenter l'opération avec l'iso de 600Mo qu'on télécharge sur le server NFS.

On indique le nouveau chemin dans le Remote File Share de l'idrac.

On redémarre pour booter sur le nouvel iso.

Reboot counter: 8

Dans le mode expert, on ne crée pas d'utilisateur par défaut.

Pour le système, on crée une partition de type GPT, avec une partition biosgrub de 1M, une partition /boot de 1G ext2, une partition swap de 16Go, une partition xfs du reste de l'espace disque.

On ne chiffre pas, car PBS permet de chiffrer les backups avec la clé privée du serveur.

On déconnecte le remote file share dans l'idrac.

Reboot counter: 9

Installation PBS

Une fois Debian installé et le serveur redémarré, on se connecte au serveur. Il faut d'abord modifier la config SSH depuis la console pour autoriser la connexion pour l'utilisateur root avec mot de passe.

On va commencer par lancer le playbook commun sur le PBS. Dans son /etc/hosts, Tharyrok ajoute le pbs avec son IP locale.

On l'ajoute aussi dans inventories/production.ini où l'on ajoute une subdivision pour la maison de la paix, où l'on n'a pas encore de machine.

On l'ajoute aussi dans les group vars à la place de Hetzner.

On va devoir retrier la manière dont on gère les groupes. Actuellement, on considère qu'une application est installable une seule fois, ce qui n'est pas toujours juste.

On doit faire des ajustements pour le rôles commun dans Ansible, pour qu'il puisse supporter bookworm.

https://github.com/influxdata/telegraf/issues/13759 → telegraf a encore changé sa façon de faire pour les repos. Maintenant on doit mettre la distribution (= debian) mais plus la version, qui reste main peu importe la version.

Une fois le serveur complètement installé, on a encore deux choses à faire :

  • installer pbs
  • formater le disque des données
  • installer l'outil propriétaire pour le raid controller

La doc d'install pour PBS: https://pbs.proxmox.com/docs/installation.html

Par défaut, il installe postfix. On met “no configuration”

On va chercher l'outil propriétaire sur https://hwraid.le-vert.net/wiki/DebianPackages puis

apt install megacli megaclisas-status

Avec la commande megaclisas-status, on peut voir le statut du raid.

On redémarre le serveur pour que l'installation de pbs soit complètement terminée.

Reboot counter: 42

On va récupérer la config nftables qui est sur le PBS chez Hetzner.

On va ensuite formater le disque de donnée.

On installe gdisk, puis on formatte le disque /dev/sdb. On rajoute la config dans /etc/fstab, et on ajoute un storage dans l'interface PBS.

On installe sshguard et on enlève fail2ban, pour détecter le brute-force sur ssh.

The end

Dans les choses qu'il reste à faire:

  • Trouver un moment pour aller placer le serveur
    • Idéalement, avoir une voiture ce jour-là, sinon ce sera un taxi
  • Configurer la partie NAT / port-forwarding à la Maison de la Paix
    • Il nous faut un port SSH (22) et un port PBS (8007)
  • Configurer les Proxmox pour qu'ils pointent vers le nouveau PBS

L'IP publique sera 213.211.178.140

Prochaine réunion

Garde-Pad: Tharyrok

Météo de fin

Moment informel durant lequel on exprime en peu de mots comment, à titre personnel, la réunion a été vécue que ce soit positif ou négatif. Si une ou plusieurs tension est née durant la réunion, il est peut-être nécessaire d'envisager l'une ou l'autre réunion pour y remédier.

fr/rapports/2023/10-21-hub-dc.txt · Dernière modification : 2024/01/13 11:35 de celo