All the libvirt related commands, like virsh, virt-viewer or virt-install take
a connect URI as parameter. The connect URI can be thought as specifying which set of
virtual machines you want to control with that command, which physical machine to control,
and how.
For example, I can use a command like:
virsh -c "xen+ssh://admin@corp.myoffice.net" start web-server
to start the web-server virtual machine on the xen cluster running at myoffice.net,
by connecting as admin via ssh to the corresponding server.
If you don't specify any connect URI to virsh (or any other libvirt related command), by
default libvirt will try to start a VM running as your username on your local machine
(eg, qemu:///session). This unless you are running as root, in which case libvirt will try to
run the image as a system image, not tied to any specific user (eg, qemu:///system).
I generally run most of my VMs as system VMs, and systematically forget to specify which connect
URI to use to commands like virsh or virt-install. What is more annoying is that some of
those commands take the URI as -c while others as -C.
However, turns out that most of those commands rely on libvirt, and that libvirt itself
looks at LIBVIRT_DEFAULT_URI to pick the default connect URI.
All I had to do to have all of those commands use qemu:///system as default was to edit
my .bahsrc to have:
export LIBVIRT_DEFAULT_URI="qemu:///system"
logout, login again, and enjoy!