J'utilise marionnette pour distribuer des clés SSH, comme ceci:
ssh_authorized_key { "[email protected]":
ensure => present,
key => 'xxxx',
type => 'ssh-rsa',
user => 'deploy',
}
Le fichier ~ / .ssh / authorized_keys finit par contenir un mélange de clés de plusieurs classes, ce qui est le résultat souhaité. Cependant, si une clé est ajoutée manuellement à $ HOME / .ssh / authorized_keys, Puppet la laissera en place. Existe-t-il un moyen de toujours supprimer une clé qui n'a pas été explicitement définie dans un manifeste?
J'ai la version 2.7.1 de marionnettes.
Réponses:
Depuis Puppet 3.6, il est désormais possible de purger les clés autorisées SSH non gérées via le
user
type. Par exemple,la source
Au lieu d'utiliser des
ssh_authorized_key
ressources, j'ai décidé de définir uneauthorized_keys
ressource, qui prend une liste de toutes les clés SSH pour un seul utilisateur. La définition ressemble à ceci:$ssh_keys
Le paramètre prend toutes les clés nécessaires sous forme de liste. Leauthorized_keys.erb
modèle ressemble à ceci:Usage
L'ajout conditionnel de clés SSH (par exemple dans différentes classes) est également facile, grâce à l'
+>
opérateur de Puppet :Avec cette méthode, l'utilisateur n'aura jamais de clés qui ne sont pas explicitement spécifiées dans la configuration Puppet. La chaîne de clé est utilisée dans authorized_keys telle quelle, l'ajout d'options et de restrictions est donc trivial.
Je serais heureux d'entendre si d'autres ont utilisé cette méthode avec succès!
la source
Vous devriez pouvoir le faire en utilisant le métatype de ressources . PAR EXEMPLE
Le réglage
noop => true,
empêche le retrait d'avoir lieu. Au lieu de cela, la marionnette signalera ce qui serait supprimé. Si c'est ce que vous voulez, supprimez l' instruction noop .La syntaxe idéale pour effectuer des opérations sur des ressources non gérées est en cours de discussion .
EDIT: Comme mentionné dans les commentaires, cette réponse ne fonctionne pas.
la source
puppet-agent[9895]: (/Stage[main]//Resources[ssh_authorized_key]) Failed to generate additional resources using 'generate': Attribute 'user' or 'target' is mandatory.
j'ai essayé d'ajouter un utilisateur, puis ça ditCould not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter user
. Des idées?Sur Puppet Forge, un module a été publié sous la licence Apache, version 2.0 qui offre cette capacité.
Il s'appuie cependant sur Puppet concat au lieu de modèles.
https://github.com/nightfly19/puppet-ssh_keys/tree/master/manifests
Au lieu de passer un tableau de clés en tant que paramètre, vous définissez des entrées distinctes pour chaque clé.
Approche différente de celle de Mikko, mais même résultat net.
la source