Puppet Class: managedmac::files
- Defined in:
- manifests/files.pp
Overview
Class: managedmac::files
Dynamically create Puppet File resources using the Puppet built-in ‘create_resources’ function.
We do some validation of data, but the usual caveats apply: garbage in, garbage out.
Parameters
There 2 parameters, the $accounts parameter is required.
- objects
-
This is a Hash of Hashes. The hash should be in the form { title => { parameters } }. See tinyurl.com/7783b9l, and the examples below for details. Type: Hash
- defaults
-
A Hash that defines the default values for the resources created. See tinyurl.com/7783b9l, and the examples below for details. Type: Hash
Variables
Not applicable
Examples
This class was designed to be used with Hiera. As such, the best way to pass options is to specify them in your Hiera datadir:
# Example: defaults.yaml
managedmac::files::objects:
/Users/Shared/example_file_a.txt:
ensure: file
owner: root
group: admin
mode: '0644'
content: "This is an example of how to create a file using the \
content parameter.“
/Users/Shared/example_file_b.txt:
ensure: file
owner: root
group: admin
mode: '0644'
source: puppet:///modules/my_module/example_file_b.txt
/Users/Shared/example_directory:
ensure: directory
owner: root
group: admin
mode: '0755'
Then simply, create a manifest and include the class…
# Example: my_manifest.pp
include managedmac::files
If you just wish to test the functionality of this class, you could also do something along these lines:
# Create some Hashes
$defaults = { 'owner' => 'root', 'group' => 80, }
$objects = {
'/Users/Shared/test_file_a.txt' => { 'content' => 'Example A.' },
'/Users/Shared/test_file_b.txt' => { 'content' => 'Example B.' },
}
class { 'managedmac::files':
objects => $objects,
defaults => $defaults,
}
Authors
Brian Warsing <bcw@sfu.ca>
Copyright
Copyright 2015 Simon Fraser University, unless otherwise noted.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'manifests/files.pp', line 83
class managedmac::files (
$objects = {},
$defaults = {},
) {
unless empty ($objects) {
validate_hash ($objects)
validate_hash ($defaults)
# Cheating: validate that the value for each key is itself a Hash
$check_hash = inline_template("<%= @objects.reject! {
|x| x.respond_to? :key } %>")
unless empty($check_hash) {
fail("Account Error: Failed to parse one or more account data \
objects: ${check_hash}")
}
create_resources(file, $objects, $defaults)
}
}
|