Hello Ondra what do you think about this question? 
ovirt4.py may need some modifications to get required IPs/hostnames when 
multiple vm has multiple interfaces ? 
Personalized hack works for me but I have to modify the file each time I 
upgrade AWX. 

De: "Gianluca Cecchi" <gianluca.cec...@gmail.com> 
À: "Nathanaël Blanchet" <blanc...@abes.fr> 
Cc: "users" <users@ovirt.org> 
Envoyé: Mercredi 18 Décembre 2019 17:21:40 
Objet: Re: [ovirt-users] AWX and error using ovirt as an inventory source 

On Thu, Nov 28, 2019 at 4:59 PM Nathanaël Blanchet < [ mailto:blanc...@abes.fr 
| blanc...@abes.fr ] > wrote: 





Hello gianluca, 



[snip] 

BQ_BEGIN



PS: Something else that may help, try to hack the ovirt4.py with ansible_host 
if you want to call the hosts into playbook by the hostname and not the first 
IP: 

vi 
/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/awx/plugins/inventory/ovirt4.py
 
'affinity_labels' : [ [ http://label.name/ | label.name ] for label in labels], 
## ajout NBT pour obtenir le nom de l'hote a la place de l ip 
'ansible_host' : [ http://vm.name/ | vm.name ] , 
'affinity_groups' : [ 




BQ_END

Hello, 
coming back to this PS of yours. 
in my case [ http://vm.name/ | vm.name ] is not always resolvable, so it is not 
so feasible. 
But also the default configuration of ansible_host seems quite unfortunate.... 
With the default configuration, I see that for VMs with 2 ips, it gets the eth1 
one, not matching the VM hostname and so the job fails because of unreachable 
host. 
So I'm trying substituting 
/var/lib/awx/venv/awx/lib/python3.6/site-packages/awx/plugins/inventory/ovirt4.py
 

from 
return { 
'id': [ http://vm.id/ | vm.id ] , 
'name': [ http://vm.name/ | vm.name ] , 
... 
'devices': dict( 
( [ http://device.name/ | device.name ] , [ip.address for ip in device.ips]) 
for device in devices if device.ips 
), 
'ansible_host': next((device.ips[0].address for device in devices if 
device.ips), None) 
} 

to: 
return { 
'id': [ http://vm.id/ | vm.id ] , 
'name': [ http://vm.name/ | vm.name ] , 
... 
'devices': dict( 
( [ http://device.name/ | device.name ] , [ip.address for ip in device.ips]) 
for device in devices if device.ips 
), 
'ansible_host': vm.fqdn 
} 

If I do this with my test tmp file I see that comparing output of command 

(py36) bash-4.4# ./ovirt4.py 

I have a new value for ansible_host, matching the fqdn of the VM 
But going into awx, the job continues to fail and also if I go to inventory -> 
sources and sync, even if I check all the "update options": 
OVERWRITE 
OVERWRITE VARIABLES 
UPDATE ON LAUNCH 

Still the vm contains ansible_host with the old value, matching the second 
interface and not the fqdn... 

Any suggestion? 

Gianluca 

_______________________________________________
Users mailing list -- users@ovirt.org
To unsubscribe send an email to users-le...@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/PIMIW6HDLQ5FBTGVWW6MIKJYLXAPI5QN/

Reply via email to