On Thu, Oct 30, 2014 at 12:52 PM, Branimir Pejakovic <branimirp(a)gmail.com>
wrote:
On Thu, Oct 30, 2014 at 12:39 PM, Shahar Havivi <shaharh(a)redhat.com>
wrote:
> On 30.10.14 12:30, Branimir Pejakovic wrote:
> > On Thu, Oct 30, 2014 at 12:02 PM, Shahar Havivi <shaharh(a)redhat.com>
> wrote:
> >
> > > On 30.10.14 10:06, Branimir Pejakovic wrote:
> > > > On Thu, Oct 30, 2014 at 7:22 AM, Shahar Havivi
<shaharh(a)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-o...
> > > > >
> > > > > 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?
>
Hi Shahar,
Thanks! I will try this one. I was not aware of this feature. Although I
can see that it was mentioned on the list (my bad).
Thank you for your effort! I really do appreciate it!
Hi,
Please if somebody can help me because I am pretty stuck. As I said in
previous posts I used this Python example
http://www.ovirt.org/Features/Cloud-Init_Integration to set root password,
hostname and resolv.conf. It worked without any problems for 3.4 oVirt
version and equivalent Python SDK (ovirt-engine-sdk-python-3.4.x.noarch).
Then, I have tried to write through yuml scripts more conf files than just
resolv.conf to configure guest. I also saw this post on the list:
http://lists.ovirt.org/pipermail/users/2014-October/028539.html. So based
on that, I decided to upgraded oVirt and SDK
(ovirt-engine-sdk-python-3.5.0.7-1.el6.noarch) to 3.5 version. The upgrade
itself passed without any problem.
From that point forward I tried to use custom_script parameter (as
suggested by Shahar) inside Initialization class and CloudInit class
without any luck.
Can somebody please provide a simple Python code to submit yaml script to
cloud-init?
Also after the upgrade the example script I mentioned above can only change
hostname. It does not write resolv.conf anymore nor it sets root password.
I don't know if something is changed inside methods? For example,
customization of virtual machine (memory,cpu,high availability, pinning to
a certain host etc works without any problems).
Thank you!
Best regards,
Branimir