web-dev-qa-db-ja.com

ユーザーの作成時にパペットにパスワードのみを設定させるにはどうすればよいですか?

Puppetがパスワードを管理する(つまり、パスワードが変更されたときにリセットする)のではなく、Puppetがユーザーを作成するときに初期パスワードを設定することを望みます。

パスワードを設定するnotifyリソースに対してExecを実行することを考えていましたが、これはPuppetが管理するプロパティ(グループメンバーシップ、ホームディレクトリなど)が変更されたときにトリガーされます。それは欲しくない。

何か案は?

9

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は必要ありませんが、おそらく害はありません。

9
freiheit