# Getting data from json format

**URL:** <https://forum.ansible.com/t/getting-data-from-json-format/13162>\
**Category:** Ansible Project\
**Created:** [July 19, 2013, 10:44am UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162 "2013-07-19T10:44:25Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![P11](https://avatars.discourse-cdn.com/v4/letter/p/a9adbd/32.png) [@P11](https://forum.ansible.com/u/P11)\
**Post date:** [July 19, 2013, 10:44am UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/1 "2013-07-19T10:44:25Z")

</div>

Hi all,

I have just discovered ansible and I must admit in certain tasks it this way easier to use ansible than puppet 🙂  
It is really stunning how easy are some tasks - thanks guys 🙂

I am trying to get some data from nodes. I have just run

> ansible -m setup node100

but I get output in json (I guess):

> node100 | success \>\> {  
> “ansible\_facts”: {  
> “ansible\_all\_ipv4\_addresses”: [  
> “x.x.x.x”  
> ],  
> “ansible\_architecture”: “x86\_64”,  
> …

> …

Is there any **easy** way to read data from particular fields, i.e.:  
var1 = ansible\_facts → ansible\_all\_ipv4\_addresses  
Python-native way:  
(var1, var2, var3) = (ansible\_facts → ansible\_all\_ipv4\_addresses, ansible\_facts → …, ansible\_facts → …)  
would be ideal 😉

Thanks  
Przemek

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 19, 2013, 11:38am UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/2 "2013-07-19T11:38:02Z")

</div>

If you want to use this in a playbook or template, this is pretty straightforward.

Jinja2 evaluation is basically Python. The only thing is you can’t do list comprehensions.

First element:

{{ ansible\_all\_ipv4\_addresses[0] }}

---

<div class="post-metadata">

**Author:** ![P11](https://avatars.discourse-cdn.com/v4/letter/p/a9adbd/32.png) [@P11](https://forum.ansible.com/u/P11)\
**Post date:** [July 19, 2013, 11:48am UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/3 "2013-07-19T11:48:12Z")

</div>

At first I wanted to use it in the CLI (listing some facts about nodes) so I guess I need to download some external json parser.  
Am I right ?

Regarding using it in a playbook/template: can you provide simple but full example how to use it ?

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 19, 2013, 12:01pm UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/4 "2013-07-19T12:01:03Z")

</div>

“Regarding using it in a playbook/template: can you provide simple but full example how to use it ?”

[http://ansibleworks.com/docs](http://ansibleworks.com/docs)

---

<div class="post-metadata">

**Author:** ![P11](https://avatars.discourse-cdn.com/v4/letter/p/a9adbd/32.png) [@P11](https://forum.ansible.com/u/P11)\
**Post date:** [July 19, 2013, 12:54pm UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/5 "2013-07-19T12:54:59Z")

</div>

Does anybody know how to parse the output from the following command ?  
ansible groupofhosts -m setup -a ‘filter=some\_filter’  
?

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 19, 2013, 1:52pm UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/6 "2013-07-19T13:52:31Z")

</div>

Why do you want to parse the output of this command?

---

<div class="post-metadata">

**Author:** ![P11](https://avatars.discourse-cdn.com/v4/letter/p/a9adbd/32.png) [@P11](https://forum.ansible.com/u/P11)\
**Post date:** [July 19, 2013, 2:40pm UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/7 "2013-07-19T14:40:54Z")

</div>

To gather config data from nodes for further analysis.

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 19, 2013, 3:03pm UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/8 "2013-07-19T15:03:35Z")

</div>

Ok, so the API is great for that.

You also have --tree mode to dump things into individual JSON files per host.

---

<div class="post-metadata">

**Author:** ![P11](https://avatars.discourse-cdn.com/v4/letter/p/a9adbd/32.png) [@P11](https://forum.ansible.com/u/P11)\
**Post date:** [July 19, 2013, 3:13pm UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/9 "2013-07-19T15:13:26Z")

</div>

Where I could read about it ?  
Any example program ?

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 19, 2013, 3:55pm UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/10 "2013-07-19T15:55:24Z")

</div>

ansible with the --help flag, then just try the option.

It will output JSON files into the specified directory with one file per hostname.

---

<div class="post-metadata">

**Author:** ![P11](https://avatars.discourse-cdn.com/v4/letter/p/a9adbd/32.png) [@P11](https://forum.ansible.com/u/P11)\
**Post date:** [July 19, 2013, 4:06pm UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/11 "2013-07-19T16:06:26Z")

</div>

Oh I see Michael - I am testing the “tree” option now 🙂  
I was asking about API: docs + examples.

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [July 19, 2013, 8:13pm UTC](https://forum.ansible.com/t/getting-data-from-json-format/13162/12 "2013-07-19T20:13:16Z")

</div>

Yeah /usr/bin/ansible is a pretty self explanatory example of the Runner API.

I would look at that closely.
