Los usuarios de Linux tienen sus contraseñas almacenadas como hash en el archivo /etc/shadow. Puppet pasa la contraseña proporcionada en la definición de tipo de usuario en el archivo /etc/shadow.
Genere su contraseña hash usando el comando openssl:
#openssl passwd -1
#Enter your password here
Password:
Verifying - Password:
$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM
El ejemplo anterior genera este hash:$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/
Agregue esta contraseña hash a su clase como se muestra (no olvide las comillas)
user { 'test_user':
ensure => present,
password => '$1$HTQUGYUGYUGwsxQxCp3F/nGc4DCYM/',
}
El sha1
La función en marioneta no está destinada directamente a las entradas de contraseña, como descubrió. ¡Diría que configurar el hash en lugar de la contraseña es una buena práctica! De todos modos, no se supone que pueda recuperar una contraseña; puede generarla una vez, o puede hacer que la marioneta la genere cada vez; en mi humilde opinión, generar ese hash una vez debería ser suficiente ... Puede generar una contraseña en Debian/Ubuntu así:
pwgen -s -1 | mkpasswd -m sha-512 -s
...en CentOS puede usar algún comando grub-crypt en lugar de mkpasswd...
El paquete stdlib de puppetlabs implementa un pw_hash
similar función de la respuesta aceptada.
Asegúrese de agregar la biblioteca a su configuración. Si usa bibliotecario, solo agregue su Puppetfile
mod 'puppetlabs-stdlib'
Luego, para crear un usuario, simplemente:
user { 'user':
ensure => present,
password => pw_hash('password', 'SHA-512', 'mysalt'),
}
Tuve éxito (esencial) con el método String#crypt de Ruby desde dentro de una función de analizador Puppet.
AFAICS está usando las funciones crypt libc (ver:info crypt
), y toma los mismos argumentos $n$[rounds=<m>$]salt
, donde n es la función hash ($6 para SHA-512) y m es el número de rondas de fortalecimiento clave (5000 por defecto).