After a little bit of digging it seems that the error is due to rights of '/home/user/.ssh'.
In fact puppet tries to create those with the following rights: drwxr-xr-x 2 test test 4096 Mar 14 15:51 /home/test drwx------ 2 test root 4096 Mar 14 15:51 /home/test/.ssh When I change the rights to: drwxr-x--- 2 test root 4096 Mar 14 15:51 /home/test/.ssh puppet completes is job, I found a similar bug: http://projects.puppetlabs.com/issues/5395 but it seems to be closed. Any thoughts? Regards, JM On Wed, Mar 14, 2012 at 3:17 PM, Antidot SAS <antidot...@gmail.com> wrote: > 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 puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.