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 [2015/07/15 13:39]
james ajout qemu-monitor-command
sysadmin:tips:libvirt [2021/04/07 17:00] (Version actuelle)
james [Utiliser les commandes virsh en tant qu'utilisateur]
Ligne 6: Ligne 6:
  
 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. 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>​ 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>​
Ligne 19: Ligne 21:
 virsh # pool-start local-iso</​code>​ 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 80: 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 86: 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 117: Ligne 155:
 # virsh qemu-monitor-command --hmp ma-machine-virtuelle ​ 'info block'</​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.1436960347.txt.gz · Dernière modification: 2015/07/15 13:39 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0