Estoy usando una marioneta para distribuir claves SSH, así:
ssh_authorized_key { "[email protected]":
ensure => present,
key => 'xxxx',
type => 'ssh-rsa',
user => 'deploy',
}
El archivo ~ / .ssh / optional_keys termina conteniendo una combinación de claves de múltiples clases, que es el resultado deseado. Sin embargo, si una clave se agrega manualmente a $ HOME / .ssh / Authorized_keys, Puppet la dejará en su lugar. ¿Hay alguna manera de eliminar siempre cualquier clave que no se haya definido explícitamente en un manifiesto?
Tengo la versión de títeres 2.7.1.
Respuestas:
Comenzando con Puppet 3.6 ahora es posible purgar las claves autorizadas SSH no administradas a través del
user
tipo. Por ejemplo,fuente
En lugar de usar
ssh_authorized_key
recursos, decidí definir unauthorized_keys
recurso, que toma una lista de todas las claves SSH para un solo usuario. La definición se ve así:$ssh_keys
El parámetro toma todas las claves necesarias como una lista. Laauthorized_keys.erb
plantilla se ve así:Uso
Agregar claves SSH condicionalmente (por ejemplo, en diferentes clases) también es fácil, gracias al
+>
operador de Puppet :Con este método, el usuario nunca tendrá claves que no estén especificadas explícitamente en la configuración de Puppet. La cadena de clave se usa en claves_autorizadas tal como es, por lo que agregar opciones y restricciones es trivial.
Me encantaría saber si otros han utilizado este método con éxito.
fuente
Debería poder hacer esto utilizando el metatipo de recursos . P.EJ
La configuración
noop => true,
evita que se realice la eliminación. En cambio, la marioneta informará lo que se eliminaría. Si es lo que desea, elimine la declaración noop .La sintaxis ideal para realizar operaciones en recursos no administrados está en discusión .
EDITAR: Como se menciona en los comentarios, esta respuesta no funciona.
fuente
puppet-agent[9895]: (/Stage[main]//Resources[ssh_authorized_key]) Failed to generate additional resources using 'generate': Attribute 'user' or 'target' is mandatory.
intenté agregar un usuario y luego diceCould not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter user
. ¿Algunas ideas?En Puppet Forge se ha publicado un módulo bajo la licencia Apache, versión 2.0 que ofrece esta capacidad.
Sin embargo, se basa en Puppet concat en lugar de plantillas.
https://github.com/nightfly19/puppet-ssh_keys/tree/master/manifests
En lugar de pasar una matriz de claves como parámetro, define entradas separadas para cada clave.
Enfoque diferente al de Mikko, pero el mismo resultado neto.
fuente