Module: Puppet::Util::SecurityBaseline

Included in:
Node::Facts::SecurityBaseline
Defined in:
lib/puppet/util/security_baseline.rb

Overview

Utility functions used by the report processor and the facts indirector.

Instance Method Summary collapse

Instance Method Details

#get_trusted_info(node) ⇒ Object



38
39
40
41
42
43
# File 'lib/puppet/util/security_baseline.rb', line 38

def get_trusted_info(node)
  trusted = Puppet.lookup(:trusted_information) do
    Puppet::Context::TrustedInformation.local(node)
  end
  trusted.to_h
end

#pe_consoleObject



22
23
24
# File 'lib/puppet/util/security_baseline.rb', line 22

def pe_console
  settings['pe_console'] || Puppet[:certname]
end

#security_baseline_fact_serverObject



26
27
28
# File 'lib/puppet/util/security_baseline.rb', line 26

def security_baseline_fact_server
  settings[:host]
end

#security_baseline_fact_server_portObject



30
31
32
# File 'lib/puppet/util/security_baseline.rb', line 30

def security_baseline_fact_server_port
  settings[:port]
end

#security_baseline_fact_timeoutObject



34
35
36
# File 'lib/puppet/util/security_baseline.rb', line 34

def security_baseline_fact_timeout
  settings[:timeout]
end

#send_facts(request, time) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/puppet/util/security_baseline.rb', line 45

def send_facts(request, time)
  # Copied from the puppetdb fact indirector.  Explicitly strips
  # out the packages custom fact '_puppet_inventory_1'
  facts = request.instance.dup
  facts.values = facts.values.dup

  return unless facts.values.key?('security_baseline_summary')

  facts.values[:trusted] = get_trusted_info(request.node)

  # Puppet.info "Facts of security_baseline: #{facts.values[:trusted].to_json} |"

  facts.values.delete('_puppet_inventory_1')
  facts.values = facts.values.dup

  data = {}
  data['time_utc'] = time
  data['key'] = request.key
  data['environment'] = request.options[:environment] || request.environment.to_s
  data['tags'] = ['security_baseline', 'compliance']
  data['certname'] = facts.name
  arr = facts.name.split('.')
  data['hostname'] = if arr.empty? || arr.nil?
                       request.node
                     else
                       arr[0]
                     end
  data.merge!(facts.values['security_baseline_summary'])
  data.delete('_@timestamp')
  server = security_baseline_fact_server
  port = security_baseline_fact_server_port
  timeout = security_baseline_fact_timeout

  Puppet.info "sending security_baseline facts to Logstash at #{server}:#{port} for #{request.key}"

  Timeout.timeout(timeout) do
    json = data.to_json
    ls = TCPSocket.new server, port
    ls.puts json
    ls.close
  end

  Puppet.info "finished sending security_baseline facts to Logstash at #{server}:#{port} for #{request.key}"
end

#settingsObject



16
17
18
19
20
# File 'lib/puppet/util/security_baseline.rb', line 16

def settings
  return @settings if @settings
  @settings_file = Puppet[:confdir] + '/security_baseline.yaml'
  @settings = YAML.load_file(@settings_file)
end