Я использую Puppet для распространения ключей SSH, вот так:
ssh_authorized_key { "alice@foo.com":
ensure => present,
key => 'xxxx',
type => 'ssh-rsa',
user => 'deploy',
}
Файл ~ / .ssh / authorized_keys в итоге содержит сочетание ключей из нескольких классов, что является желаемым результатом. Однако, если ключ добавлен вручную в $ HOME / .ssh / авторизованный_ключ, Puppet оставит его на месте. Есть ли способ всегда удалять любой ключ, который не был явно определен в манифесте?
У меня есть версия куклы 2.7.1.
Ответы:
Начиная с Puppet 3.6, теперь можно очищать неуправляемые авторизованные ключи SSH через этот
user
тип. Например,источник
Вместо того, чтобы использовать
ssh_authorized_key
ресурсы, я решил определитьauthorized_keys
ресурс, который принимает список всех ключей SSH для одного пользователя. Определение выглядит так:$ssh_keys
Параметр принимает все необходимые ключи в виде списка.authorized_keys.erb
Шаблон выглядит следующим образом :использование
Добавление ключей SSH по условию (например, в разных классах) также легко благодаря
+>
оператору Puppet :При использовании этого метода у пользователя никогда не будет ключей, которые явно не указаны в конфигурации Puppet. Строка ключа используется в author_keys так же, как и сейчас, поэтому добавление опций и ограничений тривиально.
Я был бы рад услышать, если бы другие использовали этот метод успешно!
источник
Вы должны быть в состоянии сделать это, используя метатип ресурсов . НАПРИМЕР
Настройка
noop => true,
предотвращает удаление. Вместо этого марионетка сообщит, что будет удалено. Если это то, что вы хотите, удалите оператор noop .Идеальный синтаксис для выполнения операций на неуправляемых ресурсах находится в стадии обсуждения .
РЕДАКТИРОВАТЬ: Как уже упоминалось в комментариях, этот ответ не работает.
источник
puppet-agent[9895]: (/Stage[main]//Resources[ssh_authorized_key]) Failed to generate additional resources using 'generate': Attribute 'user' or 'target' is mandatory.
я пытался добавить пользователя, а затем он говоритCould not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter user
. Есть идеи?В Puppet Forge был опубликован модуль под лицензией Apache, версия 2.0, которая предлагает эту возможность.
Он опирается на Puppet concat вместо шаблонов.
https://github.com/nightfly19/puppet-ssh_keys/tree/master/manifests
Вместо передачи массива ключей в качестве параметра вы определяете отдельные записи для каждого ключа.
Отличный подход от Микко, но тот же чистый результат.
источник