Table des matières
Virtualisation à FedeRez
Besoin
De nombreuses petites associations de FedeRez ont emis le souhait de pouvoir disposer d'une machine distante pour divers besoin : de la redondance (dns…), externaliser des services critiques (sites web, etc) ou pour du backup léger.
Certaines associations ne disposent notamment que de quelques IP, voudraient pouvoir disposer de VM avec une ip publique.
Le Cr@ns a cédé un de ses anciens virtualiseurs à FedeRez dans le but de répondre à cette demande. (kdell)
Viarezo également (ronderu).
L'interface web de proxmox se trouve aux adresses suivantes :
https://kdell.crans.org:8006
https://ronderu.federez.net:8006
Solution de virtualisation
La solution choisie est debian proxmox pve. Celui-ci a l'avantage de proposer une interface web “à la ovh” qui permettrait à une association de manager à distance sa ou ses vm sans intervention des responsables techniques de FedeRez. Il a aussi l'avantage de proposer en parallèle des kvm et des lxc, bref, il y en a pour tous les gouts.
Installation du virtualiseur
L'exemple pris ici fut l'installation de kdell.
Installer debian et proxmox
D'abord on procède à l'installation de debian sur kdell.
A noter ici, on a choisi de donner 40 Go pour le / de kdell, 10 Go pour le var, le home et 20Go pour la swap.
Avec le reste (1,8 To) on fait une partition data, qui se l'espace de stockage de proxmox.
On ajoute l'essentiel pour FedeRez (l'auth ldap etc)
Ensuite, on passe à l'installation de proxmox en suivant ce tuto : https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Jessie
Rien de bien difficile; ne pas sauter les étapes. Proxmox a besoin de l'ip hardcodée dans /etc/hosts pour s'installer.
L'installation consiste simplement à créer un fichier proxmox.list dans sources.list.d contenant :
deb http://download.proxmox.com/debian jessie pve-no-subscription
Ensuite on lance
apt-get update && apt-get dist-upgrade apt-get install proxmox-ve ntp ssh postfix ksm-control-daemon open-iscsi systemd-sysv
Et on reboot
Configurer l'interface réseau
Il est nécessaire de créer un bridge, dans lequel les vm parleront. Tout est en non tagué ici (vlan des machines filaires adhérents du Cr@ns), donc pas de piège.
Par conséquent, on écrit ceci dans /etc/network/interfaces :
auto vmbr0 iface vmbr0 inet static address 138.231.139.230 # ip de kdell network 138.231.136.0 # subnet filaire du Crans, /21 netmask 255.255.248.0 broadcast 138.231.143.255 mtu 1496 # attention , essentiel au Crans gateway 138.231.136.4 # odlyd, routeur de sortie du Crans dns-search crans.org dns-nameservers 138.231.136.98 138.231.136.152 bridge_ports eth0 bridge_stp off bridge_fd 0 iface vmbr0 inet6 static address 2a01:240:fe3d:4:d267:e5ff:fee9:b10f netmask 64 gateway fe80::1
Finitions
Ensuite on passe sur l'interface web : https://kdell.crans.org:8006
(il est important de mettre https; proxmox de redirige pas)
Pour l'espace de stockage, on a laissé 1,8To non alloués dans le vg kdell :
kdell# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert home kdell -wi-ao---- 13,97g slash kdell -wi-ao---- 37,25g swap kdell -wi-ao---- 29,80g var kdell -wi-ao---- 13,97g
On va donc dire à proxmox de les utiliser pour créer les lvm.
C'est possible de le faire par l'interface web, plus rapide à la main.
Il suffit d'editer le fichier /etc/pve/storage.conf et de rajouter :
lvm: FedeRez vgname kdell shared content images
Le volume kdell apparait normalement sur l'interface proxmox.
Le datacenter est maintenant prêt pour les VM.
Configuration de needrestart
Par défaut, needrestart propose de redémarrer pve-manager (ce qui redémarre tous les conteneurs et machines virtuelles) et lxcfs (ce qui semble une mauvaise chose, cf https://github.com/liske/needrestart/issues/35). Pour que ces services soient décochés par défaut (faute de pouvoir les enlever de la liste), on ajoute deux lignes à /etc/needrestart/needrestart.conf
pour avoir le bloc suivant :
- /etc/needrestart/needrestart.conf
$nrconf{override_rc} = { … q(^pve-manager) => 0, q(^lxcfs) => 0, }
Créer une VM
Pour créer une vm, on a deux solutions.
Solution 1 : CLI (non recommandé)
L'exemple pris ici est sur kdell, il sera nécessaire d'adapter quelques données pour le faire sur ronderu.
On peut le faire uniquement en CLI pour les plus courageux. Cela consiste à editer des templates dans /etc/pve/qemu-server. Puis à créer les partitions dans le stockage virtuel qu'on fait, puis debootstraper.
Je renvoie ici à la doc du Crans qui détaille cette solution : https://wiki.crans.org/CransTechnique/Virtualisation/CreerUneVM
En gros, il faut créer un lvm (ex : lvcreate -n vm-100-disk-1 -L 10G kdell) dans le vg kdell, ou le vg ronderu.
Ensuite, on écrit un fichier de template de vm (ex de fichier)
kdell# cat 100.conf balloon: 256 bootdisk: virtio0 cores: 1 ide2: none,media=cdrom memory: 512 keyboard: fr name: Federez-test net0: e1000=02:67:E5:E9:00:01,bridge=vmbr0 numa: 0 ostype: l26 smbios1: uuid=36bd06a2-6cbd-458d-92d0-a09712786b6d sockets: 1 virtio0: FedeRez:vm-100-disk-1,size=15G
Enfin, on passe à l'étape 2 de la solution 2 pour installer debian dessus.
Solution 2 : avec l'interface web proxmox
Je détaillerai ici la solution du pauvre qui consiste à utiliser l'interface web. Elle est bien foutue, et elle va éditer les mêmes fichiers que si on le faisait en CLI, à 2-3 exceptions que je détaillerai.
Cette solution n'est pas unique évidemment.
Etape 1 : Créer la vm dans proxmox
Aller sur créer une vm. Noeud : kdell, son nom à choisir. Id de vm, laissez faire proxmox.
Ensuite, ne pas utiliser de media iso, sauf si vous en avez une évidemment.
Attribution des ressources
Ensuite pour le storage : donner l'espace que vous voulez, sans être ni radin, ni gaspiller l'espace. (10 Go pour une petite VM, 20-50 pour une moyenne ou grosse)
/!\ Vérifiez que storage est bien FedeRez (/data) et non local.
Mettez le bus sur VirtiO et non ide. (sauf si vous voulez vraiment ide)
En nombre de coeurs, oubliez pas que kdell n'en a que 8. Soyez économes, surtout si la VM n'en a pas besoin.
En ram, 512, ou 1 giga si la vm en a besoin, 2 si elle en a vraiment besoin, pour plus à discuter.
Dans network, normalemnt proxmox propose le bridge vmbr0.
Choix de la mac
Sur kdell
Pour choisir la mac, j'ai pris la convention suivante :
Elle commence par 02 (mac virtuelle), puis les bits suivant sont les mêmes que la mac de kdell.
Enfin, l'avant dernier octet est à 0 si vm/container FedeRez et à 1 si c'est une asso. Le dernier octets est le numéro de VM FedeRez.
Exemple pour la première VM que j'ai crée : 02:67:E5:E9:00:01
/!\ Merci de respecter la convention !
Il faut ensuite donner la mac à un admin du Crans pour qu'il l'enregistre sur le compte de FedeRez du Crans.
Si on ne veut pas d'IPv4, il faut choisir « statique » pour le type d'IPv4 mais laisser les champs IP/CIDR eet passerelle vides…
Sur ronderu
Aucune convention de mac n'a été choisir.
Pour l'ipv4, en prendre une de libre dans le range 138.195.137.220 - 138.195.137.255 .
On confirme et on passe à l'étape 2
Etape 2 : installer debian
Normalement ici, la VM apparaît comme éteinte dans le dc sur l'interface web.
Attention piège, il faut modifier /etc/pve/qemu-server et le bon numéro de vm (ex : 100.conf) et rajouter dans le fichier :
keyboard: fr
La technique consiste ici à lancer le boot réseau, et à lancer le pxe du Crans pour faire une install par le réseau.
Pour cela; aller dans options sur la vm depuis l'interface proxmox, boot order, et mettre réseau en premier.
Ne pas oublier de faire l'opération inverse une fois l'install terminée évidemment.
Puis démarrer la vm, ouvrir une console, et installer debian
Etape 3 : fin d'installation
On éteint la VM, on change le boot order, et voilà !
Fin d'installation pour une vm FedeRez
Si il s'agit d'une machine FedeRez, il faut y mettre l'authentification ldap avec Nss, donc installer nslcd et le configurer correctement.
Ensuite, ne pas oublier Munin, en ouvrant le port 4949 de la machine, et en autorisant hexagon à parler au node, tout en disant à hexagon que le node existe.
Enfin ne pas oublier monit : monit et fail2ban pour faire plaisir à David_5-1 .
Management de vm pour les assos
Ca se passe sur l'interface proxmox :
https://kdell.crans.org:8006
https://ronderu.federez.net:8006
On crée un utilisateur et un groupe de l'association correspondante, et on lui donne le droit PVEVMUSER (allumer, éteindre la vm, ouvrir une console dessus)