that I wrote some
months ago against v3.4 could be changed by encoding the content on base64?
at this time of this writing I haven't v3.5 to test the script / new code
best regards
Amedeo Salvati
Il 01/11/2014 00:00, users-request(a)ovirt.org ha scritto:
The "custom_script" element doesn't work in combination
with cloud-init
and run once. To make it work you have to use cloud-init and a file
element containing your custom script. Here you have an example:
#!/usr/bin/python
import base64
import re
from ovirtsdk.api import API
from ovirtsdk.xml import params
# A simple function to encode using base64 and now new lines:
def encode(s):
return re.sub("\s+", "", base64.encodestring(s))
# Connect to the server:
api = API(
url="https://engine35.example.com/ovirt-engine/api",
username="admin@internal",
password="redhat123",
insecure=True,
debug=True
)
# Find the virtual machine:
myvm = api.vms.get(name="myvm")
# Prepare the cloud-init custom script to write files:
myscript = """\
write_files:
"""
# Append one file:
myscript += """\
- encoding: b64
content: %s
owner: root:root
path: /etc/firstfile.txt
permissions: '0644'
""" % encode("The content of the first file")
# Append another file:
myscript += """\
- encoding: b64
content: %s
owner: root:root
path: /etc/secondfile.txt
permissions: '0644'
""" % encode("The content of the second file")
# Prepare the action to trigger initialization using cloud-init:
action = params.Action(
vm=params.VM(
initialization=params.Initialization(
cloud_init=params.CloudInit(
files=params.Files(
file=[
params.File(
name="myscript",
type_="plaintext",
content=myscript
)
]
)
)
)
)
)
# Start the virtual machine:
myvm.start(action)
# Disconnect from the server:
api.disconnect()
Regarding the problem with the root password we have a bug in 3.5 that
makes this fail. See here:
https://bugzilla.redhat.com/1156155
The problem is that we are not passing the user name to cloud-init, and
as a result it is changing the default cloud-init user password, not the
root pssword. To workaround the issue you can edit the
"/etc/cloud/cloud.cfg" file of the VM and change the default user name:
system_info:
distro: ...
default_user:
name: root <-- Change this from "fedora" or "cloud-init" to
root