Puppetがパスワードを管理する(つまり、パスワードが変更されたときにリセットする)のではなく、Puppetがユーザーを作成するときに初期パスワードを設定するようにしたい。
パスワードを設定notifyするExecリソースに対してを実行することを考えていましたが、これは、Puppetが管理するプロパティ(グループメンバーシップ、ホームディレクトリなど)が変更されたときにトリガーされます。それは欲しくない。
何か案は?
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は必要ありませんが、おそらく害はありません。
egrep '^${username}:!!:.*:' /etc/shadow
grep -Eq '^${user}:[*!]!?:' /etc/shadow"最も移植性が高く、ロックされたパスワードでユーザーをリセットしません。
!パスワードなしの設定に使用するのを見たことがありegrep -q '^${user}:[*!]:' /etc/shadowます。