Les utilisateurs Linux ont leurs mots de passe stockés sous forme de hachage dans le fichier /etc/shadow. Puppet transmet le mot de passe fourni dans la définition du type d'utilisateur dans le fichier /etc/shadow.
Générez votre mot de passe de hachage à l'aide de la commande openssl :
#openssl passwd -1
#Enter your password here
Password:
Verifying - Password:
$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM
L'exemple précédent génère ce hachage :$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/
Ajoutez ce mot de passe de hachage à votre classe comme indiqué (n'oubliez pas les guillemets)
user { 'test_user':
ensure => present,
password => '$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/',
}
Le sha1
La fonction dans la marionnette n'est pas directement destinée aux entrées passwd, comme vous l'avez compris. Je dirais que définir le hachage plutôt que le mot de passe est une bonne pratique ! De toute façon, vous n'êtes pas vraiment censé pouvoir récupérer un mot de passe - vous pouvez le générer une fois, ou vous pouvez demander à une marionnette de le générer à chaque fois - générer ce hachage une fois devrait suffire à mon humble avis... Vous pouvez générer un mot de passe sur Debian/Ubuntu comme ceci :
pwgen -s -1 | mkpasswd -m sha-512 -s
... sur CentOS, vous pouvez utiliser une commande grub-crypt au lieu de mkpasswd...
Le package stdlib de puppetlabs implémente un pw_hash
similaire fonction de la réponse acceptée.
Assurez-vous d'ajouter la bibliothèque à votre configuration. Si vous utilisez un bibliothécaire, ajoutez simplement votre Puppetfile
mod 'puppetlabs-stdlib'
Ensuite pour créer un utilisateur, il suffit de :
user { 'user':
ensure => present,
password => pw_hash('password', 'SHA-512', 'mysalt'),
}
J'ai eu du succès (essentiel) avec la méthode String#crypt de ruby à partir d'une fonction d'analyseur Puppet.
AFAICS utilise les fonctions crypt libc (voir :info crypt
), et prend les mêmes arguments $n$[rounds=<m>$]salt
, où n est la fonction de hachage (6 $ pour SHA-512) et m est le nombre de tours de renforcement de clé (5000 par défaut).