Puppet Class: openssh::ssh_keygen
- Defined in:
- manifests/ssh_keygen.pp
Summary
A short summary of the purpose of this classOverview
Generate new OpenSSH private key or export root public key
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 62 63 64 65 66 67 68 69 70 |
# File 'manifests/ssh_keygen.pp', line 7
class openssh::ssh_keygen (
String $sshkey_name = $openssh::sshkey_name,
String $sshkey_user = $openssh::sshkey_user,
Openssh::KeyType $sshkey_type = $openssh::sshkey_type,
Stdlib::Unixpath $sshkey_target = $openssh::sshkey_target,
Stdlib::Unixpath $sshkey_dir = $openssh::sshkey_dir,
Array[String] $sshkey_options = $openssh::sshkey_options,
String $sshkey_ensure = present,
Integer $sshkey_bits = 2048,
Boolean $root_key_export = true,
Boolean $sshkey_generate_enable = false,
) {
include openssh::keys
$fqdn = $facts['networking']['fqdn']
# -t dsa | ecdsa | ed25519 | rsa
$type = $sshkey_type ? {
/-dss/ => 'dsa',
'dsa' => 'dsa',
/ecdsa-/ => 'ecdsa',
/ed25519/ => 'ed25519',
default => 'rsa',
}
if $sshkey_generate_enable {
# ~/.ssh/id_dsa
# ~/.ssh/id_ecdsa
# ~/.ssh/id_ed25519
# ~/.ssh/id_rsa
$filename = "${sshkey_dir}/id_${type}"
exec { "ssh-keygen-${sshkey_user}":
command => "ssh-keygen -t ${type} -b ${sshkey_bits} -f \"${filename}\" -N '' -C \"${sshkey_name}\"",
user => $sshkey_user,
creates => $filename,
path => '/usr/bin:/bin',
require => File[$sshkey_dir],
}
}
# Export root user public key
elsif $root_key_export and $sshkey_user == 'root' and $facts['sshpubkey_root'] {
$sshkey = $facts['sshpubkey_root']
if $sshkey_type in $sshkey and $sshkey_name in $sshkey {
$sshkey_export = $sshkey[1]
}
else {
$sshkey_export = undef
warning("Can't parse root ssh public key from ${fqdn}")
}
if $sshkey_export {
@@ssh_authorized_key { $sshkey_name:
ensure => $sshkey_ensure,
key => $sshkey_export,
user => $sshkey_user,
target => $sshkey_target,
options => $sshkey_options,
type => $sshkey_type,
}
}
}
}
|