Vie de l'asso
Outils de travail
Bureau
Communication
Adminsys
Réseau
Services
ADSL/VDSL
WiFi
- Réseaux
- Prodécures / Checklist
- Fiches pratiques
- Référence
VPN
- Configuration du client
Notre infrastructure de VM est basée sur Ganeti, c'est un outil de gestion de machines virtuelles qui sont réunies au sein d'un cluster (une ou plusieurs machines physiques).
Le cluster Ganeti est composé de noeuds (ce sont des ordinateurs physiques avec un hyperviseur (Xen ou Kvm) installé dessus). Les VM sont créées sur le cluster. Une VM tourne sur un des noeuds du cluster.
Il est possible de déplacer une VM d'un noeud du cluster à un autre tout en la laissant tourner.
Dans un cluster, un noeud est élu Master. Lorsque l'on doit discuter avec le cluster, il faut se connecter à la machine maître, pour le moment il s'agit de Mutine. Ce master est l'unique noeud sur lequel des commandes gnt-* peuvent être exécutées. Si on utilise ces commandes sur les autres noeuds, Ganeti nous invite à nous connecter sur le master :)
____ |====| | | 89.234.176.129/28 __mutine__ __fresk___ vm | |<-----------------------[_...__...°]<-----------------------[_...__...°] 89.234.176.6/28 |____| /89.234.176.2/28 10.10.30.0/32 | ____ / | |====| / | | | 89.234.176.13O/28 / | vm | |<-------------------/ | |____| | ____ | service vm : 89.234.176.128/27 |====| 89.234.176.131/28 ____dh____ 10.10.30.0/32 __camber__ | |<-----------------------[_...__...°]<-----------------------[_...__...°] 89.234.176.7/28 vm | | /89.234.176.3/28 |____| / ____ / |====| / | | 89.234.176.132/28 / vm | |<------------------/ |____|
Techniquement oui. En pratique, les machines physiques actuelles sont
déjà presque remplies. Pour avoir plus de RAM, venez nous aider à
monter la nouvelle infrastructure de virtualisation
Oui. Il est également possible d'agrandir le disque de votre VM une fois que celle-ci est installée.
Techniquement oui. En pratique, les machines physiques actuelles sont
déjà presque remplies. Pour avoir plus de CPU, venez nous aider à
monter la nouvelle infrastructure de virtualisation
À la création, votre VM démarrera sur l'iso de votre choix (par défaut sur une debian stretch). C'est vous qui réalisez l'installation du début à la fin. Vous décidez donc de chiffrer ou non votre VM.
Chiffrer sa VM est une option proposée lors de la procédure d’installation. Des informations utiles à cette opération sont également disponibles ici :https://wiki.faimaison.net/doku.php?id=debian-fde-dropbear
Oui. Votre VM démarrera sur l'iso de votre choix (par défaut sur une debian stretch).
Dans le cas où vous souhaiteriez installer une autre ISO que celle par défaut, c’est à vous de spécifier, et idéalement de fournir, à l’administrateur l’ISO choisie pendant la phase de demande de création de VM (voir ci-dessous).
Voici les ISO présentes actuellement :
$ ls /srv/ganeti/isos/ debian-8.3.0-amd64-netinst.iso # debian jessie debian-9.0.0-amd64-netinst.iso # debian stretch install60.iso # OpenBSD 6.0 yunohost-live_wheezy.iso # YUNOHOST wheezy
Dans le cas où vous souhaiteriez installer une autre ISO que celle par défaut, c’est à vous de spécifier, et idéalement de fournir, à l’administrateur l’ISO choisie pendant la phase de demande de création de VM (voir ci-dessous).
Les étapes qui suivent sont à réaliser par l'utilisateur qui fait la demande de création d'une machine virtuelle (VM).
Vous commencez par envoyer une demande de création de VM sur bureau@ en joignant une clé SSH publique (cf accès SSH à votre vm pour la création d'une clé SSH).
Si vous êtes bien adhérent le bureau@ transmettra votre demande aux administrateurs de FAImaison. Un administrateur vous communiquera les informations suivantes :
REF_ABO
la référence de votre abonnement (p. ex REF-HOST-VM-42
)IP_VM
: l'adresse IP de votre VM (p. ex 89.234.176.130
)NOM_VM
: le nom de votre VM (p. ex. REF-HOST-VM-42.faimaison.net
)HYP
: le nom ou l'adresse IP de l'hyperviseur de votre VM (p. ex 89.234.176.131
ou mutine.faimaison.net
)VNC_PORT
:: le port VNC de votre VM (p. ex 11666
)Une fois ces informations reçues, vous êtes prêt à installer votre VM.
Pour accéder à votre VM, vous devez établir un pont SSH entre votre ordinateur et votre VM puis utiliser le protocole VNC.
HYP
, NOM_VM
et VNC_PORT
par les valeurs transmises par l'adminsys ssh -i /chemin-vers-votre-cle-privee -N -L VNC_PORT:localhost:VNC_PORT NOM_VM@HYP
Attention, au sein de la commande précédente, NOM_VM
serait par exemple ref-host-vm-42
localhost
et en port VNC_PORT
.Si tout se passe bien, vous devriez maintenant voir l'écran d'installation de votre VM (une debian).
Vous pouvez maintenant procéder à l'installation de votre VM. Le client Vinagre , inclus sur Debian et Ubuntu fonctionne très bien (merci de nous signaler si vous connaissez des cliens Windows ou Mac fonctionnels). Petites astuces :
Alt Gr
ne fonctionnera peut-être pas. En attendant mieux…
Maintenant que votre VM est correctement installée, vous devez envoyer un mail à adminsys@
en précisant votre REF_ABO
pour demander à ce que l'on configure votre VM pour qu'elle démarre sur votre disque au lieu de l'ISO d'installation.
Une fois que l'adminsys a configuré votre VM pour qu'elle boot sur votre disque et l'a redémarrée, vous pouvez vous y connecter de la même façon que pour l'installation (via ssh+VNC).
Comme ce n'est pas très pratique de se connecter par VNC en permanence, nous allons maintenant configurer votre VM pour que vous puissiez y accéder par SSH uniquement.
openssh-server
sur votre VM.ssh-keygen -f ~/.ssh/votre_cle_ssh
ssh-copy-id -i ~/.ssh/votre_cle_ssh.pub REF_ABO@IP_VM
ssh -i ~/.ssh/votre_cle_ssh REF_ABO@IP_VM
Si la connexion fonctionne correctement vous pouvez rajouter la configuration suivante au fichier ~/.ssh/config
(s'il n'existe pas, crée le).
Host ma-vm Hostname IP_VM Username REF_ABO Port 22 IdentifyFile ~/.ssh/votre_cle_ssh
Les étapes suivantes sont optionnelles mais sont des mesures de sécurité recommandées :
Sur votre VM, éditez le fichier /etc/ssh/sshd_config
(vous devez être root
), chercher les options PasswordAuthentication
et PermitEmptyPasswords
et les désactiver.
Le fichier doit maintenant contenir les lignes suivantes :
PasswordAuthentication no PermitEmptyPasswords no
Installer fail2ban
pour bloquer des attaques de type bruteforce.
apt install fail2ban
Et voilà, vous pouvez maintenant accéder à votre VM en SSH et n'avez plus besoin de l'accès par VNC. Cet accès reste présent et vous pourrez l'utiliser pour débugger votre machine si vous cassez quelque chose :)
Cette section ne concerne que les membres du bureau
Lorsqu'une demande de VM arrive sur la liste bureau@ il faut :
Quand le bureau@ transmet une demande de création de VM avec les informations suivantes :
REF_ABO
pour la suite)
NB: Toutes les commandes ganeti sont a exécutées sur l'hyperviseur maître (mutine.faimaison.net
).
IP_VM
pour la suite) de disponible dans le sous-réseau dédié aux VM et mettre à jour la page du wiki adressageREF_ABO.faimaison.net A IP
gnt-instance list --no-headers | sort -k 4
Créer la VM sur l'hyperviseur choisi (PRIMARY_NODE
pour la suite, l'autre hyperviseur étant SECONDARY_NODE
)
gnt-instance add -s 10G --net 0:ip=IP_VM,mode=routed,mac=generate -o debootstrap+default --node PRIMARY_NODE:SECONDARY_NODE REF_ABO.faimaison.net
VNC_PORT
pour la suite) de la VM : gnt-instance list -o +network_port REF_ABO
adduser --gecos '' --gid `getent group ref-host-vm | cut -d: -f3` --disabled-password --shell /bin/false REF_ABO
Match User REF_ABO Banner /home/REF_ABO/banner PermitOpen localhost:VNC_PORT Match all # end Match group block
/home/REF_ABO/.ssh/authorized_keys
/home/REF_ABO/banner
contenant :Hyperviseur hébergeant votre VM : PRIMARY_NODE Port VNC pour accéder à votre VM : VNC_PORT Utilisez la commande suivante pour créer un tunnel entre votre ordinateur et le port VNC de votre VM avec la commande : ssh -N -L VNC_PORT:localhost:VNC_PORT PRIMARY_NODE Configurez votre client VNC pour qu'il se connecte sur l'hôte (/host/) localhost et sur le port VNC_PORT. Par exemple : vncviewer localhost:VNC_PORT
sshd -t && systemctl reload ssh
Prévenir l'adhérent que la VM est prête à être installée et lui donner les informations suivantes :
PRIMARY_NODE
: l'hyerviseur sur lequel tourne sa VMVNC_PORT
: le port VNC pour accéder à sa VMIP_VM
: l'IP de sa VMREF_ABO.faimaison.net
: l'enregistrement DNS FAImaison de sa VMQuand l'adhérent aura terminé son installation, il faudra redémarrer sa VM en changeant l'ordre de boot pour qu'elle boot sur le disque plutôt que l'ISO.
gnt-instance shutdown REF-ABO
gnt-instance modify -H boot_order=disk REF_ABO
gnt-instance startup REF_ABO
La migration d'une VM d'un hyperviseur à l'autre se fait de la façon suivante :
NEW_NODE
) : gnt-instance migrate -n NEW_NODE
REF-HOST-VM-XX
, il faut mettre à jour le PRIMARY_NODE
dans /home/ref-host-vm-xx/banner
.Pour configurer les hyperviseurs :
ref-host-vm
: addgroup ref-host-vm
/etc/ssh/sshd_config
:Match group ref-host-vm AllowAgentForwarding no AllowStreamLocalForwarding no X11Forwarding no PermitTTY no PermitTunnel no PermitUserRC no PermitOpen none Match all # end Match group block
La procédure est la suivante :
reboot
depuis l'hyperviseur pour que la configuration soit prise en compte).
La syntaxe générale de grow-dist
est la suivante :
gnt-instance grow-disk {instance} {disk} {amount}
{instance}
est le nom de l'instance (p. ex. testvm.faimaison.net
){disk}
est l'identifiant du disque (0, sauf exception){amount}
est le montant dont doit être augmenter le disque (p. ex. 10G)
On peut donc utiliser la commande suivante pour augmenter le disque de la VM testvm.faimaison.net
de 10G.
gnt-instance grow-disk testvm.faimaison.net 0 10G
Une fois le disque de la VM agrandi et la VM redémarrée depuis l'hyperviseur, la procédure pour agrandir une partition est la suivante :
cryptsetup resize
.pvresize
puis redimensionner le volume logique avec lvextend
.resize2fs
ou en spécifiant l'option –resizefs
à lvextend
.mkswap
.Pour en savoir plus base lvm :
Nous utilisons ganeti sur deux machines (les noeuds). Les VM utilisent comme disque des volumes logiques LVM créés sur le disque des hyperviseurs. Ces volumes logiques sont synchroniser entre les deux noeuds par DRBD.
Le noeud ganeti sur lequel tourne une VM (mutine ou dramm-hud) est considéré comme le noeud primaire pour DRBD. Cela est différent du noeud ganeti maître qui est le noeud sur lequel les commandes ganeti doivent être exécutées.
Il est possible de créer un snapshot LVM du disque d'une VM sur le noeud DRBD primaire. Ce snapshot ne sera pas synchronisé par DRBD.
Les commandes ganeti (gnt-*
) doivent être exécutée sur le noeud ganeti maître.
Les commandes LVM (lv*
) doivent être exécutée sur le noeud DRBD primaire.
gnt-instance info VM | grep _data -> /dev/xenvg/VM_DISK_data
gnt-instance shutdown VM
lvcreate -L SIZE -s -n VM_snapshot /dev/xenvg/VM_DISK_data
(p. ex. SIZE = 1G)
lvremove /dev/xenvg/VM_snapshot
Dans le cas où un problème s'est produit, on peut restaurer le snapshot.
gnt-instance shutdown VM
lvchange -an /dev/xenvg/VM_DISK_data lvconvert --merge /dev/xenvg/VM_snapshot lvchange -ay /dev/xenvg/VM_DISK_data
gnt-instance start VM