[libvirt-users] Updating Multiple VM Guests?

Osier jyang at redhat.com
Fri Nov 12 08:11:17 UTC 2010


----- "Kenneth Stailey" <kstailey at yahoo.com> 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, 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

yep, for case simple like this, sed is good enough to get it done. :-)

>         virsh define $i.xml
> done
> 
> 
> 
> _______________________________________________
> libvirt-users mailing list
> libvirt-users at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-users




More information about the libvirt-users mailing list