[ovirt-users] Add multiple files to a VM via cloud-init

Shahar Havivi shaharh at redhat.com
Thu Oct 30 12:39:24 UTC 2014


On 30.10.14 12:30, Branimir Pejakovic wrote:
> On Thu, Oct 30, 2014 at 12:02 PM, Shahar Havivi <shaharh at redhat.com> wrote:
> 
> > On 30.10.14 10:06, Branimir Pejakovic wrote:
> > > On Thu, Oct 30, 2014 at 7:22 AM, Shahar Havivi <shaharh at redhat.com>
> > wrote:
> > >
> > > > On 29.10.14 17:35, Branimir Pejakovic wrote:
> > > > > Hi list,
> > > > >
> > > > > I was wondering is there a way to add multiple files to a vm via
> > > > cloud-init
> > > > > using python SDK. I was able to add /etc/resolv.conf and
> > additionally I
> > > > > would like to add config files for NICs (ifcfg-ethX) with appropriate
> > > > > values (ip,gw,netmask). I used an example given here:
> > > > > http://www.ovirt.org/Features/Cloud-Init_Integration . But
> > > > unfortunately I
> > > > > cannot do the same thing If I want to write multiple files to a vm in
> > > > > params.Action class.
> > > > >
> > > > > Thank you in advance!
> > > > you can use the custom script text box in oVirts cloud-init section,
> > > > there you can add any cloud-init section - adding files examples can be
> > > > found
> > > > here:
> > > >
> > > >
> > http://cloudinit.readthedocs.org/en/latest/topics/examples.html#writing-out-arbitrary-files
> > > >
> > > >   Shahar Havivi.
> > > >
> > > >
> > > Hi Shahar,
> > >
> > > Thank you for the reply.
> > >
> > > To be honest I knew for those scripts but I want to do it in automate
> > > fashion just like in that example that I put in my original message. I
> > have
> > > tried to specify in params.Files class multiple files:
> > >
> > > vm_file1 = params.Files(file=[params.File(name = 'file1', content =
> > > file1_content, type_= 'PLAINTEXT')])
> > > vm_file2 = params.Files(file=[params.File(name = 'file2', content =
> > > file2_content, type_= 'PLAINTEXT')])
> > >
> > > and then give them as arguments to params.CloudInit _init_ constructor
> > > (files=...)  just like in that example above but it seems that I am doing
> > > something wrong because it does not write multiple files - it writes only
> > > when you specify one file all right. The exception is "Error: 'list'
> > object
> > > has no attribute 'export'" (I tried to specify those files as a list -
> > > files=[vm_file1,vm_file2]).
> > >
> > > Thanks for any help.
> > The custom script is currently the only option to add files via Cloud-Init
> >
> > Thanks,
> >   Shahar Havivi.
> >
> >
> Hi Shahar,
> 
> Granted. But the example in python
> http://www.ovirt.org/Features/Cloud-Init_Integration uses custom script :)
> I just want to know how to do the same thing in case when I want to write
> more than one file to a VM - and yes  - all those multiple files that I
> want to write are specified via custom scripts.
> 
> From the link - (The "Python SDK" paragraph: scontent object holds the
> custom script):
> 
>  scontent = "write_files:\n-   content: |\n        search
> example.com\n        nameserver 10.10.10.1\n        nameserver
> 10.10.10.2\n    path: /etc/resolv.conf"
> 
> For example (and just for example), I want to write to /etc/issue and
> /etc/hosts not only /etc/resolv.conf. In essence, when vm goes to run-once
> mode I want to write more than one file to a vm via Python (using
> CloudInit) in automated fashion (and not touching oVirt GUI at all).
You don't need to use the GUI,
the sdks initialization have custom_script as string which is equivalent to
the text box that you see in the GUI, and you can put the same content there
(ie multiple files).
Is that sufficient enough?

> 
> Thanks in advance!
> 
> Best regards,
> 
> Branimir



More information about the Users mailing list