Puppet 変数を 1 回だけ評価する

Puppet 変数を 1 回だけ評価する

新規ユーザーのパスワードを生成するapg

単純:

$password = generate('/etc/puppet/utils/gen_password')

このコマンドの唯一の問題は、一度だけ必要なのに、puppet が実行されるたびに評価されることです。

この変数は1つの内部で使用されますエグゼクティブ宣言。

必要な場合にのみ変数を評価する可能性はありますか? たとえば、初めて使用する場合などです。

答え1

exec を条件付きで実行するには、いくつかのオプションを使用できます。ニーズに合ったものを選択してください。

  • ない限り- このパラメータが設定されている場合、コマンドが 0 を返さない限り、この exec が実行されます。
  • 作成する- コマンドを実行する前に検索するファイル。コマンドは、ファイルが存在しない場合のみ実行されます。
  • のみの場合- このパラメータが設定されている場合、この exec はコマンドが 0 を返す場合にのみ実行されます。
  • 更新のみ- このコマンドは、依存オブジェクトが変更されたときの更新メカニズムとしてのみ実行する必要があります。

答え2

Execでパスワードを使用していない場合は、カジミエラス・アリウリスあなたには効果がないかもしれません。

私だったら、おそらく/etc/puppet/utils/gen_passwordスクリプトを変更して、サービス/ホストごとに常に同じパスワードを返すようにします。Puppet に次のようにジェネレータを呼び出すようにさせますgenerate("/etc/puppet/utils/gen_password $::clientcert")

次に、スクリプトでそのシステムに対してパスワードが生成されているかどうかを確認し、生成されている場合はそれを返します。生成されていない場合は、新しいパスワードを生成し、それを保存して返します。

可能な限り、暗号化されていないパスワードを保存したり返したりしないでください。代わりに、ソルト付きパスワード ハッシュを生成して返します。

もちろん、パスワードの使用を完全に省略し、代わりに認証に証明書またはキーを使用できる場合は、さらに優れています。

関連情報