Puppet Function: sudo::defaults

Defined in:
lib/puppet/functions/sudo/defaults.rb
Function type:
Ruby 4.x API

Overview

sudo::defaults(Any *$args)String

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}]]

Parameters:

  • *args (Any)

Returns:

  • (String)


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