Puppetがパスワードを管理する(つまり、パスワードが変更されたときにリセットする)のではなく、Puppetがユーザーを作成するときに初期パスワードを設定することを望みます。
パスワードを設定するnotify
リソースに対してExec
を実行することを考えていましたが、これはPuppetが管理するプロパティ(グループメンバーシップ、ホームディレクトリなど)が変更されたときにトリガーされます。それは欲しくない。
何か案は?
Puppet自体は、「ユーザーの作成時にパスワードを設定しますが、それ以外はサポートしません」をネイティブでサポートしていません。
1つのオプションは、LDAPなどの外部認証ソースを設定することです。
もう1つは、notify
からExec
へのアイデアですが、Exec
を少し賢くすることができます。
exec {
"/usr/sbin/usermod -p '${password}' ${user}":
onlyif => "/bin/egrep -q '^${user}:[*!]' /etc/shadow",
require => User[$user];
}
まだテストしていませんが、Exec
リソースにパスワードが設定されていないかどうかを確認すると、探していた結果が得られます。そのようにセットアップすると思いますが、notify
/refreshonly
は必要ありませんが、おそらく害はありません。