Как написать модули Puppet для таких пакетов, как tigervnc или openvpn, которые требуют от пользователя установки паролей или настроек по умолчанию?

Я изучаю марионетку и пытаюсь написать модули для установки таких сервисов, как tigervnc и openvpn.

Проблема в том, что для tigervnc требуется начальная установка пароля пользователем. Я пробовал использовать: "exec {'/usr/bin/echo password | /usr/bin/vncpasswd > ~/.vnc/passwd" Это работает, если я запускаю его в командной строке, если я вошел в систему как пользователь но не работает при запуске через puppet.

Проблема с openvnc заключается в том, что он требует большого взаимодействия с пользователем для настроек по умолчанию для генерации сертификатов/центров сертификации и генерации ключей. Я пытался использовать execs с методами "pkitool", которые работают до определенного момента, но не очень хорошо или стабильно. Я также опасаюсь использовать много исполнителей, если есть лучший способ сделать это.

Итак, подводя итог, мой главный вопрос заключается в том, как справляться с этими взаимодействиями с пользователем при попытке автоматизировать установку с помощью puppet, и есть ли лучший способ, чем запускать множество исполняемых файлов, которые мне кажутся последним средством?

Спасибо


person user2178894    schedule 08.01.2016    source источник


Ответы (1)


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

Экономический подход заключается в

  1. создайте скрипт, который выполняет всю необходимую работу, которую не могут выполнить ресурсы Puppet
  2. заставить Puppet развернуть этот скрипт на агенте
  3. запускать его в подходящее время через exec (вместе с хорошими запросами creates или onlyif)

Сценарии, которые запускают мастера установки, основанные на интерактивном вводе, вероятно, должны полагаться на expect и его друзей.

person Felix Frank    schedule 10.01.2016