Lorsque la machine virtuelle est crée, sous proxmox
Dans la section Hardware de la machine virtuelle
Supprimer le Hard Disk (scsi0)
Créer un nouveau Hard Disk vierge de la même taille
Ajoutez un CD/DVD Drive comprenant l’ISO de la configuration demandé
Puis suivre le reste des instructions de création de l’utilisateur
Et lui laisser la main, via son utilisateur proxmox, pour la configuration initiale de sa machine virtuelle
Mes questions :
Est-ce que ça va casser une configuration réseau particulière qui a été installé sur le système d’origine de la machine virtuelle ?
Les utilisateurs de VPS font parti d’un groupe vps_owners avec les droits PVEVMUser, ils devraient donc avoir le droit d’utiliser la console (VM.Console) ?
Que se passe-t-il si je génère une machine virtuelle avec la commande standard de Proxmox en utilisant les mêmes paramètres que notre script ?
En fait, actuellement je me base sur la config ip de cloud init pour définir les routes sur l’hôte, donc si il y a pas de config cloudinit (activée ou non), il n’y aura pas de routes.
Néanmoins, va falloir faire évoluer ça car il me semble que les utilisateurs du group vps_owners peuvent modifier la config cloudinit (et donc voler une ip).
#!/bin/bash
# Ce script permet de configurer le réseau en utilisant la technique des ips de liens local
# que nous utilisions dans notre ancien cluster ganeti.
# L'avantage c'est qu'il permet de s'assurer qu'il ne sera pas possible de voler une ip
# en modifiant uniquement la config réseau interne de la VM.
LOGFILE=/var/log/arn/network.log
vmid=$1
vmphase=$2
log_with_timestamp() {
sed -e "s/^/[$(date +"%Y-%m-%d_%H:%M:%S")] /" | tee -a $LOGFILE
}
mkdir -p /var/log/arn
if [ "$vmphase" == "post-start" ]
then
if [ -f /etc/pve/qemu-server/${vmid}.conf ]
then
interface=fwbr${vmid}i0
echo "$vmid $vmphase: routing specific ips for this vm on $interface" | log_with_timestamp
ipconfig=$(grep ipconfig0 /etc/pve/qemu-server/${vmid}.conf)
# IPv4
gw=$(echo $ipconfig | grep -Eoh "gw=[^,]+" | sed "s/^gw=//")/24
[ "$gw" == "" ] || ip addr add $gw dev "$interface"
ip=$(echo $ipconfig | grep -Eoh "ip=[^,]+" | sed "s/^ip=//")
[ "$ip" == "" ] || ip r a $ip dev "$interface"
# On ajoute le range des IP wireguard à la VM arn-wireguard
[ "$vmid" == "100" ] && ip r a 89.234.141.192/27 via "${ip%/32}" dev "$interface"
# IPv6
echo 0 > /proc/sys/net/ipv6/conf/$interface/disable_ipv6
gw6=$(echo $ipconfig | grep -Eoh "gw6=[^,]+" | sed "s/^gw6=//")/64
[ "$gw6" == "" ] || ip addr add $gw6 dev "$interface"
ip6=$(echo $ipconfig | grep -Eoh "ip6=[^,]+" | sed "s/^ip6=//")
[ "$ip6" == "" ] || ip -6 r a $ip6 dev "$interface"
fi
fi
Oui
Si tu lances chaque action du script (dans la partie create) en remplaçant les variables, ben tu obtiens la même chose.
Je n’ai pas compris ta réponse @ljf , est-ce que les paramètres de cloud-init s’intègrent au système ?
Si je reprends la commande de notre documentation manage-vps mais en enlevant le paramètre --suite pour mettre un lecteur CD virtuel avec un .iso, ça reviendrait au même.