Module: IcingaCertService::Templates

Included in:
Client
Defined in:
lib/cert-service/templates.rb

Overview

Client Class to create on-the-fly a certificate to connect automaticly as satellite to an icinga2-master

Instance Method Summary collapse

Instance Method Details

#write_template(params) ⇒ Object

write files based on a template

Examples:

write_template(
  template: 'templates/zones.d/endpoint.conf.erb',
  destination_file: file_name,
  environment: {
    host: host
  }
)

Parameters:

  • params (Hash, #read)

Options Hash (params):

  • :template (String)
  • :destination_file (String)
  • :environment (Hash)


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
# File 'lib/cert-service/templates.rb', line 25

def write_template(params)

  template         = validate( params, required: true, var: 'template', type: String )
  destination_file = validate( params, required: true, var: 'destination_file', type: String )
  environment      = validate( params, required: true, var: 'environment', type: Hash )

  template = format( '%s/%s', @base_directory, template )

  return { status: 500, message: "template '#{template}' not found." } if( ! File.exist?(template) )

  begin
    template = ERB.new File.new(template).read
    date     = Time.now
    template = template.result( binding )

    begin
      logger.debug( "write to file: #{destination_file}" )
      file = File.open(destination_file, 'a')
      file.write(template)
    rescue => error
      logger.error(error.to_s)
      { status: 500, message: error.to_s }
    ensure
      file.close unless file.nil?
    end
  rescue => error
    logger.error(error.to_s)
    logger.debug( error.backtrace.join("\n") )

    { status: 500, message: error.to_s }
  end

  { status: 200, message: format('file \'%s\' has been created', destination_file) }

end