Re: Creating VMs from templates with their own disks

Yep. Your code: cloud_init: custom_script: | host_name: "{{ vm_fqdn }}" user_name: myadmin user_password: <password> write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostnamectl)" >> /tmp/myhostname.txt Yet, in "custom_script" there is no "host_name" (indentation shows that host_name is part of the custom script, not to mention the "|" character). Try with: cloud_init: host_name: "{{ vm_fqdn }}" user_name: myadmin # I can't find this one in https://docs.ansible.com/ansible/latest/collections/ovirt/ovirt/ovirt_vm_mod... #user_password: <password> root_password: <vaulted_password> custom_script: | write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostnamectl)" >> /tmp/myhostname.txt Best Regards, Strahil Nikolov В петък, 26 ноември 2021 г., 19:33:16 Гринуич+2, Staniforth, Paul <p.staniforth@leedsbeckett.ac.uk> написа: #yiv9174097940 P {margin-top:0;margin-bottom:0;}Hi Sina, These should be part of the cloud-init dictionary and are strict about indentation. e.g. from the documentation. - name: Run VM with cloud init ovirt.ovirt.ovirt_vm: name: rhel7 template: rhel7 cluster: Default memory: 1GiB high_availability: true high_availability_priority: 50 # Available from Ansible 2.5 cloud_init: dns_servers: '8.8.8.8 8.8.4.4' nic_boot_protocol: static nic_ip_address: 10.34.60.86 nic_netmask: 255.255.252.0 nic_gateway: 10.34.63.254 nic_name: eth1 host_name: example.com custom_script: | write_files: - content: | Hello, world! path: /tmp/greeting.txt permissions: '0644' user_name: root root_password: super_passwordRegards, Paul S. From: Sina Owolabi <notify.sina@gmail.com> Sent: 26 November 2021 16:43 To: Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> Cc: users@ovirt.org <users@ovirt.org> Subject: Re: [ovirt-users] Re: Creating VMs from templates with their own disks Caution External Mail: Do not click any links or open any attachments unless you trust the sender and know that the content is safe. Same thing when its written as 'hostname': atal: [ovirt.ovirt.trove.internal]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (ovirt.ovirt.ovirt_vm) module: hostname Supported parameters include: affinity_gr gs, affinity_label_mappings, allow_partial_import, auth, ballooning_enabled, bios_type, boot_devices, boot_menu, cd_iso, clone, clone_permissions, cloud_init, cloud_init_nics, cloud_i t, cluster, cluster_mappings, comment, cpu_cores, cpu_mode, cpu_pinning, cpu_shares, cpu_sockets, cpu_threads, custom_compatibility_version, custom_emulated_machine, custom_properties rotected, description, disk_format, disks, domain_mappings, exclusive, export_domain, export_ova, fetch_nested, force, force_migrate, graphical_console, high_availability, high_availa ority, host, host_devices, id, initrd_path, instance_type, io_threads, kernel_params, kernel_params_persist, kernel_path, kvm, lease, lun_mappings, memory, memory_guaranteed, memory_m e, name, nested_attributes, next_run, nics, numa_nodes, numa_tune_mode, operating_system, placement_policy, placement_policy_hosts, poll_interval, quota_id, reassign_bad_macs, rng_dev mappings, serial_console, serial_policy, serial_policy_value, smartcard_enabled, snapshot_name, snapshot_vm, soundcard_enabled, sso, state, stateless, storage_domain, sysprep, templat e_version, ticket, timeout, timezone, type, usb_support, use_latest_template_version, vmware, vnic_profile_mappings, wait, watchdog, xen"} On Fri, Nov 26, 2021 at 5:35 PM Sina Owolabi <notify.sina@gmail.com> wrote:
And Paul
when I try to add host_name, I get this error:
TASK [Creates new virtual machine] **************************************************************************************************************************************************** fatal: [ovirt.ovirt.trove.internal]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (ovirt.ovirt.ovirt_vm) module: host_name, regenerate_ssh_keys Supported parameter affinity_group_mappings, affinity_label_mappings, allow_partial_import, auth, ballooning_enabled, bios_type, boot_devices, boot_menu, cd_iso, clone, clone_permissions, cloud_init, cl ics, cloud_init_persist, cluster, cluster_mappings, comment, cpu_cores, cpu_mode, cpu_pinning, cpu_shares, cpu_sockets, cpu_threads, custom_compatibility_version, custom_emulated_mach m_properties, delete_protected, description, disk_format, disks, domain_mappings, exclusive, export_domain, export_ova, fetch_nested, force, force_migrate, graphical_console, high_ava high_availability_priority, host, host_devices, id, initrd_path, instance_type, io_threads, kernel_params, kernel_params_persist, kernel_path, kvm, lease, lun_mappings, memory, memor ed, memory_max, migrate, name, nested_attributes, next_run, nics, numa_nodes, numa_tune_mode, operating_system, placement_policy, placement_policy_hosts, poll_interval, quota_id, reas acs, rng_device, role_mappings, serial_console, serial_policy, serial_policy_value, smartcard_enabled, snapshot_name, snapshot_vm, soundcard_enabled, sso, state, stateless, storage_do rep, template, template_version, ticket, timeout, timezone, type, usb_support, use_latest_template_version, vmware, vnic_profile_mappings, wait, watchdog, xen"}
On Fri, Nov 26, 2021 at 5:11 PM Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> wrote:
Hi Sina, I get easily confused with cloud-init but shouldn't you be setting the hostname, username, etc before the custom script?
Also, you could rename the disk as a separate play in your playbook.
e.g.
# Change Disk Name - ovirt.ovirt.ovirt_disk: id: 00000000-0000-0000-0000-000000000000 storage_domain: data name: "new_disk_name" vm_name: rhel7
Regards, Paul S.
________________________________ From: Sina Owolabi <notify.sina@gmail.com> Sent: 26 November 2021 15:00 To: Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> Cc: users@ovirt.org <users@ovirt.org> Subject: Re: [ovirt-users] Re: Creating VMs from templates with their own disks
Caution External Mail: Do not click any links or open any attachments unless you trust the sender and know that the content is safe.
Thanks Paul.
I seem to be getting this by hand, but trying with ansible, I think my skills are a bit lacking. I can create with ansible, and it seems to work well, except for the fact that the new vm is created with the hostname of the vm from which the template was made. The disk is also named by the template. My ansiblle yaml is below and I'm pretty sure its wrong (especially where it needs to use cloud-init to inject the correct hostname, and the other prepping I would like to add). Please can you help correct me?
--- - hosts: ovirt.ovirt.mydom.internal tasks: - import_tasks: ovirt_auth.yml
- name: Creates new virtual machine ovirt.ovirt.ovirt_vm: auth: "{{ ovirt_auth }}" name: "{{ vm_fqdn }}" state: present clone: true cluster: lrg0-ovirt-cluster storage_domain: lrg0-ovirt-mydom-internal-Local memory: 16GiB cpu_cores: 8 cpu_sockets: 2 template: template-test00-centos8 type: server operating_system: other_linux sso: true disk_format: raw # disks: # - name: "{{ vm_fqdn }}-disk0" # bootable: true # nics: # - name: nic1 # boot_protocol: dhcp # interface: virtio # profile_name: "{{ net_profile_name }}" graphical_console: protocol: - spice - vnc cloud_init: custom_script: | host_name: "{{ vm_fqdn }}" user_name: myadmin user_password: <password> write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostnamectl)" >> /tmp/myhostname.txt
ipa-client-install --hostname=`hostname -f` \ --mkhomedir --domain=services.mydom.internal \ --realm=SERVICES.MYDOM.INTERNAL --no-ntp \ --principal=admin --password=<password> \ --enable-dns-updates --unattended runcmd: - [ /tmp/setup.sh, "{{ vm_fqdn }}" ]
On Wed, Nov 24, 2021 at 9:26 PM Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> wrote:
Hello Sina,
to use the template.
Create new VM and select the template.
Click the advanced options.
In the boot section you can set the HD to be the first boot devices and unselect any CD. In the Resource Allocation section, you can set the storage allocation to clone instead of thin ( this will create a copy of the template disk), you can also set the disk alias name.
you can also edit the template to make sure the HD is the first boot device.
I don't know what's in your ansible yaml definition.
Cloning is for copying VMs or snapshots not templates.
Regards,
Paul S. ________________________________ From: Sina Owolabi <notify.sina@gmail.com> Sent: 24 November 2021 09:28 To: Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> Cc: users@ovirt.org <users@ovirt.org> Subject: Re: [ovirt-users] Re: Creating VMs from templates with their own disks
Caution External Mail: Do not click any links or open any attachments unless you trust the sender and know that the content is safe.
Hello
Sorry for the late reply, work has been crazy.
This doesnt seem to work as advertised, or I am still not getting it. Either way I would really appreciate some help and guidance.
Steps I have attempted: 1. Create and configure VM as I want it to be (disk, partitioning, etc). 2. Shutdown the vm, create a template from it.
Cloning manually: Cloning fails with this message: Error while executing action: clone00.domain.tld:
Cannot add VM. One or more provided storage domains are either not in active status or of an illegal type for the requested operation.
I cant modify the storage allocation, and the disk its attempting to use is the disk of the source VM.
Manual template install: Choosing to install manually with a template requires me to add a new disk, and to boot off the CD (defined in the template) and manually set things up. This I do not wish to do, because I would rather automate.
Cloning with ansible, defining the cloud-init script and using the template: VM is successfully created, but logging in with remote-viewer drops me into the installation process (setting up from the attached ISO). Which is also not desired.
Please help me with what I am doing wrong. Again the goal is to have the vm setup with its own credentials.
On Thu, Nov 18, 2021 at 9:24 AM Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> wrote:
Hello, The VMs can get created from a template otherwise the blank template is used if a particular template is used it can be thin dependent VM the VMs disks is linked to the Templates disk and it just carries the changes made in the VMs disk (this is quicker and uses less space if you a lot of disks). The other option is to create a cloned VM and this will copy the Templates disk to the VM so it's no longer dependent.
In the ansible documentation look for the clone option. https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.ansib...
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ovirt.... Virtual Machine Management Guide oVirt is a free open-source virtualization solution for your entire enterprise https://eur02.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.ovirt.o... For the cloud-init does the cloud-init package need to be installed on the template image?
Regards,
Paul S. ________________________________ From: notify.sina@gmail.com <notify.sina@gmail.com> Sent: 18 November 2021 07:34 To: users@ovirt.org <users@ovirt.org> Subject: [ovirt-users] Re: Creating VMs from templates with their own disks
Caution External Mail: Do not click any links or open any attachments unless you trust the sender and know that the content is safe.
Im sorry, I am trying to wrap my head around this but it is difficult.
I just want to be able to stand up new vms, with their own storage, similar to how I can with plain vanilla KVM, with a template or without, maybe even with a kickstart, and hopefully with ansible.
Right now anytime I try to create a VM, using the template, (with ansible), it gets the template disk attached, and from the console I see the new vm is named as the vm I created the template with. Cloud init script that is meant to rename the vm, and join it to IPA, is ignored.
If I create storage for the vm, before creating it, both the template storage and the new storage are attached to the vm, which is also confusing. Cloud init is also ignored.
I didn't think something this straightforward would end up needing a shift in thinking about how vms are created, especially with a product that's more than likely using kvm under the hood.
I would appreciate some straightforward guiding steps, if I can get them. Really. It's been a frustrating week.
On 2021-11-17 13:50, Sina Owolabi wrote:
You can create a template with no disk, then VM's created from that template will also have no disk. Then add a new disk to the VM after you create it. This is how the default blank template works. You can also create a template with an empty disk, then every VM created will also get an empty disk by default. You can always rename disks as well.
Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ovirt.... oVirt Code of Conduct: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ovirt.... List Archives: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.ovir... To view the terms under which this email is distributed, please go to:- https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fleedsbecke...
--
cordially yours,
Sina Owolabi
+2348176469061 To view the terms under which this email is distributed, please go to:- https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fleedsbecke...
--
cordially yours,
Sina Owolabi
+2348176469061 To view the terms under which this email is distributed, please go to:- https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fleedsbecke...
--
cordially yours,
Sina Owolabi
+2348176469061
-- cordially yours, Sina Owolabi +2348176469061 To view the terms under which this email is distributed, please go to:- https://leedsbeckett.ac.uk/disclaimer/email _______________________________________________ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://www.ovirt.org/privacy-policy.html oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/ZUHT7Z7QV2U5MF...

