私は Puppet を初めて使用し、依存関係の操作について質問があります。
Puppet を使用して、Ubuntu 11.04 に Nginx 1.0.5 をインストールしています。natty には通常 Nginx 0.8 が付属しているため、新しい apt リポジトリを追加する必要があります。コマンドラインでは、インストールは次のようになります。
# 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,
}
}
スクリプトは機能しますが、nginx が実際にインストールされているときだけではなく、毎回 exec{} ディレクティブが実行されます。理想的には、nginxのインストールが単にチェックされているときではなく、実際のnginxのインストールの前にのみ「apt」コマンドを実行したいと思います。
通知/サブスクライブ モデルについては基本的な理解がありますが、実際に nginx をインストールするときにのみ、nginx ディレクティブで "notify" シグナルを送信する方法がわかりませんでした。