Я новичок в Puppet, и у меня есть вопрос о работе с зависимостями.
Я использую Puppet для установки Nginx 1.0.5 на Ubuntu 11.04. Требуется добавить новый репозиторий apt, так как natty обычно поставляется с Nginx 0.8. В командной строке установка проходит так:
# apt-get install python-software-properties
# add-apt-repository ppa:nginx/stable
# apt-get update
# apt-get install nginx
Итак, я написал этот скрипт Puppet:
class nginx::install {
package { "nginx":
ensure => present,
require => Exec["nginx_repository"],
}
exec { "add-apt-repository ppa:nginx/stable && apt-get update":
alias => "nginx_repository",
require => Package["python-software-properties"],
}
package { "python-software-properties":
ensure => installed,
}
}
Скрипт работает, но директива exec{} запускается каждый раз, а не только при фактической установке nginx. В идеале я бы хотел, чтобы команды «apt» запускались только перед фактической установкой nginx, а не когда установка nginx просто проверяется.
У меня есть элементарное представление о модели уведомления/подписки, но я не был уверен, как заставить директиву nginx отправлять сигнал «уведомления» только при фактической установке nginx.