Puppet Function: sshkeys::sshkey

Defined in:
lib/puppet/functions/sshkeys/sshkey.rb
Function type:
Ruby 4.x API

Overview

sshkeys::sshkey(Any $key_name, Optional[Any] $pub = false, Optional[Any] $passphrase = '', Optional[Any] $comment = '', Optional[Any] $type = 'rsa', Optional[Any] $size = '2048')Any

Parameters:

  • key_name (Any)
  • pub (Optional[Any]) (defaults to: false)
  • passphrase (Optional[Any]) (defaults to: '')
  • comment (Optional[Any]) (defaults to: '')
  • type (Optional[Any]) (defaults to: 'rsa')
  • size (Optional[Any]) (defaults to: '2048')

Returns:

  • (Any)


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
# File 'lib/puppet/functions/sshkeys/sshkey.rb', line 1

Puppet::Functions.create_function(:sshkeys::sshkey') do

  def ensure_key(key_dir, key_name, passphrase, comment, type, size)
    if ! Dir.exists?(key_dir)
      Dir.mkdir(key_dir)
    end
    key_file = "#{key_dir}/#{key_name}"
    if ! File.exist?(key_file)
      cmd = "/usr/bin/ssh-keygen -C '#{comment}' -N '#{passphrase}' -t #{type} -b #{size} -f #{key_file}"
      system(cmd)
    end
    key_file
  end

  def sshkey(key_name, pub=false, passphrase='', comment='', type='rsa', size='2048')

    if pub
      ext = '.pub'
    else
      ext = ''
    end
    key_dir = '/etc/puppetlabs/puppetserver/sshkeys'
    key_file = ensure_key(key_dir, key_name, passphrase, comment, type, size)
    target = key_file + ext
    if File.exists?(target)
      result = File.read(key_file + ext)
    else
      result = nil
    end
    result
  end

end