#!/usr/bin/python # -*- coding: utf-8 -*- from ansible.module_utils.basic import AnsibleModule def main(): module = AnsibleModule( argument_spec=dict( vm_names=dict(required=True, type='str'), ) ) vm_names = module.params['vm_names'].split(',') facts = [] valid_num = 0 for vm_name in vm_names: cmd = "virsh domifaddr %s --interface eth0 --source agent | awk -F'[ /]+' '/eth0/{print $5}'" % (vm_name.strip()) try: rc, out, err = module.run_command(cmd, use_unsafe_shell=True) if rc != 0: module.fail_json( msg='error get kvm ip address, cmd=%s, rc=%d, out=%s, err=%s' % (cmd, rc, out, err)) ip_addr = out.strip('\n') if len(ip_addr) != 0: facts.append(dict( name=vm_name, ip=ip_addr, )) valid_num += 1 except Exception as exc: module.fail_json( msg='error get kvm ip address, cmd=%s, err=%s' % (cmd, str(exc))) module.exit_json( changed=False, result=str(facts), valid_num=valid_num, msg="success get kvm ip address" ) main()