I am attempting to run a VM with a cloud-init script, but can't seem to get
the syntax working for the python ovirtsdk4 library. We are running ovirt
4.
My cloud init script never appears to work and the users option does not
work either. If I use root_password and user_name for types.Initialization
(as in the example below) it will generate the correct users, but if I put
in the types.CloudInit piece it will break it.
types.Initialization(
user_name=cloud_init_username,
root_password=cloud_init_password,
regenerate_ssh_keys=True,
host_name="testingcloudinit",
nic_configurations=[
types.NicConfiguration(
boot_protocol=types.BootProtocol.DHCP,
name='ens3',
on_boot=True
)
],
custom_script=cloud_init_script
)
What I currently have is below. cloud_init_script is the script I want to
run as a string. Looking at the REST API documentation it shows that I
need to upload the file as a CDATA entry, but I am unsure of how I can
ensure that in python. Is there potentially a way I could get the full XML
call in python to ensure API compliance?
vm_service.start(
use_cloud_init=True,
vm=types.Vm(
initialization=types.Initialization(
nic_configurations=[types.NicConfiguration(
boot_protocol=types.BootProtocol.DHCP,
name="ens3",
on_boot=True
)],
cloud_init=types.CloudInit(
files=[types.File(
name="initialrunner",
content=cloud_init_script,
type="plaintext"
),
],
users=[types.User(
user_name=cloud_init_username,
password=cloud_init_password
)]
)
)
)
)
Documentation that I have been using:
http://www.ovirt.org/develop/release-management/features/
cloud/cloud-init-integration/ (seems old and for a earlier ovirtsdk version)
http://cloudinit.readthedocs.io/en/latest/topics/examples.
html#run-commands-on-first-boot (official cloud init documentation)
https://www.mail-archive.com/users@ovirt.org/msg35549.html (message board
conversation about this REST API)
http://lists.ovirt.org/pipermail/users/2014-September/027198.html (about
the cloud-init script specifically)
http://lists.ovirt.org/pipermail/users/2014-November/028878.html (for a old
version of ovirtsdk it appears)
http://www.ovirt.org/develop/api/rest-api/rest-api/#How_
can_I_run_a_custom_script_using_cloud-init.3F (appears to be up to date but
just documents the REST API)