Thanks for all the advice, but ... I'm still getting it wrong. Cloud init script still doesnt work, at my wits end. Currently ansible code looks what's below: Ive also added screenshots so you can critique my formatting. And when I try to rename the disk it creates a new one instead. Thanks very much for any additional help you can provide. --- - hosts: ovirt.ovirt.trove.internal tasks: - import_tasks: ovirt_auth.yml - name: Creates new virtual machine ovirt.ovirt.ovirt_vm: auth: "{{ ovirt_auth }}" name: "{{ vm_fqdn }}" state: present clone: true cluster: lrg0-ovirt-cluster storage_domain: lrg0-ovirt-trove-internal-Local memory: 16GiB cpu_cores: 8 cpu_sockets: 2 template: template-test00-centos8 type: server operating_system: other_linux sso: true disk_format: raw graphical_console: protocol: - spice - vnc cloud_init: regenerate_ssh_keys: true host_name: "{{ vm_fqdn }}" dns_search: trove.internal dns_serers: 10.200.20.4 10.200.20.6 custom_script: | write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostname -f)" >> /tmp/myhostname.txt ipa-client-install --hostname=`hostname -f` \ --mkhomedir --domain=services.trove.internal \ --realm=SERVICES.TROVE.INTERNAL --no-ntp \ --principal=admin --password=4dm1n@Tr0v3 \ --enable-dns-updates --unattended user_name: troveadmin root_password: 4dm1n@Tr0v3 - name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}" --- - hosts: ovirt.ovirt.trove.internal tasks: - import_tasks: ovirt_auth.yml - name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}" - name: Print disk attributes ovirt.ovirt.ovirt_disk_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: disk_info - debug: msg: "{{ disk_info.ovirt_disks }}" - name: Rename disk ovirt.ovirt.ovirt_disk: auth: "{{ ovirt_auth }}" id: "{{ vm_info.ovirt_vms[0].id }}" storage_domain: lrg0-ovirt-mydom-internal-Local name: "{{ vm_fqdn }}-osdisk4" vm_name: "{{ vm_fqdn }}" size: 200GiB interface: virtio On Fri, Nov 26, 2021 at 10:24 PM Strahil Nikolov <hunter86_bg@yahoo.com> wrote:
Yep.
Your code: cloud_init: custom_script: | host_name: "{{ vm_fqdn }}" user_name: myadmin user_password: <password> write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostnamectl)" >> /tmp/myhostname.txt
Yet, in "custom_script" there is no "host_name" (indentation shows that host_name is part of the custom script, not to mention the "|" character).
Try with:
cloud_init: host_name: "{{ vm_fqdn }}" user_name: myadmin # I can't find this one in https://docs.ansible.com/ansible/latest/collections/ovirt/ovirt/ovirt_vm_mod... #user_password: <password> root_password: <vaulted_password> custom_script: | write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostnamectl)" >> /tmp/myhostname.txt
Best Regards, Strahil Nikolov В петък, 26 ноември 2021 г., 19:33:16 Гринуич+2, Staniforth, Paul <p.staniforth@leedsbeckett.ac.uk> написа:
Hi Sina,
These should be part of the cloud-init dictionary and are strict about indentation.
e.g. from the documentation.
- name: Run VM with cloud init ovirt.ovirt.ovirt_vm: name: rhel7 template: rhel7 cluster: Default memory: 1GiB high_availability: true high_availability_priority: 50 # Available from Ansible 2.5 cloud_init: dns_servers: '8.8.8.8 8.8.4.4' nic_boot_protocol: static nic_ip_address: 10.34.60.86 nic_netmask: 255.255.252.0 nic_gateway: 10.34.63.254 nic_name: eth1 host_name: example.com custom_script: | write_files: - content: | Hello, world! path: /tmp/greeting.txt permissions: '0644' user_name: root root_password: super_password
Regards, Paul S. ________________________________ From: Sina Owolabi <notify.sina@gmail.com> Sent: 26 November 2021 16:43 To: Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> Cc: users@ovirt.org <users@ovirt.org> Subject: Re: [ovirt-users] Re: Creating VMs from templates with their own disks
Caution External Mail: Do not click any links or open any attachments unless you trust the sender and know that the content is safe.
Same thing when its written as 'hostname':
atal: [ovirt.ovirt.trove.internal]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (ovirt.ovirt.ovirt_vm) module: hostname Supported parameters include: affinity_gr gs, affinity_label_mappings, allow_partial_import, auth, ballooning_enabled, bios_type, boot_devices, boot_menu, cd_iso, clone, clone_permissions, cloud_init, cloud_init_nics, cloud_i t, cluster, cluster_mappings, comment, cpu_cores, cpu_mode, cpu_pinning, cpu_shares, cpu_sockets, cpu_threads, custom_compatibility_version, custom_emulated_machine, custom_properties rotected, description, disk_format, disks, domain_mappings, exclusive, export_domain, export_ova, fetch_nested, force, force_migrate, graphical_console, high_availability, high_availa ority, host, host_devices, id, initrd_path, instance_type, io_threads, kernel_params, kernel_params_persist, kernel_path, kvm, lease, lun_mappings, memory, memory_guaranteed, memory_m e, name, nested_attributes, next_run, nics, numa_nodes, numa_tune_mode, operating_system, placement_policy, placement_policy_hosts, poll_interval, quota_id, reassign_bad_macs, rng_dev mappings, serial_console, serial_policy, serial_policy_value, smartcard_enabled, snapshot_name, snapshot_vm, soundcard_enabled, sso, state, stateless, storage_domain, sysprep, templat e_version, ticket, timeout, timezone, type, usb_support, use_latest_template_version, vmware, vnic_profile_mappings, wait, watchdog, xen"}
On Fri, Nov 26, 2021 at 5:35 PM Sina Owolabi <notify.sina@gmail.com> wrote:
And Paul
when I try to add host_name, I get this error:
TASK [Creates new virtual machine] **************************************************************************************************************************************************** fatal: [ovirt.ovirt.trove.internal]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (ovirt.ovirt.ovirt_vm) module: host_name, regenerate_ssh_keys Supported parameter affinity_group_mappings, affinity_label_mappings, allow_partial_import, auth, ballooning_enabled, bios_type, boot_devices, boot_menu, cd_iso, clone, clone_permissions, cloud_init, cl ics, cloud_init_persist, cluster, cluster_mappings, comment, cpu_cores, cpu_mode, cpu_pinning, cpu_shares, cpu_sockets, cpu_threads, custom_compatibility_version, custom_emulated_mach m_properties, delete_protected, description, disk_format, disks, domain_mappings, exclusive, export_domain, export_ova, fetch_nested, force, force_migrate, graphical_console, high_ava high_availability_priority, host, host_devices, id, initrd_path, instance_type, io_threads, kernel_params, kernel_params_persist, kernel_path, kvm, lease, lun_mappings, memory, memor ed, memory_max, migrate, name, nested_attributes, next_run, nics, numa_nodes, numa_tune_mode, operating_system, placement_policy, placement_policy_hosts, poll_interval, quota_id, reas acs, rng_device, role_mappings, serial_console, serial_policy, serial_policy_value, smartcard_enabled, snapshot_name, snapshot_vm, soundcard_enabled, sso, state, stateless, storage_do rep, template, template_version, ticket, timeout, timezone, type, usb_support, use_latest_template_version, vmware, vnic_profile_mappings, wait, watchdog, xen"}
On Fri, Nov 26, 2021 at 5:11 PM Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> wrote:
Hi Sina, I get easily confused with cloud-init but shouldn't you be setting the hostname, username, etc before the custom script?
Also, you could rename the disk as a separate play in your playbook.
e.g.
# Change Disk Name - ovirt.ovirt.ovirt_disk: id: 00000000-0000-0000-0000-000000000000 storage_domain: data name: "new_disk_name" vm_name: rhel7
Regards, Paul S.
________________________________ From: Sina Owolabi <notify.sina@gmail.com> Sent: 26 November 2021 15:00 To: Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> Cc: users@ovirt.org <users@ovirt.org> Subject: Re: [ovirt-users] Re: Creating VMs from templates with their own disks
Caution External Mail: Do not click any links or open any attachments unless you trust the sender and know that the content is safe.
Thanks Paul.
I seem to be getting this by hand, but trying with ansible, I think my skills are a bit lacking. I can create with ansible, and it seems to work well, except for the fact that the new vm is created with the hostname of the vm from which the template was made. The disk is also named by the template. My ansiblle yaml is below and I'm pretty sure its wrong (especially where it needs to use cloud-init to inject the correct hostname, and the other prepping I would like to add). Please can you help correct me?
--- - hosts: ovirt.ovirt.mydom.internal tasks: - import_tasks: ovirt_auth.yml
- name: Creates new virtual machine ovirt.ovirt.ovirt_vm: auth: "{{ ovirt_auth }}" name: "{{ vm_fqdn }}" state: present clone: true cluster: lrg0-ovirt-cluster storage_domain: lrg0-ovirt-mydom-internal-Local memory: 16GiB cpu_cores: 8 cpu_sockets: 2 template: template-test00-centos8 type: server operating_system: other_linux sso: true disk_format: raw # disks: # - name: "{{ vm_fqdn }}-disk0" # bootable: true # nics: # - name: nic1 # boot_protocol: dhcp # interface: virtio # profile_name: "{{ net_profile_name }}" graphical_console: protocol: - spice - vnc cloud_init: custom_script: | host_name: "{{ vm_fqdn }}" user_name: myadmin user_password: <password> write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostnamectl)" >> /tmp/myhostname.txt
ipa-client-install --hostname=`hostname -f` \ --mkhomedir --domain=services.mydom.internal \ --realm=SERVICES.MYDOM.INTERNAL --no-ntp \ --principal=admin --password=<password> \ --enable-dns-updates --unattended runcmd: - [ /tmp/setup.sh, "{{ vm_fqdn }}" ]
On Wed, Nov 24, 2021 at 9:26 PM Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> wrote:
Hello Sina,
to use the template.
Create new VM and select the template.
Click the advanced options.
In the boot section you can set the HD to be the first boot devices and unselect any CD. In the Resource Allocation section, you can set the storage allocation to clone instead of thin ( this will create a copy of the template disk), you can also set the disk alias name.
you can also edit the template to make sure the HD is the first boot device.
I don't know what's in your ansible yaml definition.
Cloning is for copying VMs or snapshots not templates.
Regards,
Paul S. ________________________________ From: Sina Owolabi <notify.sina@gmail.com> Sent: 24 November 2021 09:28 To: Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> Cc: users@ovirt.org <users@ovirt.org> Subject: Re: [ovirt-users] Re: Creating VMs from templates with their own disks
Caution External Mail: Do not click any links or open any attachments unless you trust the sender and know that the content is safe.
Hello
Sorry for the late reply, work has been crazy.
This doesnt seem to work as advertised, or I am still not getting it. Either way I would really appreciate some help and guidance.
Steps I have attempted: 1. Create and configure VM as I want it to be (disk, partitioning, etc). 2. Shutdown the vm, create a template from it.
Cloning manually: Cloning fails with this message: Error while executing action: clone00.domain.tld:
Cannot add VM. One or more provided storage domains are either not in active status or of an illegal type for the requested operation.
I cant modify the storage allocation, and the disk its attempting to use is the disk of the source VM.
Manual template install: Choosing to install manually with a template requires me to add a new disk, and to boot off the CD (defined in the template) and manually set things up. This I do not wish to do, because I would rather automate.
Cloning with ansible, defining the cloud-init script and using the template: VM is successfully created, but logging in with remote-viewer drops me into the installation process (setting up from the attached ISO). Which is also not desired.
Please help me with what I am doing wrong. Again the goal is to have the vm setup with its own credentials.
On Thu, Nov 18, 2021 at 9:24 AM Staniforth, Paul <P.Staniforth@leedsbeckett.ac.uk> wrote:
Hello, The VMs can get created from a template otherwise the blank template is used if a particular template is used it can be thin dependent VM the VMs disks is linked to the Templates disk and it just carries the changes made in the VMs disk (this is quicker and uses less space if you a lot of disks). The other option is to create a cloned VM and this will copy the Templates disk to the VM so it's no longer dependent.
In the ansible documentation look for the clone option. https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.ansib...
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ovirt.... Virtual Machine Management Guide oVirt is a free open-source virtualization solution for your entire enterprise https://eur02.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.ovirt.o... For the cloud-init does the cloud-init package need to be installed on the template image?
Regards,
Paul S. ________________________________ From: notify.sina@gmail.com <notify.sina@gmail.com> Sent: 18 November 2021 07:34 To: users@ovirt.org <users@ovirt.org> Subject: [ovirt-users] Re: Creating VMs from templates with their own disks
Caution External Mail: Do not click any links or open any attachments unless you trust the sender and know that the content is safe.
Im sorry, I am trying to wrap my head around this but it is difficult.
I just want to be able to stand up new vms, with their own storage, similar to how I can with plain vanilla KVM, with a template or without, maybe even with a kickstart, and hopefully with ansible.
Right now anytime I try to create a VM, using the template, (with ansible), it gets the template disk attached, and from the console I see the new vm is named as the vm I created the template with. Cloud init script that is meant to rename the vm, and join it to IPA, is ignored.
If I create storage for the vm, before creating it, both the template storage and the new storage are attached to the vm, which is also confusing. Cloud init is also ignored.
I didn't think something this straightforward would end up needing a shift in thinking about how vms are created, especially with a product that's more than likely using kvm under the hood.
I would appreciate some straightforward guiding steps, if I can get them. Really. It's been a frustrating week.
On 2021-11-17 13:50, Sina Owolabi wrote:
You can create a template with no disk, then VM's created from that template will also have no disk. Then add a new disk to the VM after you create it. This is how the default blank template works. You can also create a template with an empty disk, then every VM created will also get an empty disk by default. You can always rename disks as well.
Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ovirt.... oVirt Code of Conduct: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ovirt.... List Archives: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.ovir... To view the terms under which this email is distributed, please go to:- https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fleedsbecke...
--
cordially yours,
Sina Owolabi
+2348176469061 To view the terms under which this email is distributed, please go to:- https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fleedsbecke...
--
cordially yours,
Sina Owolabi
+2348176469061 To view the terms under which this email is distributed, please go to:- https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fleedsbecke...
--
cordially yours,
Sina Owolabi
+2348176469061
--
cordially yours,
Sina Owolabi
+2348176469061 To view the terms under which this email is distributed, please go to:- https://leedsbeckett.ac.uk/disclaimer/email
_______________________________________________ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://www.ovirt.org/privacy-policy.html oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/ZUHT7Z7QV2U5MF...
-- cordially yours, Sina Owolabi +2348176469061

