143 lines
5.7 KiB
Markdown
143 lines
5.7 KiB
Markdown
|
Introduction
|
||
|
============
|
||
|
|
||
|
Comme beaucoup d'infrastructures d'hébergement, Libre en Communs à mis
|
||
|
en pratique les politiques suivantes:
|
||
|
|
||
|
- Elle réduisent la surface d'attaque de l'hôte faisant tourner les
|
||
|
machines virtuelles en faisant en sorte que le minimum
|
||
|
d'applications ou de services y soient installés.
|
||
|
|
||
|
- Elle ne laisse pas l'accès root à tout le monde.
|
||
|
|
||
|
- Elles permettent à beaucoup de monde d'avoir accès à des machines
|
||
|
virtuelles.
|
||
|
|
||
|
Le fait que ce soit pertinent ou pas dépend de la situation et des
|
||
|
buts des projets qui utilisent l'infrastructure. Il y'a pas mal de
|
||
|
manières différentes de faire et chacunes ont leurs avantages et
|
||
|
désavantages.
|
||
|
|
||
|
Un des désavantages avec cette approche est qu'on ne peut pas
|
||
|
facilement installer une distribution non supportée par
|
||
|
l'infrastructure, ou installer une distribution existante d'une façon
|
||
|
non supportée par l'infrastructure.
|
||
|
|
||
|
Par exemple si on à du code pour créer une image Trisquel avec
|
||
|
debootstrap, ou une image Guix avec Guix, il va falloir le faire
|
||
|
tourner dans une machine virtuelle.
|
||
|
|
||
|
Ce document va regarder différentes approches pour contourner ce
|
||
|
problème.
|
||
|
|
||
|
Roles et permissions
|
||
|
====================
|
||
|
|
||
|
L'infrastructure utilise libvirt, notamment libvirt QEMU. LXC est
|
||
|
aussi présent mais pas utilisé.
|
||
|
|
||
|
Certaines personnes on un accès root aux machines physiques et peuvent
|
||
|
tout faire.
|
||
|
|
||
|
D'autres ont un shell (sans accès root) et un accès direct à libvirt
|
||
|
par SSH. Pour l'instant l'accès shell permet aussi d'utiliser virsh,
|
||
|
mais ce ne sera plus le cas dans le futur.
|
||
|
|
||
|
D'autres personnes ont seulement un accès SSH dans une ou plusieurs
|
||
|
machines virtuelles.
|
||
|
|
||
|
Outils disponibles
|
||
|
==================
|
||
|
|
||
|
On à une machine virtuelle Trisquel generic_trisquel.a-lec.org qui
|
||
|
peut facilement être clonée par une personne avec un accès
|
||
|
libvirt. Une fois clonée et l'accès SSH activé, on à 50GiB d'espace
|
||
|
dedans.
|
||
|
|
||
|
Les personnes qui ont un accès libvirt ne doivent pas créer des VM
|
||
|
avec une carte graphique pour des VM qui vont tourner en production
|
||
|
car ça donne accès à la VM à n'importe quelle personne qui à un shell
|
||
|
sur la machine physique[1].
|
||
|
|
||
|
Vu que l'accès shell ne va plus impliquer l'accès à libvirt dans le
|
||
|
futur, et que ne pas avoir de carte graphique virtuelle protège aussi
|
||
|
de l'accès par du code qui tourne sur d'autres comptes n'ayant pas
|
||
|
accès à libvirt, il vaux mieux utiliser le port série.
|
||
|
|
||
|
Utiliser la VM generic_trisquel.a-lec.org
|
||
|
=========================================
|
||
|
|
||
|
Si on à un accès à libvirt on peut se loguer dedans avec
|
||
|
l'utilisateurice admin666 et 'sudo su' marche sans mot de passe. Pour
|
||
|
ça faut utiliser le port série. A noter que c'est aussi disponible (et
|
||
|
bien plus fiable) si on passe par SSH et un shell sur la machine avec
|
||
|
la commande suivante:
|
||
|
|
||
|
virsh -c qemu:///system console generic_trisquel.a-lec.org
|
||
|
|
||
|
Commandes virsh intéressantes
|
||
|
=============================
|
||
|
|
||
|
Si on à un accès à libvirt on peut cloner une machine virtuelle avec
|
||
|
virt-manager, ou cloner des disques virtuels en ligne de commande avec
|
||
|
la command vol-clone de virsh. Par contre j'ai pas trouvé comment
|
||
|
renomer un disque virtuel. Il faut donc le copier et le déléter
|
||
|
après. A noter que les copies peuvent mettre un certain temps (~ 10
|
||
|
minutes pour 50 GiB).
|
||
|
|
||
|
On peut aussi augmenter la taille du disque virtuel d'une VM éteinte
|
||
|
avec la commande vol-resize de virsh et d'une VM allumée avec la
|
||
|
commande blockresize de virsh.
|
||
|
|
||
|
Utiliser un iso netinstall avec un port série.
|
||
|
==============================================
|
||
|
|
||
|
Pas mal de medias d'installeurs n'activent pas le port série par
|
||
|
défaut, sinon ça risquerait de casser certaines tablettes brailles
|
||
|
très chères (ça l'a fait par le passé).
|
||
|
|
||
|
Et taper des commandes à l'aveugle dans virt-manager ne marche pas
|
||
|
quand la carte graphique virtuelle est désactivée, du coup on doit
|
||
|
utiliser un script à la place.
|
||
|
|
||
|
Voici un script qui active le port série sur une netinstall Trisquel
|
||
|
11.0 pour x86_64:
|
||
|
#!/bin/sh
|
||
|
# Copyright (C) 2023 Denis 'GNUtoo' Carikli
|
||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
virsh -c qemu:///system send-key trisquel-installer 15 # TAB
|
||
|
virsh -c qemu:///system send-key trisquel-installer 46 # C
|
||
|
virsh -c qemu:///system send-key trisquel-installer 24 # O
|
||
|
virsh -c qemu:///system send-key trisquel-installer 49 # N
|
||
|
virsh -c qemu:///system send-key trisquel-installer 31 # S
|
||
|
virsh -c qemu:///system send-key trisquel-installer 24 # O
|
||
|
virsh -c qemu:///system send-key trisquel-installer 38 # L
|
||
|
virsh -c qemu:///system send-key trisquel-installer 18 # E
|
||
|
virsh -c qemu:///system send-key trisquel-installer 13 # =
|
||
|
virsh -c qemu:///system send-key trisquel-installer 20 # T
|
||
|
virsh -c qemu:///system send-key trisquel-installer 20 # T
|
||
|
virsh -c qemu:///system send-key trisquel-installer 21 # Y
|
||
|
virsh -c qemu:///system send-key trisquel-installer 58 # CAPSLOCK
|
||
|
virsh -c qemu:///system send-key trisquel-installer 31 # S
|
||
|
virsh -c qemu:///system send-key trisquel-installer 11 # 0
|
||
|
virsh -c qemu:///system send-key trisquel-installer 28 # ENTER
|
||
|
|
||
|
Il faut attendre à peu près une seconde et lancer le
|
||
|
script. Trisquel-installer est le nom de la VM dans libvirt sur mes
|
||
|
machines, donc il faut ajuster ça.
|
||
|
|
||
|
Autres distributions
|
||
|
====================
|
||
|
Trisquel à des paquets pour debootstrap et guix. L'article
|
||
|
CrossDistroBootstrap[2] permet de savoir quelles distributions peuvent
|
||
|
être installées avec ça. Pour que ça marche il faut aussi attacher un
|
||
|
second disque virtuel à la machine virtuelle car dans
|
||
|
generic_trisquel.a-lec.org la partition principale prend tout l'espace
|
||
|
du disque.
|
||
|
|
||
|
Références
|
||
|
==========
|
||
|
[1]https://github.com/virt-manager/virt-manager/issues/343
|
||
|
[2]https://libreplanet.org/wiki/Group:Software/FSDG_distributions/CrossDistroBootstrap
|
||
|
|