blob: cd8ed1cb12882040d170a6d8e95d1660c3ca1b86 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
ghetto_json
===========
Need a quick way to edit a JSON file in Ansible? Ansible has great built-in support for
ini files, but a number of more modern applications are using JSON for config files.
ghetto_json lets you make some types of edits to JSON files, and remains simple enough that
it's hopefully easier just to extend than to switch to a different module, and you won't feel
too guilty just copy-pasting it into your codebase.
Installation
------------
Drop ``ghetto_json`` into your playbook's ``library`` folder,
which can be [configured](https://docs.ansible.com/ansible/intro_configuration.html#library)
but defaults to ``./library`` inside a playbook.
Synopsis
--------
Make in-place changes to simple JSON documents,
without having to resort to ``replace``.
Requirements
------------
Python 2.7 may be required for some ``shlex`` functionality
(like working Unicode), which you probably don't care about.
Options
-------
#### path:
The file on the target to edit.
#### all other options:
A very simple object notation for the location of the property to edit,
and its new value.
Mandatory automatic conversion will be applied. Supported values:
* integers (``5``, ``-17``)
* ``true`` / ``false``
* ``null``
* ``unset`` will delete the key
Examples
--------
For the example JSON document ``/foo/bar.json`` containing:
````
{ "a": 5, "b": {"c": 6, "d": "hello" } }
````
...you can run an invocation like:
````
- ghetto_json:
path=/foo/bar.json
a=7
b.c=yellow
b.d=unset
````
...and the file will be left looking like:
````
{
"a": 7,
"b": {
"c": "yellow"
}
}
````
|