Назад | Перейти на главную страницу

Переменная eval марионетки только один раз

Я генерирую пароль для новых пользователей с пнг

Просто:

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

Единственная проблема с этой командой в том, что она мне нужна только один раз, но она оценивается каждый раз при запуске марионетки.

Эта переменная используется внутри одного Exec декларация.

Есть ли возможность оценивать переменную только в случае необходимости? Например, если он используется впервые.

Вы можете использовать несколько параметров для условного запуска exec. Выберите, какой из них вам подходит:

  • если только - Если этот параметр установлен, то этот exec будет выполняться, если команда не вернет 0.
  • создает - Файл, который нужно искать перед запуском команды. Команда будет запущена, только если файл не существует.
  • только если - Если этот параметр установлен, то этот exec будет запускаться только в том случае, если команда вернет 0.
  • обновить только - Команду следует запускать только в качестве механизма обновления при изменении зависимого объекта.

Если вы не используете пароль в Exec, то методы, предложенные Казимирас Алиулис может не сработать для вас.

Если бы это был я, я бы, наверное, просто изменил /etc/puppet/utils/gen_password сценарий, чтобы всегда возвращать один и тот же пароль для каждой службы / хоста. У вас будет марионетка называть generte вот так generate("/etc/puppet/utils/gen_password $::clientcert").

Затем в сценарии вы должны проверить, был ли сгенерирован пароль для этой системы и вернул ли он его. Если нет, то создайте новый, сохраните его и верните.

По возможности не храните и не возвращайте незашифрованный пароль. Вместо этого сгенерируйте и верните соленый хеш пароля.

Конечно, если бы вы могли вообще отказаться от использования паролей и вместо этого использовать сертификаты или ключи для аутентификации, это было бы еще лучше.