diff --git a/.gitignore b/.gitignore
index 3fd98e4..8ace9f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,4 +23,5 @@ var/
*.egg-info/
.installed.cfg
*.egg
-.idea
\ No newline at end of file
+.idea
+.vscode
diff --git a/content/2017/2017-11-23-installer-openvz-a-distance.md b/content/2017/2017-11-23-installer-openvz-a-distance.md
index eaafba1..b185bec 100644
--- a/content/2017/2017-11-23-installer-openvz-a-distance.md
+++ b/content/2017/2017-11-23-installer-openvz-a-distance.md
@@ -11,15 +11,15 @@ Status: published
[TOC]
-
+**Edit 2022**: Article mis à jour pour nettoyer les parties osbolètes et utiliser les nouveaux logiciels
# Vous n'avez accès à rien ?
Pas d'ipmi, pas de KVM, pas de console ? Et pourtant vous voulez installer votre serveur openvz ?
C'est possible et dans cet article, on va voir comment vous pouvez vous en tirer !
-En bonus, parce que sinon ça ne serait pas marrant, on va également voir comment chiffrer le serveur et lancer un serveur SSH au boot pour entrer le mot de passe et déchiffrer le disque.
+En bonus, parce que sinon ce serait trop facile, on va également voir comment chiffrer le serveur et lancer un serveur SSH au boot pour entrer le mot de passe et déchiffrer le disque.
Vous aurez ainsi un serveur openvz entièrement chiffré pour faire tourner vos container ou vos VM, ce qui est très appréciable à notre époque où la confidentialité des données est un problème important.
-Vous pouvez faire confiance à votre hébergeur (ou à ceux qui pourraient lui demander d'accéder à vos données), mais personnellement je pense que si vous ne vous mettez pas dans la situation ou vous **devez** lui faire confiance, c'est encore plus simple ;-)
+Vous pouvez très bien faire confiance à votre hébergeur (ou à ceux qui pourraient lui demander d'accéder à vos données), mais personnellement je pense que si vous ne vous mettez pas dans la situation ou vous **devez** lui faire confiance, c'est encore plus simple ;-)
Je ne vais par contre pas vous mentir, sans accès visuel, le debug en cas de problèmes peut être trèèèèès relou.
Je vais ici décrire la procédure complète qui a fonctionné plusieurs fois chez moi, mais il a fallut de nombreux tests... Si jamais vous ne vous en sortez pas, n'hésitez pas à commenter, j'essaierai de vous aider au mieux !
@@ -33,7 +33,7 @@ Je le dis tout de suite, il va vous falloir quand même quelques trucs pour vous
* Un client VNC. Je vous conseille [Reminna](http://www.remmina.org/wp/) si vous utilisez Linux. Sous Windows, je ne peux pas vous aider.
* Un client SSH. Openssh sous Linux, ou [putty](http://www.putty.org/) sous Windows.
* Il vous faut un mode rescue avec votre hébergeur... Même minimaliste, avec au moins un accès SSH, nécessaire pour le chroot.
- * Installer votre serveur sur votre OS préféré pour le préparer, j'utiliserai pour ma part Debian 9.
+ * Installer votre serveur sur votre OS préféré pour le préparer, j'utiliserai pour ma part Debian 11.
## Préparer le serveur HTTP
Pour permettre l'installation à distance, il va falloir faire en sorte que les fichiers de l'image ISO openvz7 soient accessibles en HTTP pour que votre serveur puisse récupérer les fichiers à distance lors de son démarrage.
@@ -74,9 +74,11 @@ Notez la configuration réseau de votre serveur. Il vous faut adresse IP, passer
ip address show
cat /etc/resolv.conf
-Enfin, récupérez l'id de votre disque dur pour le menu de boot :-)
+Vérifiez quel driver grub utilise pour votre partition de boot, et l'id de la partition /boot au passage :
- blkid /dev/sda1 # Récupérez l'id de la partition de votre /boot
+ grep "hint" /boot/grub/grub.cfg
+ # search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1' xxxx-xxxx-xxxx-xxxx-xxxx
+ # Ici on veut récupérer l'info du --hint, ainsi que l'ID du disque xxxx-....
On va ensuite éditer grub pour ajouter une entrée spécifique pour booter sur l'installeur :
@@ -91,20 +93,21 @@ Et ajoutez après les commentaires le contenu suivant :
insmod gzio
insmod part_msdos
insmod ext2
- set root='hd0,msdos1'
+ set root='HINT'
if [ x$feature_platform_search_hint = xy ]; then
- search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1' ID_DISQUE
+ search --no-floppy --fs-uuid --set=root --hint='HINT' ID_DISQUE
else
search --no-floppy --fs-uuid --set=root ID_DISQUE
fi
- linux /boot/vmlinuz_ovz7 vnc vncpassword=guigui inst.vncpassword=guigui headless inst.repo=http://votredomaine.tld/vz/ ip=IP_SERVEUR netmask=MASQUE_SERVEUR gateway=PASSERELLE_SERVEUR dns=DNS_SERVEUR nameserver=DNS_SERVEUR biosdevname=0 net.ifnames=0 ksdevice= bootproto=static lang=en_US keymap=us text noipv6
- initrd /boot/initrd_ovz7.img
+ linux /vmlinuz_ovz7 vnc vncpassword=guigui inst.vncpassword=guigui headless inst.repo=https://votredomaine.tld/vz/ ip=IP_SERVEUR netmask=MASQUE_SERVEUR gateway=PASSERELLE_SERVEUR dns=DNS_SERVEUR nameserver=DNS_SERVEUR biosdevname=0 net.ifnames=0 ksdevice= bootproto=static lang=en_US keymap=us text noipv6
+ initrd /initrd_ovz7.img
}
Cette configuration va permettre de redémarrer le serveur sur une console VNC pour permettre d'installer openvz7 en mode graphique à distance :-)
Editez bien entendu les valeurs ci dessous :
* ID_DISQUE : l'id de la partition récupérée plus tôt
+ * HINT : le numéro de disque et la table de partition associé récupéré dans grub.cfg (ex : `hd0,msdos`, `hd1,gpt`, ...)
* IP_SERVEUR : l'adresse IP du serveur
* MASQUE_SERVEUR : le masque de sous réseau de votre serveur
* PASSERELLE_SERVEUR : la passerelle par défaut de votre serveur
@@ -120,16 +123,18 @@ Ainsi, si jamais il ne démarre pas ou que l'installation se passe mal (avant le
grub-reboot NetInstall
-On va maintenant pouvoir redémarrer et récupérez la console VNC.
+**Attention**, si votre serveur utilise une partition /boot sur un RAID soft, cette commande est durable. En cas de souci, il faudra passer par le rescue pour reconfigurer le démarrage sur le bon os.
+
+On va maintenant pouvoir redémarrer et récupérer la console VNC.
# Installation d'openvz 7 !
-Redémarrez votre serveur, et lancez un ping sur son adresse IP. Dès qu'il répond, lancez votre console VNC sur l'IP du serveur, avec le port 5900.
+Redémarrez votre serveur, et lancez un ping sur son adresse IP. Dès qu'il répond, lancez votre console VNC sur l'IP du serveur, avec le port `:5901` ou `:1`.
**Attention**, malgré pas mal de recherches et de tests, je n'ai pas réussi à monter une connexion chiffrée pour ce VNC... Sachez donc que tout ce que vous y entrerez sera potentiellement récupérable en clair sur Internet !
-Préparez vous donc à utiliser des mots de passe temporaires pour le chiffrement des disques et les accès utilisateurs. Nous les changerons dès l'installation terminé via une connexion SSH un peu plus robuste :-)
+Préparez vous donc à utiliser des mots de passe temporaires pour le chiffrement des disques et les accès utilisateurs. Nous les changerons dès l'installation terminée via une connexion SSH un peu plus robuste :-)
Vous avez accès à la console VNC en mode graphique, donc rien de très compliqué pour l'installation. La [documentation officielle](https://docs.openvz.org/openvz_installation_guide.webhelp/_installing_openvz_in_graphics_mode.html) est parfaite à ce niveau là.
-Normalement, la configuration réseau est déjà faite gace aux options de grub, doncrien à toucher.
+Normalement, la configuration réseau est déjà faite grâce aux options de grub, donc rien à toucher.
Le partitionnement des disques par défaut est en théorie suffisant, **mais** c'est le moment de penser à cocher "Encrypt" !
Vous devez cocher la case pour toutes les partitions sauf /boot et la petite partition "BIOS Boot".
@@ -139,14 +144,20 @@ Attention là encore à ne pas mettre le mot de passe final, car la connexion à
Laissez ensuite l'installation se terminer tranquillement, puis passez à la suite.
-# Serveur SSH et réseau au boot
+# SSH et réseau au démarrage
Pour cette partie, il va falloir redémarrer votre serveur en mode rescue de nouveau.
En effet, votre serveur est désormais installé, ses disques sont chiffrés, mais vous n'avez pour l'instant aucun moyen de taper le mot de passe demandé au boot pour déchiffrer les disques !
On va donc modifier directement le initramfs pour y intégrer un petit serveur SSH qui se lancera au boot, et qui permettra ainsi de taper le mot de passe au démarrage en toute sécurité.
-## SSH dans le initramfs
Une fois revenu en mode rescue, préparez vous à monter votre système en chroot. Je part ici du principe que vous avez gardé le partionnement par défaut, donc pensez à adapter le nom des partitions dans la suite si besoin.
-On va commencer par changer les mots de passe bidon des partitions.
+On va commencer par changer les mots de passe bidon des partitions maintenant que nous sommes sur une connexion ssh sécurisée.
+
+La manipulation change toutefois selon que vous ayez gardé du lvm monodisque, ou utilisé une configuration avec raid multidisque, choisissez celle quyi vous convient le mieux !
+
+## chroot avec lvm
+cliquez pour déplier
+On va activer les volumes lvm, changer les mots de passe luks, puis activer la partition root et la monter pour entrer en chroot.
vgchange -a y
cryptsetup luksChangeKey /dev/sda3 # On change le mot de passe du swap
@@ -161,6 +172,49 @@ On va commencer par changer les mots de passe bidon des partitions.
mount -o bind /proc/ /mount/openvz/proc/
chroot /mount/openvz
+cliquez pour déplier
+l'objectif est de signaler au système l'existence de volumes raid avec les bonnes partitions, changer les mots de passe luks, puis activer la partition root et la monter pour entrer en chroot.
+
+Pour commencer, récupérez les partitions qui correspondent entre-elles sur vos disques
+
+```
+fdisk -l /dev/sda
+
+
+
+
+fdisk -l /dev/sdb
+
+
+```
+
+Une fois cette correspondance faite, on va dire à mdadm d'activer les volumes raid.
+On prends ici l'exemple d'un raid1 avec 2 disques, dans le cas de raid5, ou 6, ajoutez les partitions nécessaires.
+
+```
+# Modifiez bien sur vos partitions si nécessaire !
+mdadm -A -R /dev/md1 /dev/sda3 /dev/sdb1
+mdadm -A -R /dev/md2 /dev/sda4 /dev/sdb2
+mdadm -A -R /dev/md3 /dev/sda5 /dev/sdb3
+cryptsetup luksChangeKey /dev/md1
+cryptsetup luksChangeKey /dev/md2
+cryptsetup luksChangeKey /dev/md3
+cryptsetup luksOpen /dev/md2 crypt_root
+mkdir -p /mount/openvz
+mount /dev/mapper/crypt_root /mount/openvz
+mount /dev/sda2 /mount/openvz/boot
+mount -o bind /dev/ /mount/openvz/dev/
+mount -o bind /sys/ /mount/openvz/sys
+mount -o bind /proc/ /mount/openvz/proc/
+chroot /mount/openvz
+```
+
+Cliquez pour sortir du chroot avec lvm
+```
+exit
+umount /mount/openvz/dev
+umount /mount/openvz/sys
+umount /mount/openvz/proc
+umount /mount/openvz/boot
+umount /mount/openvz
+cryptsetup luksClose crypt_root
+vgchange -a n
+```
+
+Cliquez pour sortir du chroot avec raid
+```
+exit
+umount /mount/openvz/dev
+umount /mount/openvz/sys
+umount /mount/openvz/proc
+umount /mount/openvz/boot
+umount /mount/openvz
+cryptsetup luksClose crypt_root
+mdadm -S /dev/md3
+mdadm -S /dev/md2
+mdadm -S /dev/md1
+```
+