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

Убедитесь, что Puppet выполняет процедурные шаги как часть развертывания

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

В настоящее время мы вручную замораживаем кластер Veritas, чтобы он не пытался переключить приложение, запускаем Puppet, который устанавливает RPM (при необходимости останавливая приложение), и Puppet получает указание не запускать приложение. Затем мы вручную запускаем приложение и размораживаем Veritas. Наконец, мы проверяем статус.

Я хотел бы автоматизировать эти шаги Veritas, чтобы нам оставалось только запустить Puppet. Эти шаги выполняются только в нашей производственной среде. Для всех остальных нам просто нужно вызвать установку RPM. Чтобы усложнить ситуацию, я не хочу выполнять ни один из этих шагов, если ничего не изменилось.

Каков предпочтительный способ сделать что-то подобное? Я читал о Этапы выполнения, но похоже, что это потребует значительного рефакторинга моего существующего кода.

Интересно, может ли кто-нибудь дать мне несколько идей, как с этим справиться.

Основываясь на вашем описании проблемы, вам нужно либо использовать планы, либо передать все в exec или скрипт, чтобы вы могли указать порядок вещей. Puppet проявляется, поскольку не приспособлен для вашего варианта использования.

Примером может быть:


exec { 'do veritas upgrade' :
  onlyif => '${lookup(veritas_version)} is greater than /usr/bin/veritas --version',
  exec => 'freeze && stop && install && start && unfreeze && verify',
}