Ansible JSON module?

143 views
Skip to first unread message

Synaesthete

unread,
Jul 31, 2014, 4:33:46 PM7/31/14
to ansible...@googlegroups.com
Is there a module for manipulating JSON data? Say I have a settings file that's written in JSON, and I'd like to set or modify a value. As a task, this might look like:

- name: Modify author name
  json
: src=config.json key=author.name value='rvang'



Michael DeHaan

unread,
Jul 31, 2014, 5:35:17 PM7/31/14
to ansible...@googlegroups.com
Nothing in core presently.

I'd probably be open to it.  Can't remember what my comments were WRT this in the past.

Probably needs to be pseudo-XPATHey in nature.




--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/195cd200-5e46-476f-ba38-cb61372dee81%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Brian Coca

unread,
Jul 31, 2014, 5:39:49 PM7/31/14
to ansible...@googlegroups.com
its soooo easy to write json with jinja templates.​

Michael DeHaan

unread,
Jul 31, 2014, 5:41:30 PM7/31/14
to ansible...@googlegroups.com
I'm assuming this was a request to replace some keys inside of them.

In most cases yes, if you have a datastructure defined in Ansible - and ansible can read almost any data file as JSON instead of YAML too - not that this matters,

{{ datastructure }}

is all the template needs to be.

I was assuming this was about config file changes, but if you can use a template, it's better to fully declare the desired end result 99.999% of the time.    Good point.


On Thu, Jul 31, 2014 at 5:39 PM, Brian Coca <bria...@gmail.com> wrote:
its soooo easy to write json with jinja templates.​

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.

Synaesthete

unread,
Jul 31, 2014, 6:52:31 PM7/31/14
to ansible...@googlegroups.com
I tend to take the template route almost all the time. This is in regard to modifying JSON-based configuration files. I compose several roles and run them against a host. Each role might do something very distinct, while they all modify a common configuration file or add information to a meta-data file. Since I have several roles none of which know about one-another, yet all need to add some relevant data to a common JSON-based configuration file, it would be convenient to edit this data directly since there's really no single role from where I can define a master template.

Synaesthete

unread,
Jul 31, 2014, 7:11:19 PM7/31/14
to ansible...@googlegroups.com
So are there any examples of a playbook or role that loads some JSON data from a file, works with that data, then writes it back out using a simple template like {{ data_structure }} ? What set of tasks could perform this?

Michael DeHaan

unread,
Jul 31, 2014, 7:55:20 PM7/31/14
to ansible...@googlegroups.com
Not really.

set_fact mostly allows replacing variables but doesn't have a good facility for what you speak of.

What you speak of might be dealt with with something like action_plugin theoretically like "set_hash_entry" that took a hash, a key, and value, maybe.
It gets a little programmy that way though.  Not trying to fight it, just not sure it's the best way.

Maybe others have ideas on how to get creative.


Synaesthete

unread,
Jul 31, 2014, 9:02:05 PM7/31/14
to ansible...@googlegroups.com
I see. Maybe I'll try my hand at writing a module. I'll drop a link to a github repo when that happens.
Reply all
Reply to author
Forward
0 new messages