2011-12-30 16 views
1

パペットクライアント/エージェント上でサービス(httpd)が実行中であるかどうかを識別するパペットマニフェストコードをどのように記述できますか?そうでなければ、そのサービスを開始して電子メールを送信する必要がありますか?サービス状況に応じてパペットコードを実行する

class apache { 
    package { mysql-server: ensure => installed } 
    if hasstatus == "false" { 
     service { "mysql": 
      ensure => running, 
      require => Package["mysql-server"], 
     } 
    } 
} 

node default { 
    include apache 
} 

これは正しいコードではありません。しかし、まずはhasstatusをチェックしたいのですが、サービスステータスがfalseの場合、サービスを開始して電子メールを送信したいと思います。

おかげ Sanket Dangi


私は人形のマスターにtagmail.confを設定しているとも人形のレポートを有効にしますが、私のGmailアカウントにメールを受信することができませんでした。私は人形師についての人形のエージェントの報告を見ることができますが、メールを受け取っていません。このためにメールサーバーを設定する必要はありますか?

My Tagmail Conf : 
all: [email protected] 

答えて

7

人形があなたの代わりに状態Zにあなたを取得アクションYを実行する前に、Xの値をチェックする必要が不可欠シェルスクリプトではありません、あなたは、状態Zをしたいことを指定し、人形は、現在の状態をチェックしますトランジションを処理します。

これが意味することは、それを起動したりせず、代わりにあなたがmysqlのサービス実行されている必要があることを宣言し、人形が、これがあることを保証するかどうかを決定する前に、サービスの状態を確認する必要がないということです場合。

は単にpackageラインと一緒にあなたのマニフェストでこれを持っている:

service { "mysql": 
    ensure => running, 
    enable => true, 
    require => Package["mysql-server"], 
} 

ザ・ラインは、パッケージが評価またはサービスを開始する前にインストールされることを保証が必要です。

通知を送信するには、パペットのタグメールレポート機能を使用できます。まず、マスターに/etc/puppet/tagmail.confで、このようなtagmailファイル(reference docs)を設定:

mysql, apache: [email protected] 

とマスターのpuppet.conf、設定中:

[master] 
reports = tagmail 

クライアントがpuppet.confで有効レポートを持っていることを確認:

[agent] 
report = true 

これは、その後、「mysqlの」または「アパッチ」のタグ(クラス名、モジュール名など)を備えたすべてのリソースに関連する電子メールをトリガする必要があります。

+0

ありがとう:) –

関連する問題