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
|
# Install a key pair into a user's account.
define sshkeys::set_client_key_pair (
$keyname = '',
$ensure = 'present',
$filename = 'id_rsa',
$group = '',
$home = '',
$user
) {
include sshkeys::var
File {
owner => $user,
group => $group ? { '' => $user, default => $group },
mode => '0600',
require => [ User[$user], File[$home]],
}
$_keyname = $keyname ? { '' => $title, default => $keyname }
$_home = $home ? { '' => "/home/${user}", default => $home }
$key_src_file = "${sshkeys::var::keymaster_storage}/${_keyname}/key" # on the keymaster
$key_tgt_file = "${_home}/.ssh/${filename}" # on the client
$key_src_content_pub = file("${key_src_file}.pub", "/dev/null")
if $ensure == "absent" or $key_src_content_pub =~ /^(ssh-...) ([^ ]+)/ {
$keytype = $1
$modulus = $2
file {
$key_tgt_file:
ensure => $ensure,
content => file($key_src_file, "/dev/null");
"${key_tgt_file}.pub":
ensure => $ensure,
content => "${keytype} ${modulus} ${title}\n",
mode => '0644';
}
} else {
notify { "Private key file ${key_src_file} for key ${title} not found on keymaster; skipping ensure => present": }
}
}
|