Это выглядит слишком "процедурным", IMO. Необходимо думать "декларативным" способом. Я лично просто создал бы .rpm's или .deb's от тех tarballs, и указал бы другой repo для использования так всего, что необходимо будет сделать, что-то вроде этого:
class tomcat {
Package { "tomcat":
ensure => installed,
}
File { "/etc/init.d/tomcat":
source => "puppet:///tomcat/tomcat.initd",
}
}
и т.д. Те, которых несколько определяют, кажутся ненужными также, я пошел бы только с прямыми Исполнительными пунктами, но с псевдонимами для каждого Исполнительного типа.
Пример:
Exec { "/bin/tar xzf /root/tomcat6.tgz":
name => "tomcat-extract",
<rest of content here>
}
...
File { "${tomcatDir}":
...
require => Exec["tomcat-extract"],
...
}
Это не ваш собственный пользователь, который обращается к этим файлам, поэтому 600 и 700 не будут работать. К тому же нет необходимости в таком закреплении; В authorized_keys нет ничего безопасного.
Ваши права доступа неверны:
chmod 755 /home/USERNAME/.ssh
chmod 644 /home/USERNAME/.ssh/authorized_keys
Для меня / usr / NX / home / nx / .ssh / authorized_keys было неправильно названо /usr/NX/home/nx/.ssh/authorized_keys2 даже после переустановки. Вот как я это исправил:
/usr/NX/home/nx/.ssh # cp authorized_keys2 authorized_keys
/usr/NX/home/nx/.ssh # chown nx authorized_keys
Я написал об этом в блоге на http://www.linuxintro.org/wiki/Nx#The_NX_service_is_not_available