yaml is picky... write_files: - path: /tmp/setup.sh permissions: '0755' content: | permissions & content should be on the same indentation with path: - path permissions content What is the error you receive ? Best Regards,Strahil Nikolov On Sat, Nov 27, 2021 at 1:19, Sina Owolabi<notify.sina@gmail.com> wrote: _______________________________________________ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://www.ovirt.org/privacy-policy.html oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/HLTC34PWJICMOL...

No errors at all Same results again Screenshot attached for a better view, but this is where it's at right now: ---- sso: true disk_format: raw graphical_console: protocol: - spice - vnc cloud_init: regenerate_ssh_keys: true host_name: "{{ vm_fqdn }}" dns_search: mydom.internal dns_servers: <dns ip1> <dns ip2> custom_script: | write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostname -f)" >> /tmp/myhostname.txt ipa-client-install --hostname=`hostname -f` \ --mkhomedir --domain=services.mydom.internal \ --realm=SERVICES.MYDOM.INTERNAL --no-ntp \ --principal=admin --password=<password> \ --enable-dns-updates --unattended user_name: mydomadmin root_password: <password> - name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}" On Sat, Nov 27, 2021 at 12:51 AM Strahil Nikolov <hunter86_bg@yahoo.com> wrote:
yaml is picky...
write_files: - path: /tmp/setup.sh permissions: '0755' content: |
permissions & content should be on the same indentation with path:
- path permissions content
What is the error you receive ?
Best Regards, Strahil Nikolov
On Sat, Nov 27, 2021 at 1:19, Sina Owolabi <notify.sina@gmail.com> wrote: _______________________________________________ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://www.ovirt.org/privacy-policy.html oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/HLTC34PWJICMOL...
-- cordially yours, Sina Owolabi +2348176469061

