[libvirt-users] Updating Multiple VM Guests?

Kenneth Stailey kstailey at yahoo.com
Wed Nov 10 22:44:37 UTC 2010



--- On Wed, 11/10/10, Laine Stump <laine at laine.org> wrote:

> From: Laine Stump <laine at laine.org>
> Subject: Re: [libvirt-users] Updating Multiple VM Guests?
> To: libvirt-users at redhat.com
> Date: Wednesday, November 10, 2010, 1:27 PM
> On 11/10/2010 01:20 PM, Kenneth
> Stailey wrote:
> >
> > --- On Wed, 11/10/10, Laine Stump<laine at laine.org> wrote:
> >
> >> From: Laine Stump<laine at laine.org>
> >> Subject: Re: [libvirt-users] Updating Multiple VM
> Guests?
> >> To: libvirt-users at redhat.com
> >> Date: Wednesday, November 10, 2010, 12:41 PM
> >> On 11/10/2010 11:59 AM, Kenneth
> >> Stailey wrote:
> >>> Hi,
> >>>
> >>> The libvirt.org FAQ says that "virsh edit" is
> the
> >> recommended way of updating the libvirt xml.
> >>> If a change has to be made to many VMs "virsh
> edit" is
> >> tedious, time-consuming and likely to be prone to
> careless
> >> errors.
> >>> Is there a command line approach to updating
> multiple
> >> VMs?
> >>
> >> How about:
> >>
> >>     for g in guest1 guest2
> guest3 guest4; do
> >>        virsh dumpxml
> --inactive $g
> >>> /tmp/g.xml
> >>        # do whatever sed/etc
> commands you
> >> want here
> >>        virsh define
> /tmp/g.xml
> >>    done
> >>
> >> (or something like that, anyway :-)
> > The "sed, etc." is a mistake since XML does not have
> guaranteed format.
> >
> > I suppose XMLStarlet could be used.
> >
> > http://xmlstar.sourceforge.net/
> 
> Yeah. sed is just my general purpose "replacement for
> editing by hand" 
> token ;-)
> 
> Something that is xml-aware would obviously be a much
> better choice.

It's too painful to get right anyway.  I just used this:

#! /bin/bash

# hack to fixup qemu version numbers in libvirt xml

if [ `id -un` != root ]; then
    echo this script only works as root
    exit 1
fi

cd /dev/shm

for i in `virsh list --all | awk '/running|shut off/ {print $2}'`
do
        virsh dumpxml $i > $i.xml
        sed -i.bak -e 's/pc-0.11/pc-0.12/' $i.xml
        virsh define $i.xml
done






More information about the libvirt-users mailing list