Hi everyone,
I am using puppet 2.7.9 on debian linux setup with gem.
I am trying to setup the define as followed:
----------------------
define user::environment::create_authorized_key ( $dst_user = undef,
$local_file = "/var/lib/keys/${name}", $home = undef, $options = undef ) {
# --[ default parameter given ]--
$src_user_real = "${name}"
$key_src_file = "${local_file}/key.pub"
$key_src_content = file($key_src_file, "/dev/null")
File {
owner => "${dst_user_real}",
group => "${dst_user_real}",
mode => '0440',
}
if ! $dst_user {
$dst_user_real = "${src_user_real}"
}
if $home {
$key_tgt_file = "${home}/.ssh/authorized_keys"
} else {
$key_tgt_file = undef
}
if "${dst_user_real}" == 'root' {
case $home {
undef : { $authorized_keys = '/root/.ssh/authorized_keys' }
default : { $authorized_keys = "${key_tgt_file}" }
}
} else {
case $home {
undef : { $authorized_keys =
"/home/${dst_user_real}/.ssh/authorized_keys" }
default : { $authorized_keys = "${key_tgt_file}" }
}
}
if ! $key_src_content {
notify { "Public key file $key_src_file for key $title not found on
keymaster; skipping ensure => present": }
} else {
if $key_src_content !~ /^(ssh-...) ([^ ]*)/ {
err("Can't parse public key file $key_src_file")
notify { "Can't parse public key file $key_src_file for key
$title on the keymaster: skipping ensure => $ensure": }
} else {
$keytype = $1
$modulus = $2
ssh_authorized_key { "SSH keys: ${src_user_real} -->
${dst_user_real}":
ensure => present,
user => "${dst_user_real}",
target => $key_tgt_file,
type => "${keytype}",
key => "${modulus}",
name => "\"src:${src_user_real} -->
dst:${dst_user_real}\"",
options => $options,
notify => [ Exec["Setting \$HOME rights for
${dst_user_real}"], ],
}
exec { "Forcing ${authorized_keys} rights" :
path => '/bin:/usr/bin:/usr/local/bin',
user => 'root',
logoutput => true,
command => "[ -f \"${authorized_keys}\" ] && chown
${dst_user_real}:${dst_user_real} \"${authorized_keys}\"",
refreshonly => true,
}
Exec["Forcing ${authorized_keys} rights"] ->
Ssh_authorized_key["SSH keys: ${src_user_real} --> ${dst_user_real}"]
}
}
}
------------------------------
When I run this define on my nodes I have to following behavior for several
users:
notice:
/Stage[main]/Base_common_user/User::Ssh::Key[apt-dater]/Ssh_auth_key_server[apt-dater]/Ssh_authorized_key[apt-dater]/ensure:
created
info: FileBucket got a duplicate file {md5}8db5d5c65e547d3971d93dfa0ffcea32
err:
/Stage[main]/Base_common_user/User::Ssh::Key[apt-dater]/Ssh_auth_key_server[apt-dater]/Ssh_authorized_key[apt-dater]:
Could not evaluate: Puppet::Util::FileType::FileTypeFlat could not write
/home/test/.ssh/authorized_keys: Permission denied -
/home/test/.ssh/authorized_keys
Puppet is trying to put the authorized_keys under the wrong ${HOME}:
root@linux-install:/# getent passwd apt-dater
apt-dater:x:9000:9000:Outil de dist-upgrade:/home/apt-dater:/bin/bash
root@linux-install:/# ls -al /home/apt-dater/.ssh/
total 12
drwxr-x--- 2 apt-dater apt-dater 4096 Mar 14 14:25 .
drwxr-xr-x 3 apt-dater apt-dater 4096 Mar 14 14:25 ..
-rw-r----- 1 apt-dater apt-dater 1380 Mar 14 14:36 authorized_keys
Any idea what could be the problem?
Regards,
JM
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.