Does it work when you remove the 'custom_script' section ? Best Regards,Strahil Nikolov On Sat, Nov 27, 2021 at 7:35, Sina Owolabi<notify.sina@gmail.com> wrote: No errors at all Same results again Screenshot attached for a better view, but this is where it's at right now: ---- sso: true disk_format: raw graphical_console: protocol: - spice - vnc cloud_init: regenerate_ssh_keys: true host_name: "{{ vm_fqdn }}" dns_search: mydom.internal dns_servers: <dns ip1> <dns ip2> custom_script: | write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostname -f)" >> /tmp/myhostname.txt ipa-client-install --hostname=`hostname -f` \ --mkhomedir --domain=services.mydom.internal \ --realm=SERVICES.MYDOM.INTERNAL --no-ntp \ --principal=admin --password=<password> \ --enable-dns-updates --unattended user_name: mydomadmin root_password: <password> - name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}" On Sat, Nov 27, 2021 at 12:51 AM Strahil Nikolov <hunter86_bg@yahoo.com> wrote:
yaml is picky...
write_files: - path: /tmp/setup.sh permissions: '0755' content: |
permissions & content should be on the same indentation with path:
- path permissions content
What is the error you receive ?
Best Regards, Strahil Nikolov
On Sat, Nov 27, 2021 at 1:19, Sina Owolabi <notify.sina@gmail.com> wrote: _______________________________________________ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://www.ovirt.org/privacy-policy.html oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/HLTC34PWJICMOL...
-- cordially yours, Sina Owolabi +2348176469061

