I ran into one snag when testing full backups overnight.  Exporting a large VM failed. I checked logs and discovered that it was due to an ansible timeout, but not in my playbook.  I increased the timeout by creating /etc/ovirt-engine/engine.conf.d/99-ansible-playbook-timeout.conf  on hosted engine and will give it another try.

On Thu, Jan 23, 2020 at 11:52 AM Jayme <jaymef@gmail.com> wrote:
Jan,

I just ran a quick test with your suggestion and it seems like it is working as intended.  I need to do more testing with it but it looks like this may well be a viable solution:

---
- hosts: localhost
  connection: local

  vars:
    host: hostX
    cluster: default
    directory: '/backup/'
    ova_ext: ova
    vms:
      - ovatest
      - ovatest2

  tasks:
    - name: Backup VMs
      include_tasks: backup-test.yml
      loop: "{{ vms }}"


backup-test.yml:

---

- name: "Export VM to OVA"
  ovirt_vm:
    auth: "{{ ovirt_auth }}"
    name: "{{ item }}"
    state: exported
    cluster: "{{ cluster }}"
    export_ova:
        host: "{{ host }}"
        filename: "{{ item }}.{{ ova_ext }}"
        directory: "{{ directory }}"

- name: "Wait for export to finish"
  wait_for:
    path: "/backup/vm.ova"  # will change to using vars here

The backup folder isn't accessible from where I'm running ansible from so I will need to check it remotely but that should be easy to solve.

On Thu, Jan 23, 2020 at 11:43 AM Jan Zmeskal <jzmeskal@redhat.com> wrote:
Hi Jayme,

let us know how it went. Anyway, if you ever run into hard timeout, don't despair. It also happened to me once when working with Ansible oVirt modules and I just created an issue on GitHub where I requested this timeout to be changed from hard-coded value to a configurable parameter with some reasonable default. It was implemented rather quickly.

Jan

On Thu, Jan 23, 2020 at 4:32 PM Jayme <jaymef@gmail.com> wrote:
That may work since the file will be tmp until finished being written. I was also just looking at the ovirt event info module https://docs.ansible.com/ansible/latest/modules/ovirt_event_info_module.html#ovirt-event-info-module -- I was thinking that I might be able to watch the event info wait on the event which shows the export was successful i.e. Vm X was exported successfully as a Virtual Appliance to path....

There is also the event index which could be useful in terms of getting a starting point for the event search.  

I thought there would be a module or API for the running oVirt task list but so far I haven't been able to find any way to get info on oVirt tasks.

I'll see if I can get something working with your suggestion and keep looking at API and ansible modules to see which make sense to use.  

I'm also worried that timeout issues may occur if I start waiting in some cases an hour or more for very large VM backups to complete before moving on to the next with ansible. 

Thanks!

Jayme

On Thu, Jan 23, 2020 at 10:00 AM Jan Zmeskal <jzmeskal@redhat.com> wrote:
Hi Jayme,

here's my idea. I haven't tested it but I believe it should work.
1. Create a new task file (let's call it export_vm.yaml) and include two tasks in there:
1.1. First task uses ovirt_vm module (pretty much what you already have) to export VM
1.2. Second task uses wait_for module (specifically its path parameter) to wait until the OVA file in /backup exists
2. Loop over those two tasks as explained here.

Hope this helps.

Jan

On Wed, Jan 22, 2020 at 4:15 PM Jayme <jaymef@gmail.com> wrote:

I wrote a simple task that is using the ovirt_vm module https://docs.ansible.com/ansible/latest/modules/ovirt_vm_module.html -- it essentially loops over a list of vms and exports them to OVA.

The problem I have is the task is deemed changed once it successfully submits the export task to oVirt. This means that if I gave it a list of 100 Vms I believe it would start an export task on all of them. I want to prevent this and have it only export one VM at a time. In order to do this I believe I will need to find a way for the task to wait and somehow verify that the export was completed before submitting a task for the next VM export.

Any ideas?

- name: Export the VM
  ovirt_vm:
    auth: "{{ ovirt_auth }}"
    name: "{{ item }}"
    state: exported
    cluster: default
    export_ova:
        host: Host0
        filename: "{{ item }}"
        directory: /backup/
  with_items: "{{ vms }}"
_______________________________________________
Users mailing list -- users@ovirt.org
To unsubscribe send an email to users-leave@ovirt.org
Privacy Statement: https://www.ovirt.org/site/privacy-policy/
oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/
List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/PXYAQ7YEBQCUWCAQCFAFXB3545LNB23X/


--

Jan Zmeskal

Quality Engineer, RHV Core System

Red Hat



--

Jan Zmeskal

Quality Engineer, RHV Core System

Red Hat