O próprio Puppet não suporta nativamente "definir senha na criação do usuário, mas não de outra forma".
Uma opção seria configurar uma fonte de autenticação externa, como o LDAP.
Outra seria a sua ideia notify
para Exec
, mas tornaria o Exec
um pouco mais inteligente.
exec {
"/usr/sbin/usermod -p '${password}' ${user}":
onlyif => "/bin/egrep -q '^${user}:[*!]' /etc/shadow",
require => User[$user];
}
Eu não testei isso, mas verificando se a senha não foi definida no recurso Exec
, você deve obter o resultado que estava procurando. Eu acho que configurar dessa maneira, o material notify
/ refreshonly
não é necessário, mas provavelmente não faria mal.