I seem to have been able to overcome yaml problems, and I am able to successfully create Centos8 VMs with cloud-init. My one remaining challenge is successfully renaming the VM disk alias, which fails with the error below. Would really appreciate help with this. My current playbook looks like what’s below, --- - hosts: ovirt.ovirt.mydom.internal tasks: - import_tasks: ovirt_auth.yml - name: Creates new virtual machine ovirt.ovirt.ovirt_vm: auth: "{{ ovirt_auth }}" name: "{{ vm_fqdn }}" state: running clone: true cluster: lrg0-ovirt-cluster storage_domain: lrg0-ovirt-mydom-internal-Local template: template-test00-centos8 type: server disk_format: raw nics: - name: eth0 boot_protocol: dhcp interface: virtio profile_name: "{{ net_profile_name }}" graphical_console: protocol: - spice - vnc cloud_init: regenerate_ssh_keys: true host_name: "{{ vm_fqdn }}" user_name: mydomadmin root_password: <password> dns_search: services.mydom.internal mydom.internal dns_servers: 10.200.20.4 10.200.20.6 custom_script: | write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostnamectl )" > /tmp/echos.txt ipa-client-install --hostname=$(hostname -f) \ --server=ipa0.services.mydom.internal \ --mkhomedir --domain=service.mydom.internal \ --realm=SERVICES.mydom.INTERNAL --no-ntp \ --principal=admin --password=<password> \ --enable-dns-updates --unattended # auto-mount stuff cat << EOF >> /etc/auto.misc * -rw,fstype=nfs nfs1.services.mydom.internal:/share/& EOF sed -i 's/\/misc/\/share/' /etc/auto.master setsebool -P use_nfs_home_dirs on systemctl enable --now autofs systemctl start autofs runcmd: - [ /tmp/setup.sh, "{{ vm_fqdn }}" ] - name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}" - name: Rename disk ovirt.ovirt.ovirt_disk: auth: "{{ ovirt_auth }}" id: "{{ vm_info.ovirt_vms[0].id }}" storage_domain: lrg0-ovirt-mydom-internal-Local name: "{{ vm_fqdn }}-osdisk0" vm_name: "{{ vm_fqdn }}" Error: TASK [Rename disk] ********************************************************************************************************************************************************************* An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ovirtsdk4.Error: Fault reason is "Incomplete parameters". Fault detail is "Disk [provisionedSize] required for add". HTTP response code is 400. [WARNING]: Module did not set no_log for pass_discard fatal: [ovirt.ovirt.trove.internal]: FAILED! => {"changed": false, "msg": "Fault reason is \"Incomplete parameters\". Fault detail is \"Disk [provisionedSize] required for add\". HTTP response code is 400."} PLAY RECAP *****************************************************************************************************************************************************************************
On 27 Nov 2021, at 23:38, Strahil Nikolov <hunter86_bg@yahoo.com> wrote:
Does it work when you remove the 'custom_script' section ?
Best Regards, Strahil Nikolov
On Sat, Nov 27, 2021 at 7:35, Sina Owolabi <notify.sina@gmail.com> wrote: No errors at all Same results again Screenshot attached for a better view, but this is where it's at right now: ---- sso: true disk_format: raw graphical_console: protocol: - spice - vnc cloud_init: regenerate_ssh_keys: true host_name: "{{ vm_fqdn }}" dns_search: mydom.internal dns_servers: <dns ip1> <dns ip2> custom_script: | write_files: - path: /tmp/setup.sh permissions: '0755' content: | #!/bin/bash echo "$(hostname -f)" >> /tmp/myhostname.txt ipa-client-install --hostname=`hostname -f` \ --mkhomedir --domain=services.mydom.internal \ --realm=SERVICES.MYDOM.INTERNAL --no-ntp \ --principal=admin --password=<password> \ --enable-dns-updates --unattended user_name: mydomadmin root_password: <password>
- name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}"
On Sat, Nov 27, 2021 at 12:51 AM Strahil Nikolov <hunter86_bg@yahoo.com <mailto:hunter86_bg@yahoo.com>> wrote:
yaml is picky...
write_files: - path: /tmp/setup.sh permissions: '0755' content: |
permissions & content should be on the same indentation with path:
- path permissions content
What is the error you receive ?
Best Regards, Strahil Nikolov
On Sat, Nov 27, 2021 at 1:19, Sina Owolabi <notify.sina@gmail.com <mailto:notify.sina@gmail.com>> wrote: _______________________________________________ Users mailing list -- users@ovirt.org <mailto:users@ovirt.org> To unsubscribe send an email to users-leave@ovirt.org <mailto:users-leave@ovirt.org> Privacy Statement: https://www.ovirt.org/privacy-policy.html <https://www.ovirt.org/privacy-policy.html> oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ <https://www.ovirt.org/community/about/community-guidelines/> List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/HLTC34PWJICMOL... <https://lists.ovirt.org/archives/list/users@ovirt.org/message/HLTC34PWJICMOLLVCZBE44XOZG7TGWU7/>
--
cordially yours,
Sina Owolabi
+2348176469061

