[ovirt-users] Python API ovirtsdk4 cloud-init script file upload issue
Ondra Machacek
omachace at redhat.com
Thu Dec 1 08:17:09 UTC 2016
On 11/30/2016 07:22 PM, Allen Swackhamer wrote:
> 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
> )
^ This script works for me fine. Can you send cloud-init logs? It
should be in /var/log/cloud-init*log.
Note that script *must* be properly formatted as it's YAML.
my_script="""
write_files:
- content: |
Hello, world!
path: /tmp/greeting.txt
permissions: '0644'
"""
vm_service.start(
use_cloud_init=True,
vm=types.Vm(
initialization=types.Initialization(
user_name='root',
root_password='password',
host_name='myvm.example.com',
nic_configurations=[
types.NicConfiguration(
name='eth0',
on_boot=True,
boot_protocol=types.BootProtocol.STATIC,
ip=types.Ip(
version=types.IpVersion.V4,
address='192.168.0.100',
netmask='255.255.255.0',
gateway='192.168.0.1'
)
)
],
custom_script=my_script,
)
)
)
If you are familiar with Ansible you can also since Ansible 2.2 use
following task:
# Run VM with cloud init:
ovirt_vms:
name: rhel7
template: rhel7
cluster: mycluster
cloud_init:
nic_boot_protocol: static
nic_ip_address: 192.168.0.100
nic_netmask: 255.255.255.0
nic_gateway: 192.168.0.1
nic_name: eth0
nic_on_boot: true
host_name: host.example.com
custom_script: |
write_files:
- content: |
Hello, world!
path: /tmp/greeting.txt
permissions: '0644'
user_name: root
root_password: password
>
>
> 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
> )]
> )
> )
> )
> )
I've didn't try with cloud_init parameter I will investigate and report
back here.
>
> Documentation that I have been using:
> http://www.ovirt.org/develop/release-management/features/cloud/cloud-init-integration/
> <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
> <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
> <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
> <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
> <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
> <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)
>
>
> _______________________________________________
> Users mailing list
> Users at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/users
>
More information about the Users
mailing list