113 lines
3.1 KiB
Plaintext
113 lines
3.1 KiB
Plaintext
|
(* -*- coding: utf-8 -*-
|
||
|
Module: PuppetFileserver
|
||
|
Parses /etc/puppet/fileserver.conf used by puppetmasterd daemon.
|
||
|
|
||
|
Author: Frédéric Lespez <frederic.lespez@free.fr>
|
||
|
|
||
|
About: Reference
|
||
|
This lens tries to keep as close as possible to puppet documentation
|
||
|
for this file:
|
||
|
http://docs.puppetlabs.com/guides/file_serving.html
|
||
|
|
||
|
About: License
|
||
|
This file is licensed under the LGPL v2+, like the rest of Augeas.
|
||
|
|
||
|
About: Lens Usage
|
||
|
Sample usage of this lens in augtool
|
||
|
|
||
|
* Create a new mount point
|
||
|
> ins test_mount after /files/etc/puppet/fileserver.conf/*[last()]
|
||
|
> defvar test_mount /files/etc/puppet/fileserver.conf/test_mount
|
||
|
> set $test_mount/path /etc/puppet/files
|
||
|
> set $test_mount/allow *.example.com
|
||
|
> ins allow after $test_mount/*[last()]
|
||
|
> set $test_mount/allow[last()] server.domain.com
|
||
|
> set $test_mount/deny dangerous.server.com
|
||
|
* List the definition of a mount point
|
||
|
> print /files/etc/puppet/fileserver.conf/files
|
||
|
* Remove a mount point
|
||
|
> rm /files/etc/puppet/fileserver.conf/test_mount
|
||
|
|
||
|
About: Configuration files
|
||
|
This lens applies to /etc/puppet/fileserver.conf. See <filter>.
|
||
|
*)
|
||
|
|
||
|
|
||
|
module PuppetFileserver =
|
||
|
autoload xfm
|
||
|
|
||
|
(************************************************************************
|
||
|
* Group: USEFUL PRIMITIVES
|
||
|
*************************************************************************)
|
||
|
|
||
|
(* Group: INI File settings *)
|
||
|
|
||
|
(* Variable: eol *)
|
||
|
let eol = IniFile.eol
|
||
|
|
||
|
(* Variable: sep
|
||
|
Only treat one space as the sep, extras are stripped by IniFile *)
|
||
|
let sep = Util.del_str " "
|
||
|
|
||
|
(*
|
||
|
Variable: comment
|
||
|
Only supports "#" as commentary
|
||
|
*)
|
||
|
let comment = IniFile.comment "#" "#"
|
||
|
|
||
|
(*
|
||
|
Variable: entry_re
|
||
|
Regexp for possible <entry> keyword (path, allow, deny)
|
||
|
*)
|
||
|
let entry_re = /path|allow|deny/
|
||
|
|
||
|
|
||
|
(************************************************************************
|
||
|
* Group: ENTRY
|
||
|
*************************************************************************)
|
||
|
|
||
|
(*
|
||
|
View: entry
|
||
|
- It might be indented with an arbitrary amount of whitespace
|
||
|
- It does not have any separator between keywords and their values
|
||
|
- It can only have keywords with the following values (path, allow, deny)
|
||
|
*)
|
||
|
let entry = IniFile.indented_entry entry_re sep comment
|
||
|
|
||
|
|
||
|
(************************************************************************
|
||
|
* Group: RECORD
|
||
|
*************************************************************************)
|
||
|
|
||
|
(* Group: Title definition *)
|
||
|
|
||
|
(*
|
||
|
View: title
|
||
|
Uses standard INI File title
|
||
|
*)
|
||
|
let title = IniFile.indented_title IniFile.record_re
|
||
|
|
||
|
(*
|
||
|
View: title
|
||
|
Uses standard INI File record
|
||
|
*)
|
||
|
let record = IniFile.record title entry
|
||
|
|
||
|
|
||
|
(************************************************************************
|
||
|
* Group: LENS
|
||
|
*************************************************************************)
|
||
|
|
||
|
(*
|
||
|
View: lns
|
||
|
Uses standard INI File lens
|
||
|
*)
|
||
|
let lns = IniFile.lns record comment
|
||
|
|
||
|
(* Variable: filter *)
|
||
|
let filter = (incl "/etc/puppet/fileserver.conf"
|
||
|
.incl "/usr/local/etc/puppet/fileserver.conf"
|
||
|
.incl "/etc/puppetlabs/puppet/fileserver.conf")
|
||
|
|
||
|
let xfm = transform lns filter
|