On Sun, Nov 28, 2021 at 3:44 AM Sina Owolabi <notify.sina@gmail.com> wrote:
- name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}"
here above you get an empty disk_attachments field. You have to add fetch_nested: true to traverse and get the disk attachments values Eg: - name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" fetch_nested: true register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}"
- name: Rename disk ovirt.ovirt.ovirt_disk: auth: "{{ ovirt_auth }}" id: "{{ vm_info.ovirt_vms[0].id }}" storage_domain: lrg0-ovirt-mydom-internal-Local name: "{{ vm_fqdn }}-osdisk0" vm_name: "{{ vm_fqdn }}"
Here, supposing from pattern filter above you get only 1 VM so you can use index 0 and you get only 1 disk inside the VM and you can use index 0 also for disk, you can use: See also "ansible-doc ovirt_vm_info" help page, where you can filter the nested_attributes... Then the rename disk task would become - name: Rename disk ovirt.ovirt.ovirt_disk: auth: "{{ ovirt_auth }}" id: "{{ vm_info.ovirt_vms[0].disk_attachments[0].id }}" storage_domain: lrg0-ovirt-mydom-internal-Local name: "{{ vm_fqdn }}-osdisk0" vm_name: "{{ vm_fqdn }}" This works for me in a 4.4.7 test environment HIH, Gianluca

