Puppet Class: profile

Inherits:
profile::params
Defined in:
manifests/init.pp

Overview

Class: profile

Manages /etc/profile and /etc/profile.d/ directory

Parameters

Standard class parameters

my_class

Name of a custom class to autoload to manage module’s customizations If defined, profile class will automatically “include $my_class” Can be defined also by the (top scope) variable $profile_myclass

source

Sets the content of source parameter for main configuration file If defined, profile main config file will have the param: source => $source Can be defined also by the (top scope) variable $profile_source

source_dir

If defined, the whole /etc/profile.d directory content is retrieved recursively from the specified source (source => $source_dir , recurse => true) Can be defined also by the (top scope) variable $profile_source_dir

source_dir_purge

If set to true (default false) the existing configuration directory is mirrored with the content retrieved from source_dir (source => $source_dir , recurse => true , purge => true) Can be defined also by the (top scope) variable $profile_source_dir_purge

template

Sets the path to the template to use as content for main configuration file If defined, profile main config file has: content => content(“$template”) Note source and template parameters are mutually exclusive: don’t use both Can be defined also by the (top scope) variable $profile_template

options

An hash of custom options to be used in templates for arbitrary settings. Can be defined also by the (top scope) variable $profile_options

version

The package version, used in the ensure parameter of package type. Default: present. Can be ‘latest’ or a specific version number. Note that if the argument absent (see below) is set to true, the package is removed, whatever the value of version parameter.

absent

Set to ‘true’ to remove package(s) installed by module Can be defined also by the (top scope) variable $profile_absent

audit_only

Set to ‘true’ if you don’t intend to override existing configuration files and want to audit the difference between existing files and the ones managed by Puppet. Can be defined also by the (top scope) variables $profile_audit_only and $audit_only

Default class params - As defined in profile::params.

config_dir

Main configuration directory.

config_file

Main configuration file path

Parameters:

  • my_class (Any) (defaults to: params_lookup( 'my_class' ))
  • source (Any) (defaults to: params_lookup( 'source' ))
  • source_dir (Any) (defaults to: params_lookup( 'source_dir' ))
  • source_dir_purge (Any) (defaults to: params_lookup( 'source_dir_purge' ))
  • template (Any) (defaults to: params_lookup( 'template' ))
  • options (Any) (defaults to: params_lookup( 'options' ))
  • version (Any) (defaults to: params_lookup( 'version' ))
  • absent (Any) (defaults to: params_lookup( 'absent' ))
  • audit_only (Any) (defaults to: params_lookup( 'audit_only' , 'global' ))
  • config_dir (Any) (defaults to: params_lookup( 'config_dir' ))
  • config_file (Any) (defaults to: params_lookup( 'config_file' ))


65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'manifests/init.pp', line 65

class profile (
  $my_class            = params_lookup( 'my_class' ),
  $source              = params_lookup( 'source' ),
  $source_dir          = params_lookup( 'source_dir' ),
  $source_dir_purge    = params_lookup( 'source_dir_purge' ),
  $template            = params_lookup( 'template' ),
  $options             = params_lookup( 'options' ),
  $version             = params_lookup( 'version' ),
  $absent              = params_lookup( 'absent' ),
  $audit_only          = params_lookup( 'audit_only' , 'global' ),
  $config_dir          = params_lookup( 'config_dir' ),
  $config_file         = params_lookup( 'config_file' )
  ) inherits profile::params {

  ### Internal variables setting
  # Configurations directly retrieved from profile::params
  $config_file_mode=$profile::params::config_file_mode
  $config_file_owner=$profile::params::config_file_owner
  $config_file_group=$profile::params::config_file_group

  # Sanitize of booleans
  $bool_source_dir_purge=any2bool($source_dir_purge)
  $bool_absent=any2bool($absent)
  $bool_audit_only=any2bool($audit_only)

  # Logic management according to parameters provided by users
  $manage_file = $profile::bool_absent ? {
    true    => 'absent',
    default => 'present',
  }
  $manage_audit = $profile::bool_audit_only ? {
    true  => 'all',
    false => undef,
  }
  $manage_file_replace = $profile::bool_audit_only ? {
    true  => false,
    false => true,
  }
  $manage_file_source = $profile::source ? {
    ''        => undef,
    default   => $profile::source,
  }
  $manage_file_content = $profile::template ? {
    ''        => undef,
    default   => template($profile::template),
  }

  ### Resources managed by the module
  file { 'profile.conf':
    ensure  => $profile::manage_file,
    path    => $profile::config_file,
    mode    => $profile::config_file_mode,
    owner   => $profile::config_file_owner,
    group   => $profile::config_file_group,
    source  => $profile::manage_file_source,
    content => $profile::manage_file_content,
    replace => $profile::manage_file_replace,
    audit   => $profile::manage_audit,
  }

  # The whole profile configuration directory is managed only
  # if $profile::source_dir is provided
  if $profile::source_dir and $profile::config_dir != '' {
    file { 'profile.dir':
      ensure  => directory,
      path    => $profile::config_dir,
      source  => $profile::source_dir,
      recurse => true,
      purge   => $profile::bool_source_dir_purge,
      replace => $profile::manage_file_replace,
      audit   => $profile::manage_audit,
    }
  }


  ### Include custom class if $my_class is set
  if $profile::my_class {
    include $profile::my_class
  }

}