Puppet Function: ensure_resources

Defined in:
vendor_modules/stdlib/lib/puppet/parser/functions/ensure_resources.rb
Function type:
Ruby 3.x API

Summary

Takes a resource type, title (only hash), and a list of attributes that describe a resource.

Overview

ensure_resources()Any

An hash of resources should be passed in and each will be created with

the type and parameters specified if it doesn't already exist.

ensure_resources('user', {'dan' => { gid => 'mygroup', uid => '600' }, 'alex' => { gid => 'mygroup' }}, {'ensure' => 'present'})

From Hiera Backend:

userlist:
  dan:
    gid: 'mygroup'
 uid: '600'
  alex:
 gid: 'mygroup'

Call:
ensure_resources('user', hiera_hash('userlist'), {'ensure' => 'present'})

Examples:

Example usage


user { 'dan':
  gid => 'mygroup',
  ensure => present,
}

Returns:

  • (Any)

    created resources with the passed type and attributes



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
# File 'vendor_modules/stdlib/lib/puppet/parser/functions/ensure_resources.rb', line 5

Puppet::Parser::Functions.newfunction(:ensure_resources, type: :statement, doc: <<-DOC
  @summary
    Takes a resource type, title (only hash), and a list of attributes that describe a
    resource.

  @return
    created resources with the passed type and attributes

  @example Example usage

        user { 'dan':
          gid => 'mygroup',
          ensure => present,
        }

    An hash of resources should be passed in and each will be created with
    the type and parameters specified if it doesn't already exist.

    ensure_resources('user', {'dan' => { gid => 'mygroup', uid => '600' }, 'alex' => { gid => 'mygroup' }}, {'ensure' => 'present'})

    From Hiera Backend:

    userlist:
      dan:
        gid: 'mygroup'
     uid: '600'
      alex:
     gid: 'mygroup'

    Call:
    ensure_resources('user', hiera_hash('userlist'), {'ensure' => 'present'})
DOC
) do |vals|
  type, title, params = vals
  raise(ArgumentError, 'Must specify a type') unless type
  raise(ArgumentError, 'Must specify a title') unless title
  params ||= {}

  raise(Puppet::ParseError, 'ensure_resources(): Requires second argument to be a Hash') unless title.is_a?(Hash)
  resource_hash = title.dup
  resources = resource_hash.keys

  Puppet::Parser::Functions.function(:ensure_resource)
  resources.each do |resource_name|
    params_merged = if resource_hash[resource_name]
                      params.merge(resource_hash[resource_name])
                    else
                      params
                    end
    function_ensure_resource([type, resource_name, params_merged])
  end
end