Amazing. Thanks! Works! No to figure out how to create multiple vms at a time! On Sun, Nov 28, 2021 at 2:32 PM Gianluca Cecchi <gianluca.cecchi@gmail.com> wrote:
On Sun, Nov 28, 2021 at 3:44 AM Sina Owolabi <notify.sina@gmail.com> wrote:
- name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}"
here above you get an empty disk_attachments field. You have to add fetch_nested: true to traverse and get the disk attachments values
Eg: - name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" fetch_nested: true register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}"
- name: Rename disk ovirt.ovirt.ovirt_disk: auth: "{{ ovirt_auth }}" id: "{{ vm_info.ovirt_vms[0].id }}" storage_domain: lrg0-ovirt-mydom-internal-Local name: "{{ vm_fqdn }}-osdisk0" vm_name: "{{ vm_fqdn }}"
Here, supposing from pattern filter above you get only 1 VM so you can use index 0 and you get only 1 disk inside the VM and you can use index 0 also for disk, you can use: See also "ansible-doc ovirt_vm_info" help page, where you can filter the nested_attributes... Then the rename disk task would become
- name: Rename disk ovirt.ovirt.ovirt_disk: auth: "{{ ovirt_auth }}" id: "{{ vm_info.ovirt_vms[0].disk_attachments[0].id }}" storage_domain: lrg0-ovirt-mydom-internal-Local name: "{{ vm_fqdn }}-osdisk0" vm_name: "{{ vm_fqdn }}"
This works for me in a 4.4.7 test environment
HIH, Gianluca
-- cordially yours, Sina Owolabi +2348176469061

