Puppet Function: sudo::defaults
- Defined in:
- lib/puppet/functions/sudo/defaults.rb
- Function type:
- Ruby 4.x API
Overview
Formats sudoers defaults config see linux.die.net/man/5/sudoers
Default_Type ::= 'Defaults' |
'Defaults' '@' Host_List |
'Defaults' ':' User_List |
'Defaults' '!' Cmnd_List |
'Defaults' '>' Runas_List
Default_Entry ::= Default_Type Parameter_List
Parameter_List ::= Parameter |
Parameter ',' Parameter_List
Parameter ::= Parameter '=' Value |
Parameter '+=' Value |
Parameter '-=' Value |
'!'* Parameter
The function is passed an Array of Tuples e.g. [[“env_reset”, nil]]
[["mailto", {"value" => root}]]
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 |
# File 'lib/puppet/functions/sudo/defaults.rb', line 24 Puppet::Functions.create_function(:'sudo::defaults') do dispatch :defaults do repeated_param 'Any', :args return_type 'String' end def defaults(*args) res = '' raise "Unsupported number of arguments #{args.size}: #{args.inspect}" if args.nil? args.each do |tuple| raise "Unsupported number of arguments #{args.size}: #{args.inspect}" unless tuple.size == 2 res.concat(defaults_entry(tuple[0], tuple[1])) end res end def defaults_entry(key, config) entry = "Defaults\t#{key}" unless config.nil? || config.equal?(:undef) entry.concat((config['list']).to_s) if config.key? 'list' operator = '=' operator = config['operator'] if config.key? 'operator' if config.key? 'value' val = config['value'].is_a?(String) ? "\"#{config['value']}\"" : config['value'] entry.concat("#{operator}#{val}") end end entry.concat("\n") end end |