[ovirt-users] Passing custom script to cloud init using api

Juan Hernandez jhernand at redhat.com
Wed Sep 10 04:37:06 EDT 2014


On 09/10/2014 06:44 AM, Shanil S wrote:
> Hi Juan,
> 
> What i am planning to do is to make work the following script
> 
> #cloud-config
> 
> # phone_home: if this dictionary is present, then the phone_home
> # cloud-config module will post specified data back to the given
> # url
> # default: none
> # phone_home:
> #  url: http://my.foo.bar/$INSTANCE/
> #  post: all
> #  tries: 10
> #
> phone_home:
>  url: http://my.example.com/$INSTANCE_ID/
>  post: [ pub_key_dsa, pub_key_rsa, pub_key_ecdsa, instance_id ]
> 
> (http://cloudinit.readthedocs.org/en/latest/topics/examples.html#run-commands-on-first-boot)
> 
> but it wasn't working when i tried, i hope to post the above values to
> the specific url and get the posted details.
> 

I think it should work, but it depends completely on cloud-init itself.
I'd suggest you check the content of the generated cloud-init
configuration file (as described in a previous mail). If it contains the
"phone_home" section then you can discard a problem with oVirt, and
focus on clud-init.

> 
> On Wed, Sep 10, 2014 at 10:02 AM, Shanil S <xielesshanil at gmail.com
> <mailto:xielesshanil at gmail.com>> wrote:
> 
>     Hi Juan,
> 
>     Okay.. Thanks.. its working.
> 
>     I would like to execute other page something like test_script.php by
>     posting some values to it using the cloud init, Is it possible to do
>     it ?
> 
> 
> 
>     -- 
>     Regards
>     Shanil
> 
>     On Fri, Sep 5, 2014 at 10:08 PM, Juan Hernandez <jhernand at redhat.com
>     <mailto:jhernand at redhat.com>> wrote:
> 
>         On 09/05/2014 12:55 PM, Shanil S wrote:
>         > Hi Juan,
>         >
>         > Thanks for your reply.
>         >
>         > I tried with the above but i was unable to find the 'iwashere.txt' after
>         > executing the above xml.
>         >
> 
>         I repeated the test, this time with 3.4, and it worked fine for
>         me. As
>         the formatting of the XML is very important I'd suggest that you
>         take
>         the attached script (instead of copy & paste from the mail),
>         change the
>         password and VM id and run it.
> 
>         There are two kind of things that can go wrong here. One is that the
>         engine/VDSM combination may not be generating the right file. To
>         verify
>         this start the VM with the attached script, and once it is
>         started go to
>         the hypervisor where it is running and find the corresponding
>         qemu process:
> 
>           # ps -ef | grep -- '-name myvm'
> 
>         This will give you a very long command line. That command line
>         should
>         include a "-drive" option containing the full path of the disk image
>         generated by the engine/VDSM, something like this:
> 
>           -drive
>         file=/var/run/vdsm/payload/b5f087d4-022d-4d5f-8a1e-268c562c7bb1.b6fcddff571bb8c2028c61b623d172a6.img
> 
>         To inspect its content make a copy (just in case) and mount it:
> 
>           # cp -drive
>         file=/var/run/vdsm/payload/b5f087d4-022d-4d5f-8a1e-268c562c7bb1.b6fcddff571bb8c2028c61b623d172a6.img
>         /root/my.img
>           # mount -o loop,ro /root/my.img /mnt
> 
>         Inspect the content:
> 
>           # find /mnt
>           /mnt/openstack
>           /mnt/openstack/content
>           /mnt/openstack/content/0000
>           /mnt/openstack/latest
>           /mnt/openstack/latest/meta_data.json
>           /mnt/openstack/latest/user_data
> 
>         The content of the custom-script should be at the end of the
>         "user_data"
>         file, so take a look at that:
> 
>           # cat /mnt/openstack/latest/user_data
>           #cloud-config
>           ssh_pwauth: true
>           disable_root: 0
>           output:
>             all: '>> /var/log/cloud-init-output.log'
>           user: root
>           password: mypassword
>           chpasswd:
>             expire: false
>           runcmd:
>           - 'sed -i ''/^datasource_list: /d'' /etc/cloud/cloud.cfg; echo
>         ''datasource_list:
>             ["NoCloud", "ConfigDrive"]'' >> /etc/cloud/cloud.cfg'
>           runcmd:
>            - echo "I was here!" > /iwashere.txt
> 
>         If your custom script isn't there then there is some problem in the
>         engine/VDSM side, otherwise the problem is probably in cloud-init
>         itself, and we will need someone with more knowledge of
>         cloud-init to
>         debug it.
> 
>         Don't forget to umount the file when finished:
> 
>           # umount /mnt
> 
>         >
>         > On Fri, Sep 5, 2014 at 3:00 PM, Juan Hernandez <jhernand at redhat.com <mailto:jhernand at redhat.com>
>         > <mailto:jhernand at redhat.com <mailto:jhernand at redhat.com>>> wrote:
>         >
>         >     On 09/05/2014 10:46 AM, Sven Kieske wrote:
>         >     >
>         >     >
>         >     > Am 05.09.2014 10:27, schrieb Juan Hernandez:
>         >     >> Trying to make an example for this I discovered that
>         the "custom_script"
>         >     >> element is currently ignored if the "cloud_init"
>         element is present.
>         >     >> Instead we are taking the content of the first "file"
>         element from the
>         >     >> "cloud_init" element and appending it to the cloud-init
>         configuration
>         >     >> file. I believe that this is a bug, as it breaks
>         backwards compatibility:
>         >     >>
>         >     >>   https://bugzilla.redhat.com/1138564
>         >     >
>         >     > Thanks for the report, I just proposed this as a blocker
>         for the 3.4.4
>         >     > release as it is a clear regression.
>         >     > Also I rely on this functionality in my 3.3. setup and I
>         want to upgrade
>         >     > to 3.4 so I can't upgrade until this is fixed and released.
>         >
>         >     Agree, I set the bug as a blocker for 3.4.4.
>         >
>         >     >>
>         >     >> However, you can exploit this bug to do what you want.
>         This is an example:
>         >     >
>         >     > Well I guess this is a pretty bad idea, because it will
>         just work
>         >     > until the bug is fixed?
>         >     >
>         >
>         >     No, what I proposed in the example is to put the custom
>         script in both
>         >     the first "file" inside "clud_init" and in the
>         "custom_script" element.
>         >     That should work with the current status and also if/when
>         we fix the
>         >     bug.
>         >
> 

-- 
Dirección Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta
3ºD, 28016 Madrid, Spain
Inscrita en el Reg. Mercantil de Madrid – C.I.F. B82657941 - Red Hat S.L.


More information about the Users mailing list