Я пытаюсь создать модуль letsencrypt в Puppet. По сути, я пытаюсь достичь следующего:
class { "letsencrypt": url => "example.com" }
openssl openssl genrsa 4096 > example.com.key
(и один ключ для учетной записи letsencrypt и запроса на подпись сертификата), сохраните его в папке с файлами марионетки и снова выполните шаг 2.В основном моя проблема в том, как выполнить команду на мастере марионеток. Я хотел бы запустить генерацию ключа на мастере марионетки и иметь там закрытый ключ, а на узле запускать только запрос сертификата.
Возможно ли это с Puppet? Или я должен полностью передать всю процедуру узлу, не отслеживая вообще ничего в Puppet (просто настраивая cronjob и т. Д.)?
Спасибо!
Puppet предоставляет функцию с именем generate
, который заполнит локальную переменную манифеста выходными данными произвольной локальной команды. Его можно использовать для вызова настраиваемого локального сценария, который выполняет генерацию ключа, устанавливает открытый ключ локально и возвращает содержимое закрытого ключа, которое затем можно установить в качестве файлового ресурса на марионеточном агенте. Например:
file { "/path/to/private/key":
ensure => present,
content => generate("/path/to/my/custom/script"),
...
}