Puppet Class: system::facts

Defined in:
manifests/facts.pp

Overview

Parameters:

  • config (Any) (defaults to: undef)
  • cleanold (Any) (defaults to: false)
  • schedule (Any) (defaults to: $::system::schedule)


1
2
3
4
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
57
58
59
60
61
# File 'manifests/facts.pp', line 1

class system::facts (
  $config   = undef,
  $cleanold = false,
  $schedule = $::system::schedule,
) {
  if ! defined(File['/etc/facter']) {
    file { '/etc/facter':
      ensure => directory,
      owner  => 'root',
      group  => 'root',
      mode   => '0755',
    }
  }
  if ! defined(File['/etc/facter/facts.d']) {
    file { '/etc/facter/facts.d':
      ensure  => directory,
      owner   => 'root',
      group   => 'root',
      mode    => '0755',
      require => File['/etc/facter'],
    }
  }
  include concat::setup
  concat { '/etc/facter/facts.d/system_facts.yaml':
    owner   => 'root',
    group   => 'root',
    mode    => '0644',
    require => File['/etc/facter/facts.d'],
  }
  concat::fragment { 'system_facts_header':
    target   => '/etc/facter/facts.d/system_facts.yaml',
    content  => "---\n",
    order    => '01',
  }
  $defaults = {
    schedule => $schedule,
  }
  if $config {
    create_resources('system::fact', $config, $defaults)
  }
  else {
    $hiera_config = hiera_hash('system::facts', undef)
    if $hiera_config {
      create_resources('system::fact', $hiera_config, $defaults)
    }
  }

  if $cleanold {
    # Clean up facts from old locations
    $sh_filename  = '/etc/profile.d/custom_facts.sh'
    $csh_filename = '/etc/profile.d/custom_facts.csh'
    file { [ $sh_filename, $csh_filename ]:
      ensure => absent,
    }
    exec { "fact-remove-sysconfig-puppet":
      command  => "/usr/bin/perl -pi -e 's/^\s*#?\s*(export )?FACTER_.*?=.*?$//' /etc/sysconfig/puppet",
      onlyif   => '/bin/grep -q FACTER_ /etc/sysconfig/puppet',
      schedule => $schedule,
    }
  }
}