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

Команда запуска марионетки на мастере

Я пытаюсь создать модуль letsencrypt в Puppet. По сути, я пытаюсь достичь следующего:

  1. Добавление нового узла и импорт моего модуля: class { "letsencrypt": url => "example.com" }
  2. Затем мастер марионетки проверит в своей папке с файлами, есть ли уже закрытый ключ и CSR для данного URL-адреса, а затем либо:
    • скопируйте закрытый ключ и CSR на узел, или
    • бегать openssl openssl genrsa 4096 > example.com.key (и один ключ для учетной записи letsencrypt и запроса на подпись сертификата), сохраните его в папке с файлами марионетки и снова выполните шаг 2.
  3. Настройте задание cron на узле для запуска крошечный раз в три месяца.
  4. Один раз запустите acme-tiny на узле, получите первый сертификат и перезагрузите / запустите веб-сервер.

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

Возможно ли это с Puppet? Или я должен полностью передать всю процедуру узлу, не отслеживая вообще ничего в Puppet (просто настраивая cronjob и т. Д.)?

Спасибо!

Puppet предоставляет функцию с именем generate, который заполнит локальную переменную манифеста выходными данными произвольной локальной команды. Его можно использовать для вызова настраиваемого локального сценария, который выполняет генерацию ключа, устанавливает открытый ключ локально и возвращает содержимое закрытого ключа, которое затем можно установить в качестве файлового ресурса на марионеточном агенте. Например:

file { "/path/to/private/key": ensure => present, content => generate("/path/to/my/custom/script"), ... }