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

Переменные, генерирующие марионетку внутри скрипта

Я переношу набор сценариев bash, которые развертывают сервер в Puppet. Почти все функции перенесены в Puppet, но я не вижу, как перенести один бит сценария bash, который выполняет следующие действия:

  1. Установите PHP.
  2. С помощью сценария PHP сгенерируйте случайный пароль и сохраните его как переменную в сценарии bash.
  3. Используйте эту переменную в другом месте сценария bash, чтобы установить пароль root MySQL.

Как я могу динамически установить переменную марионетки таким образом?

кстати, я использую Puppet в автономной версии, используя puppet apply поскольку у меня нет отдельного сервера, который мог бы выступать в роли хозяина марионеток. Кроме того, если кому-то интересно, почему это делается именно так, то корневой пароль MySQL не существует нигде, кроме коробки, где он используется, и не записывается ни в какие (читаемые) файлы.

Вы можете просто использовать функцию "generate" в своем манифесте, чтобы вызвать какой-то генератор случайных строк (pwgen?) И присвоить это значение переменной:

https://puppet.com/docs/puppet/3.8/function.html#generate

Похоже, что это невозможно сделать с Puppet, работающим в автономной версии.

Все переменные внутри классов вычисляются, когда скрипты читаются Puppet, поэтому нет способа создать цепочку зависимостей, чтобы:

  • Установите PHP.
  • Вызовите сценарий PHP для генерации значения.
  • Используйте значение.

В этой последовательности.

Теоретически можно использовать [run stages][1] для управления этой зависимостью, но их нельзя использовать, если ваши классы includeed в проект, поэтому их не рекомендуется использовать.

Поскольку я использую сценарий начальной загрузки для установки Puppet, я также могу просто установить PHP через сценарий начальной загрузки, вместо того, чтобы Puppet управлял им.