Я прокомментировал вашу суть.
Я считаю, что этот код пользовательского типа слишком оптимистичен в отношении использования нативного типа ssh_authorized_key. Жесткое кодирование ресурсов в код типа и игнорирование содержимого каталога является оскорбительным.
Было бы разумно использовать это вместо манифеста
$keys = { 'rimuhosting' => { 'id' => ... }, ... }
define my_authorized_key($ensure = present) {
$data = $keys[$title]
$key_name = $data['email'] + "-" + $data['public_key_version'] + "-" + $data['user']
ssh_authorized_key {
"$key_name":
ensure => $ensure,
type => 'ssh-rsa',
...
}
}
А поскольку цель "все или ничего", кажется, является целью
class authorized_keys($ensure = present) {
$names = keys($keys) # <- function from puppetlabs-stdlib module
my_authorized_key { $names: ensure => $ensure }
}
Параметризованные классы могут быть неудобными для использования, если вы хотите пойти по этому пути, я настоятельно рекомендую объединить его с Hiera .