Dear oVirt,
In our software tests, we deploy oVirt VMs using ansible and teardown also using
ansible.
We noticed that each time we run nightly tests, using Jenkins user in ovirt, in one of the
Jobs, first task, creating VM, fails with following error,
TASK [Login to oVirt] **********************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The
error was: AuthError: Error during SSO authentication invalid_grant : The provided
authorization grant for the username and password has expired.
fatal: [PVyrZMy0-csm-2.avinity.tv<http://pvyrzmy0-csm-2.avinity.tv/> ->
localhost]: FAILED! => {"changed": false, "msg": "Error during
SSO authentication invalid_grant : The provided authorization grant for the username and
password has expired."}
Immediately after, Token seem to be renewed and all other VMs are created without issue.
The play looks like following:
---
# file: provision-ovirt.yml
- name: Create VM in OVirt
hosts: ovirt-vms
gather_facts: false
vars:
- state: running
pre_tasks:
- name: Login to oVirt
delegate_to: localhost
ovirt_auth:
url: "{{ ovirt_engine_url }}"
username: "{{ ovirt_engine_user }}"
password: "{{ ovirt_engine_password }}"
ca_file: "{{ ovirt_engine_cafile | default(omit) }}"
insecure: "{{ ovirt_engine_insecure | default(true) }}"
run_once: true
tasks:
- name: "Get agent keys"
delegate_to: localhost
command: ssh-add -L
register: ssh_agent_pubkeys
run_once: true
changed_when: False
- name: Create new VMs from template
delegate_to: localhost
ovirt_vm:
auth: "{{ ovirt_auth }}"
name: "{{ inventory_hostname_short }}"
nics:
- name: nic1
profile_name: tenant1
interface: virtio
cloud_init_nics:
- nic_name: eth0
nic_boot_protocol: dhcp
nic_on_boot: true
cloud_init:
host_name: "{{ inventory_hostname_short }}"
authorized_ssh_keys: "{{ ssh_agent_pubkeys.stdout }}"
state: "{{ state }}"
cluster: "{{ovirt_cluster}}"
template: "{{ images_to_template[os_image] }}"
instance_type: "{{ os_flavor_to_ovirt_instance_type[os_flavor] }}"
- name: "Wait until the ansible user can log into the host (cloud-init needs to
have finished)"
command: ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no
{{ansible_user}}@{{inventory_hostname}} exit
register: ssh_output
delegate_to: localhost
until: ssh_output.rc == 0
retries: 30
delay: 5
changed_when: False
post_tasks:
- name: Logout from oVirt
delegate_to: localhost
run_once: true
ovirt_auth:
state: absent
ovirt_auth: "{{ ovirt_auth }}"
tags:
- always
How does token relates to user session in oVirt? We would expect that once we logout,
token should be expired and upon new login just get renewed/new token to proceed.
Is it a bug? Is it in the play that we are doing something incorrectly?
Kindly awaiting your eply.
— — —
Met vriendelijke groet / Kind regards,
Marko Vrgotic