Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sysadmin:tips:libvirt [2012/08/29 16:36]
james ajout static dhcp + DNS
sysadmin:tips:libvirt [2021/04/07 17:00] (Version actuelle)
james [Utiliser les commandes virsh en tant qu'utilisateur]
Ligne 1: Ligne 1:
 +{{tag>​virtualisation libvirt clavier keymap azerty vnc boot PXE reseau VM dnsmasq adresse ip statique dhcp images qcow raw iso}}
 +
 ====== Libvirt ====== ====== Libvirt ======
 +
 +===== Changer l'​emplacement des images disques et images ISO =====
 +
 +Par défaut (en tout cas sous ubuntu ;p) les images disque sont sensées être stockées dans le répertoire "/​var/​lib/​libvirt/​images/"​ ce qui est à mon sens tout sauf pratique si vous faites partie des gens qui soit n'​allouent pas une partition / de quelques centaines de Go ou encore qui souhaitent utiliser juste un sous répertoire d'une partition deja montée ailleurs.
 +
 +On peut s'en assurer avec un <​code>​virsh pool-dumpxml default </​code>​
 +
 +Pour changer le répertoire par défaut des nouvelles images disque, lancer un shell virsh et utiliser les commandes suivantes, par exemple pour utiliser le répertoire /​mnt/​monGrosTas/​VMs_KVM :<​code>​
 +virsh # pool-destroy default
 +virsh # pool-undefine default
 +virsh # pool-define-as --name default --type dir --target /​mnt/​monGrosTas/​VMs_KVM
 +virsh # pool-autostart default
 +virsh # pool-start default</​code>​
 +
 +Pendant qu'on est la dedans il peut être judicieux de définir un "​pool"​ contenant les images ISO d'​installateurs pour faciliter la creation de VMs depuis "​virt-manager"​ :<​code>​
 +virsh # pool-define-as --name local-iso --type dir --target /​mnt/​monGrosTas/​ISOs
 +virsh # pool-autostart local-iso
 +virsh # pool-start local-iso</​code>​
 +
 +On peut aussi définir un pool accédé directement en NFS (libvirt se chargera tout seul de faire le montage), comme par exemple :
 +  * Créer un fichier /​tmp/​iso.xml avec le contenu suivant : <​code>​
 +<pool type='​netfs'>​
 +  <​name>​isos</​name>​
 +  <​source>​
 +    <host name="​nfs.mondomaine.com"/>​
 +    <dir path="/​srv/​iso"/>​
 +    <format type='​nfs'/>​
 +  </​source>​
 +  <​target>​
 +    <​path>/​srv/​iso</​path>​
 +  </​target>​
 +</​pool></​code>​
 +  * Définir le storage-pool associé : <​code>#​ virsh pool-define /​tmp/​iso.xml</​code>​
 +  * Démarrer le pool : <​code>#​ virsh pool-start isos</​code>​
 +  * Et lui dire de le redémarrer automatiquement : <​code>#​ virsh pool-autostart isos</​code>​
  
 ===== Avoir un clavier francais en accédant à une VM en VNC ===== ===== Avoir un clavier francais en accédant à une VM en VNC =====
Ligne 61: Ligne 98:
 Il est possible de demander au dnsmasq utilisé par libvirtd d'​assigner toujours la même adresse IP a une VM donnée. Il est possible de demander au dnsmasq utilisé par libvirtd d'​assigner toujours la même adresse IP a une VM donnée.
  
 +==== Utilisation dynamique ====
 +Dans son infinie bonté la commande virsh net-update a été crée la sous commande **net-update** qui s'​utilise comme dans l'​exemple suivant, en remplacant l'​adresse MAC, le nom et l'ip selon vos besoins :
 +<​code>#​ virsh net-update default add ip-dhcp-host \
 +          "<​host mac='​52:​54:​00:​83:​a2:​cf'​ \
 +           ​name='​debianlive'​ ip='​192.168.122.10'​ />" \
 +           ​--live --config</​code>​
 +
 +<​note>​En plus de la sous commande **add**, virsh net-update peu également prendre les sous commandes **delete**, **modify** (certains items uniquement),​ **add-first** et **add-last**
 +Cette commande net-update peut s'​utiliser avec les items suivants :
 +<​code>​ip-dhcp-host
 +ip-dhcp-range (add/delete uniquement, pas de modify)
 +forward-interface (add/delete uniquement)
 +portgroup
 +dns-host
 +dns-txt
 +dns-srv</​code>​
 +</​note>​
 +
 +==== Ancienne méthode nécessitant de redémarrer le réseau ====
 +<note important>​Attention cette méthode nécessite de redémarrer le réseau géré par libvirt et donc **couper le réseau de toutes les VMs**. Il faudra donc éteindre puis rallumer toutes les VMs pour leur procurer à nouveau du réseau</​note>​
 Pour ce faire, il faut éditer le réseau utilisé (dans mon cas "​default"​) : Pour ce faire, il faut éditer le réseau utilisé (dans mon cas "​default"​) :
   * <​code>#​ virsh net-edit default</​code>​   * <​code>#​ virsh net-edit default</​code>​
Ligne 67: Ligne 124:
 <​note>​Magie,​ en activant ceci, vous venez aussi d'​activer le fonctionnement du DNS : n'​importe quelle VM pourra maintenant résoudre le nom "​debianlive"</​note>​ <​note>​Magie,​ en activant ceci, vous venez aussi d'​activer le fonctionnement du DNS : n'​importe quelle VM pourra maintenant résoudre le nom "​debianlive"</​note>​
  
-Vous croyez avoir fini ? que nenni : il faut ensuite redémarrer le réseau (et donc couper le réseau de toutes les VMs :'( ) de libvirt en utilisant les commandes suivantes :<​code>​+Vous croyez avoir fini ? que nenni : il faut ensuite redémarrer le réseau (et donc couper le réseau de toutes les VMs :-( ) de libvirt en utilisant les commandes suivantes :<​code>​
 # virsh net-destroy default # virsh net-destroy default
 # virsh net-start default # virsh net-start default
Ligne 94: Ligne 151:
 </​code>​ </​code>​
  
 +===== Utiliser le monde monitor de KVM avec libvirt =====
 +Pour bénéficier des commandes monitor (ici **info block**) de KVM/qemu en passant par libvirt, on peut utiliser, pour la VM ma-machine-virtuelle : <​code>​
 +# virsh qemu-monitor-command --hmp ma-machine-virtuelle ​ 'info block'</​code>​
 +
 +===== Utiliser les commandes virsh en tant qu'​utilisateur =====
 +Vous avez tout bien fait comme il faut en ajoutant vos utilisateurs au groupe libvirt en pensant qu'ils auront le droit de voir/lancer les VMs et vous avez eu raison
 +Cependant à cause d'une conf douteuse, par defaut la conf utilisateur n'est pas la meme que la conf root/​systeme par défaut
 +
 +du coup si le 'virsh list' ne vous renvoie rien lorsque vous le lancez en tant qu'​utilisateur simple c'est malheureusement normal.
 +
 +
 +En root le défaut est "​qemu:​%%///​%%system"​ alors que le défaut concernant un utilisateur est "​qemu:​%%///​%%session"​ ( https://​listman.redhat.com/​archives/​libvirt-users/​2015-December/​msg00005.html ) , sauf que bien sur chaque utilisateur dispose de sa propre session donc un utilisateur ne peut voir/​interagir que sur ses propres VMs ... pratique n'est il pas ? ;p
 +
 +Tout va bien puisque vous êtes ici, deja on va commencer par tester si la commande suivante renvoie bien ce que vous attendez : la liste des VMs completes :<​code>​
 +$ virsh --connect qemu:///​system list</​code>​
 +
 +Et si ca marche juste en lancant la commande suivante on va lui dire d'​utiliser cette valeur tout le temps pour cet utilisateur (malheureusement à exécuter pour chaque utilisateur) :<​code>​
 +$ echo '​uri_default = "​qemu:///​system"'​ >> ​ ~/​.config/​libvirt/​libvirt.conf</​code>​
 +
 +Et voila a vous les joies du simple **virsh list** qui marche enfin comme vous l'​attendiez
sysadmin/tips/libvirt.1346250985.txt.gz · Dernière modification: 2012/08/29 16:36 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0