[augeas-devel] Creation of plugin for Splunk configurations
Elias Ross
genman at noderunner.net
Thu Feb 2 09:24:01 UTC 2012
I ran a problem with needing to change a Splunk configuration file. I
use Puppet to install Splunk and primarily I'm interested in changing
just one file using its Augeas support but there is no lens. The
problem is explained mostly here:
http://splunk-base.splunk.com/answers/31010/ssl-is-working-for-forwarder-indexer-but-not-deployment-client-server-traffic
Internet search leads me to think people do want to use Augeas for
this, but it hasn't been written by anybody.
I tried using the default ini format, but this doesn't allow for / in
the section titles, which breaks things.
IRC chat I had:
genman I need help matching an .ini file with / in the section title ,
e.g. [tcp://9997]
Dominic genman: sorry, I'm just heading off but will quickly say: you
won't be able to store that as the node "key", only as a value
genman you can't do some tricky string manipulation I guess to change
/ to _ and visa-versa? hmm
Dominic node names/keys can only contain fairly simple strings as
they're used in paths. Usually the inifile lens will store section
titles as node names.
Dominic no
Dominic so you'd do: [ Util.del_str "[" . label "section" . store
/[^\]]+/ . Util.del_str "]" ] or similar I guess
Dominic if nobody else is around, then feel free to e-mail the list
at augeas-devel at redhat.com
genman okay, thanks ... I think an email would be better
So although I can kind of figure out what to do, if you had a good
example of how to do this, I would like to try it out.
The grammar is roughly like this:
(* Splunk module for Augeas
Author: Elias Ross <genman at noderunner.net>
splunk files are standard INI File.
*)
module Splunk =
autoload xfm
(************************************************************************
* INI File settings
*
* splunk.conf only supports "# as commentary and "=" as separator
*************************************************************************)
let comment = IniFile.comment "#" "#"
let sep = IniFile.sep "=" "="
(************************************************************************
* ENTRY
* splunk.conf uses standard INI File entries
*************************************************************************)
let entry = IniFile.indented_entry IniFile.entry_re sep comment
(************************************************************************
* RECORD
* splunk.conf uses standard INI File records
*************************************************************************)
let record_re = /[^]\n]+/
let title = IniFile.indented_title record_re
let record = IniFile.record title entry
(************************************************************************
* LENS & FILTER
* splunk.conf uses standard INI File records
*************************************************************************)
let lns = IniFile.lns record comment
let filter =
(incl "/opt/splunk/etc/system/local/*.conf")
. (incl "/opt/splunk/etc/users/*/search/local/*.conf")
. (incl "/opt/splunk/etc/apps/*/local/*.conf")
. (incl "/opt/splunk/etc/modules/*/classes/deployable/*.conf")
. (incl "/opt/splunkforwarder/etc/system/local/*.conf")
. Util.stdexcl
let xfm = transform lns filter
More information about the augeas-devel
mailing list