I would put that code in vm_create.yml and then you can: - name: Create VMs include_tasks: vm_create.yml loop: - VM1 - VM2 loop_control: loop_var: vm_name Then inside your vm_create.yml you will use "{{ vm_name }}" as the name of the VM. Best Regards,Strahil Nikolov On Sun, Nov 28, 2021 at 16:42, Sina Owolabi<notify.sina@gmail.com> wrote: Amazing. Thanks! Works! No to figure out how to create multiple vms at a time! On Sun, Nov 28, 2021 at 2:32 PM Gianluca Cecchi <gianluca.cecchi@gmail.com> wrote:
On Sun, Nov 28, 2021 at 3:44 AM Sina Owolabi <notify.sina@gmail.com> wrote:
- name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}"
here above you get an empty disk_attachments field. You have to add fetch_nested: true to traverse and get the disk attachments values
Eg: - name: Print vm attributes ovirt.ovirt.ovirt_vm_info: auth: "{{ ovirt_auth }}" pattern: name="{{ vm_fqdn }}" fetch_nested: true register: vm_info - debug: msg: "{{ vm_info.ovirt_vms[0] }}"
- name: Rename disk ovirt.ovirt.ovirt_disk: auth: "{{ ovirt_auth }}" id: "{{ vm_info.ovirt_vms[0].id }}" storage_domain: lrg0-ovirt-mydom-internal-Local name: "{{ vm_fqdn }}-osdisk0" vm_name: "{{ vm_fqdn }}"
Here, supposing from pattern filter above you get only 1 VM so you can use index 0 and you get only 1 disk inside the VM and you can use index 0 also for disk, you can use: See also "ansible-doc ovirt_vm_info" help page, where you can filter the nested_attributes... Then the rename disk task would become
- name: Rename disk ovirt.ovirt.ovirt_disk: auth: "{{ ovirt_auth }}" id: "{{ vm_info.ovirt_vms[0].disk_attachments[0].id }}" storage_domain: lrg0-ovirt-mydom-internal-Local name: "{{ vm_fqdn }}-osdisk0" vm_name: "{{ vm_fqdn }}"
This works for me in a 4.4.7 test environment
HIH, Gianluca
-- cordially yours, Sina Owolabi +2348176469061 _______________________________________________ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://www.ovirt.org/privacy-policy.html oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/XNBRIBAOLD4GK5...
participants (3)
-
Gianluca Cecchi
-
Sina Owolabi
-
Strahil Nikolov