This worked for me: --- - hosts: localhost connection: local vars_files: - ../vars.yml
tasks: - name: Obtain SSO token ovirt_auth: url: "{{ url }}" username: "{{ username }}" password: "{{ password }}" insecure: "{{ insecure }}" - name: List vms ovirt_vms_facts: fetch_nested: true nested_attributes: - description auth: "{{ ovirt_auth }}" - name: set vms set_fact: vm: "{{ item.name }}: {{ item.snapshots | map(attribute='description') | join(',') }}" with_items: "{{ ovirt_vms }}" loop_control: label: "{{ item.name }}" register: all_vms - name: make a list set_fact: vms="{{ all_vms.results | map(attribute='ansible_facts.vm') | list }}" - name: Print vms debug: var: vms Can you please open an issue on Ansible github[1], and describe what exactly issue do you have? Thanks! [1] https://github.com/ansible/ansible/issues On Fri, May 12, 2017 at 7:11 PM, Nathanaël Blanchet <blanc...@abes.fr> wrote: > Great, it works like a charm! > > But how could I obtain a several map display? > > For example, I need to display the vm name ; its relative snaphost id and > snaphot description. > > I tried to change filter, but notyhing works > > msg: "{{ ovirt_snapshots | map(attribute='description') | > map(attribute='id') | join(' ') }}" > > or something like > > msg: "{{ ovirt_snapshots.vm | map(attribute='name') | map(attribute='id') > | join(' ') }}" > > Thanks for helping. > > ps: I tried nearly all modules, and the permissions one is bugged, only > internal-authz domain displays users, none of ldap one can display. > > Le 11/05/2017 à 20:14, Ondra Machacek a écrit : > > I am not Ansible expert, this maybe worth asking on Ansible users list, > but one thing which you can do is following: > > in tasks/main.yml > > - include: "{{ item }}" > with_items: "{{ resources | default('vms') }}.yml" > > then have following files: > - tasks/vms.yml > - tasks/clusters.yml > - tasks/disks.yml > - ... > > then run it as: > > $ ansible-playbook -e "resources: [vms,disks]" play.yml > $ ansible-playbook -e "resources: [clusters] clusters_pattern=name=x*" > play.yml > > > On Thu, May 11, 2017 at 6:34 PM, Nathanaël Blanchet <blanc...@abes.fr> > wrote: > >> Thanks, all works as expected. >> >> Now, I try make roles. >> >> here it is : >> >> *cat /etc/ansible/roles/ovirt_vm_facts/tasks/main.yml* >> >> - name: get vm facts >> ovirt_vms_facts: >> auth: >> url: https://{{ engine }}.v100.abes.fr/ovirt-engine/api >> username: "{{ username }}" >> password: "{{ password }}" >> insecure: "{{ insecure }}" >> pattern: "{{ pattern }}" >> - debug: >> msg: "{{ ovirt_vms | map(attribute='name') | join(' ') }}" >> >> *cat /etc/ansible/roles/ovirt_vm_facts/vars/main.yml* >> >> pattern: "os=rhel_5x64 or os=rhel_5" >> engine: air >> username: admin@internal >> password: ovirt123 >> insecure: true >> >> and I call those files with */tmp/ovirt_vm_facts.yml* with extra >> variables if needed >> >> - hosts: localhost >> connection: local >> roles: >> - ovirt_vm_fact >> >> running ansible-playbook /tmp/ovirt_vm_facts.ym -e 'pattern="name=acier* >> and cluster=Dev"' >> >> *But..* >> >> I don't want to do the same for each ansible module shipped with 2.3. >> >> Knowing that each *facts module has the same structure auth/pattern, is >> there a way to play a generic playbook independant from the role, like: >> >> - hosts: localhost >> connection: local >> roles: >> - ovirt_facts (with somewhere a variable "myfact") >> >> which would play an unique role >> */etc/ansible/roles/ovirt_facts/tasks/main.yml >> with* >> >> >> - name: get vm facts >> myfact >> auth: >> .... >> >> Hope to be clear enough, thank your for your help. >> >> Le 10/05/2017 à 13:14, Ondra Machacek a écrit : >> >> >> >> On Wed, May 10, 2017 at 12:38 PM, Nathanaël Blanchet <blanc...@abes.fr> >> wrote: >> >>> Le 10/05/2017 à 10:29, Ondra Machacek a écrit : >>> >>> Not sure I understand. You can use Ansible module to list VMs, you >>> can use ovirt_vms _facts[1] module. >>> >>> For example to get only stopped VMs, you can use following: >>> >>> - name: Get stopped VMs >>> ovirt_vms_facts: >>> auth: >>> url: https://ovirt.example.com/ovirt-engine/api >>> username: admin@internal >>> password: password >>> ca_file: /etc/pki/ovirt-engine/ca.pem >>> pattern: "status = down" >>> >>> I want a list of vms sorted by any possible attributes, i.e. sorted by >>> datacenter or cluster, not only by status. >>> >>> - For example, ovirt_vms_facts doesn't allow to get the datacenter >>> the vm belongs to , and the pattern filter doesn't return a list of vms >>> as >>> expected: >>> >>> >>> - hosts: localhost >>> connection: local >>> tasks: >>> - name: Get stopped VMs >>> ovirt_vms_facts: >>> auth: >>> url: https://acore.v100.abes.fr/ovirt-engine/api >>> username: admin@internal >>> password: ovirt123 >>> insecure: true >>> pattern: name=centos* and cluster=west >>> - debug: >>> var: ovirt_vms >>> - shell: echo "{{ ovirt_vms.name }}" >>> >> >> >> Ok, I understand, now. >> You have few options here. >> If you want for example only VMs from datacenter 'X', you can use >> following: >> >> - hosts: localhost >> connection: local >> tasks: >> - name: Get VMs from datacenter X >> ovirt_vms_facts: >> pattern: datacenter=X >> auth: >> url: https://acore.v100.abes.fr/ovirt-engine/api >> username: admin@internal >> password: ovirt123 >> insecure: true >> - debug: >> msg: "{{ ovirt_vms | map(attribute='name') | list }}" >> >> >>> >>> How can I successfully display this list of vms like described here : >>> name description returned type sample >>> ovirt_vms List of dictionaries describing the VMs. VM attribues are >>> mapped to dictionary keys, all VMs attributes can be found at following >>> url: https://ovirt.example.com/ovirt-engine/api/model#types/vm. On >>> success. list >>> >>> >>> - About the python SDK: >>> >>> list_vms.py could be what I expect, but vm.datacenter_name doesn't exist >>> >> >> Yes, because the 'data_center' parameter isn't part of the VM type. Take >> a look here[1], >> you will find there all attributes the VM has. As you can see there is no >> 'datacenter', but >> there is a 'cluster', but as said in documentation, it's just a reference >> to the cluster. That >> means that it contains the ID of the cluster and the 'href' to the >> cluster, so you can get >> the cluster object by following that reference using this code: >> >> vm_cluster = connection.follow_link(vm.cluster) >> print vm_cluster.name >> >> # Same for datacenter: >> vm_dc = connection.follow_link(vm_cluster.data_center) >> print vm_dc.name >> >> What you need to understand is, what is the difference between the 'full' >> object and the reference to the object. It's good to take a look at the >> XML >> output of the API and learn to read the API specification documentation, >> when working with oVirt Ansible and Python SDK. >> >> [1] http://ovirt.github.io/ovirt-engine-api-model/master/#types/vm >> >> >>> >>> >>> [1] http://docs.ansible.com/ansible/ovirt_vms_facts_module.html >>> >>> On Wed, May 10, 2017 at 10:13 AM, Nathanaël Blanchet <blanc...@abes.fr> >>> wrote: >>> >>>> Thanks, I knew this python script, but I believed it was possible to do >>>> the same with an ansible module. >>>> >>>> That's mean we need several tools to do different tasks, it is not a >>>> very convergent way to proceed... but it is feasable. >>>> >>>> Le 10/05/2017 à 07:56, Ondra Machacek a écrit : >>>> >>>> >>>> >>>> On Tue, May 9, 2017 at 6:52 PM, Nathanaël Blanchet <blanc...@abes.fr> >>>> wrote: >>>> >>>>> Hello, >>>>> >>>>> I didn't find anyway to easy list all my vms thanks to the ansible >>>>> modules... >>>>> I tried the ovirt4.py script which is able to list the whole facts, so >>>>> vms list, when the number of them is small in a test datacenter, but in a >>>>> production datacenter, I get an issue: >>>>> >>>>> File "./ovirt4.py", line 262, in <module> >>>>> main() >>>>> File "./ovirt4.py", line 254, in main >>>>> vm_name=args.host, >>>>> File "./ovirt4.py", line 213, in get_data >>>>> vms[name] = get_dict_of_struct(connection, vm) >>>>> File "./ovirt4.py", line 185, in get_dict_of_struct >>>>> (device.name, [ip.address for ip in device.ips]) for device in >>>>> devices >>>>> File "./ovirt4.py", line 185, in <genexpr> >>>>> (device.name, [ip.address for ip in device.ips]) for device in >>>>> devices >>>>> TypeError: 'NoneType' object is not iterable >>>>> >>>> >>>> This error was fixed already, try to download latest ovirt4.py file. >>>> >>>> The other way is to use fatcs[1] module. >>>> >>>> [1] http://docs.ansible.com/ansible/ovirt_vms_facts_module.html >>>> >>>> >>>>> >>>>> >>>>> What is the simpliest way to get this basic information with sdk4??? >>>>> (with sdk3 : ovirt-shell -E "list vms") >>>>> >>>> >>>> Please take a look at the following example: >>>> >>>> https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/e >>>> xamples/list_vms.py >>>> >>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Nathanaël Blanchet >>>>> >>>>> Supervision réseau >>>>> Pôle Infrastrutures Informatiques >>>>> 227 avenue Professeur-Jean-Louis-Viala >>>>> 34193 MONTPELLIER CEDEX 5 >>>>> Tél. 33 (0)4 67 54 84 55 >>>>> Fax 33 (0)4 67 54 84 14 >>>>> blanc...@abes.fr >>>>> >>>>> _______________________________________________ >>>>> Users mailing list >>>>> Users@ovirt.org >>>>> http://lists.ovirt.org/mailman/listinfo/users >>>>> >>>> >>>> >>>> -- >>>> Nathanaël Blanchet >>>> >>>> Supervision réseau >>>> Pôle Infrastrutures Informatiques >>>> 227 avenue Professeur-Jean-Louis-Viala >>>> 34193 MONTPELLIER CEDEX 5 >>>> Tél. 33 (0)4 67 54 84 55 >>>> Fax 33 (0)4 67 54 84 14blanc...@abes.fr >>>> >>>> >>> >>> -- >>> Nathanaël Blanchet >>> >>> Supervision réseau >>> Pôle Infrastrutures Informatiques >>> 227 avenue Professeur-Jean-Louis-Viala >>> 34193 MONTPELLIER CEDEX 5 >>> Tél. 33 (0)4 67 54 84 55 >>> Fax 33 (0)4 67 54 84 14blanc...@abes.fr >>> >>> >> >> -- >> Nathanaël Blanchet >> >> Supervision réseau >> Pôle Infrastrutures Informatiques >> 227 avenue Professeur-Jean-Louis-Viala >> 34193 MONTPELLIER CEDEX 5 >> Tél. 33 (0)4 67 54 84 55 >> Fax 33 (0)4 67 54 84 14blanc...@abes.fr >> >> > > -- > Nathanaël Blanchet > > Supervision réseau > Pôle Infrastrutures Informatiques > 227 avenue Professeur-Jean-Louis-Viala > 34193 MONTPELLIER CEDEX 5 > Tél. 33 (0)4 67 54 84 55 > Fax 33 (0)4 67 54 84 14blanc...@abes.fr > >
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users