On 2013-11-13, at 1456, David Lutterkort lut...@puppetlabs.com wrote:
I don't have any examples handy, but the easiest way to try out managing the
file with Puppet is to store it somewhere, say /tmp/file.json and then play
around with it in augtool:
That's what I eventually ended up doing, and after several hours of tinkering
with it I was able to come up with most of what I need - I have puppet
templates which store strings and numbers in the top-level dict within the
JSON file.
The last part is being able to maintain an array of dictionaries within the
top-level dict (in particular, an array of LDAP DN's.) In the file, it looks
like this:
{
server : hostname.domain.xyz ,
port : 12345 ,
groups : [
{ dn : cn=Users,dc=domain,dc=xyz } ,
{ dn : cn=Admins,dc=domain,dc=xyz }
]
}
In augtool, I am able to do the following:
set /augeas/load/Json/lens Json.lns
set /augeas/load/Json/incl /tmp/file.json
load
set /files/tmp/file.json/dict/entry[last()+1] 'groups'
touch /files/tmp/file.json/dict/entry[last()]/array
However, when I try to do it in Puppet:
augeas { groups_array :
incl= '/tmp/file.json' ,
lens= 'Json.lns' ,
changes = [
set dict/entry[last()+1] 'groups' ,
touch dict/entry[last()]/array ,
] ,
onlyif = match dict/entry[*][.='groups'] size == 0 ,
require = File['/tmp/file.json'] ,
}
I get the following error:
Error: /Stage[main]/Module::Groups/Augeas[groups_array]: Could not evaluate:
Unknown command touch
Does the Puppet augeas module not support the touch command at all? If not,
is there a way to declare an array like this, without declaring a member of the
array at the same time? The class itself declares the array, and it also
defines a template that another class will call one or more times to add items
to the array. Different machines will need different numbers of items in the
array, and some machines may not need any items at all.
The most frustrating thing to me is how little documentation there seems to be
out there, about using the JSON lens. The augeas web site doesn't list it with
the other lenses, and on the list of core lenses page it's there but the link
goes to a page which doesn't exist. I think it's amazing that I was able to
cobble together what I already have, and I think once I get this all figured
out, I'll have to write a page on my personal web site explaining it.
--
John Simpson j...@voalte.com
Unix System/VM Developer and Engineering Operations, Voalte
+1 (941) 312-2830 x148
--
You received this message because you are subscribed to the Google Groups
Puppet Users group.
To unsubscribe from this group and stop receiving emails from it, send an email
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/2534C0B3-444A-4F88-86A7-A67D6A57EC5B%40voalte.com.
For more options, visit https://groups.google.com/groups/opt_out.