Я генерирую пароль для новых пользователей с пнг
Просто:
$password = generate('/etc/puppet/utils/gen_password')
Единственная проблема с этой командой в том, что она мне нужна только один раз, но она оценивается каждый раз при запуске марионетки.
Эта переменная используется внутри одного Exec декларация.
Есть ли возможность оценивать переменную только в случае необходимости? Например, если он используется впервые.
Вы можете использовать несколько параметров для условного запуска exec. Выберите, какой из них вам подходит:
Если вы не используете пароль в Exec, то методы, предложенные Казимирас Алиулис может не сработать для вас.
Если бы это был я, я бы, наверное, просто изменил /etc/puppet/utils/gen_password
сценарий, чтобы всегда возвращать один и тот же пароль для каждой службы / хоста. У вас будет марионетка называть generte вот так generate("/etc/puppet/utils/gen_password $::clientcert")
.
Затем в сценарии вы должны проверить, был ли сгенерирован пароль для этой системы и вернул ли он его. Если нет, то создайте новый, сохраните его и верните.
По возможности не храните и не возвращайте незашифрованный пароль. Вместо этого сгенерируйте и верните соленый хеш пароля.
Конечно, если бы вы могли вообще отказаться от использования паролей и вместо этого использовать сертификаты или ключи для аутентификации, это было бы еще лучше.