【发布时间】:2011-11-04 18:53:22
【问题描述】:
我是 Puppet 的新手,有一个关于使用依赖项的问题。
我正在使用 Puppet 在 Ubuntu 11.04 上安装 Nginx 1.0.5。它需要添加一个新的 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 时运行。理想情况下,我希望仅在实际安装 nginx 之前运行“apt”命令,而不是在仅检查 nginx 安装时运行。
我对通知/订阅模型有初步的了解,但我不确定如何让 nginx 指令仅在实际安装 nginx 时发送“通知”信号。
【问题讨论】:
标签: ubuntu nginx ubuntu-11.04 puppet