1

puppet クライアント/エージェントでサービス (httpd) が実行されているかどうかを識別する puppet マニフェスト コードを作成するにはどうすればよいですか。そうでない場合は、そのサービスを開始してメールを送信する必要がありますか?

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

node default {
    include apache
}

これが正しいコードではないことはわかっています。しかし、最初に hasstatus を確認し、サービスのステータスが false の場合は、サービスを開始してメールを送信したいと考えています。

ありがとうサンケットだんぎ


puppet マスターで tagmail.conf を設定し、puppet レポートも有効にしましたが、Gmail アカウントにメールを受信できません。puppet マスターで puppet エージェント レポートを確認できますが、メールを受信して​​いません。このためにメール サーバーを構成する必要がありますか?

My Tagmail Conf : 
all: xxxxxxx@gmail.com
4

1 に答える 1

7

Puppet は、状態 Z に到達するアクション Y を実行する前に X の値を確認する必要がある命令型のシェル スクリプトではありません。代わりに、状態 Z が必要であることを指定すると、Puppet は現在の状態を確認し、遷移を処理します。

これが意味することは、サービスを開始するかどうかを決定する前にサービスのステータスをチェックする必要はなく、代わりにmysqlサービスが実行されていることを宣言すると、Puppet がこれを保証するということです。

これをマニフェストのpackage行の横に置くだけです:

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

require 行は、サービスを評価または開始する前にパッケージがインストールされていることを確認します。

通知を送信するには、Puppet のタグメール レポート機能を使用できます。最初に、マスターで次のようなタグメール ファイル (参照ドキュメント) をセットアップします。/etc/puppet/tagmail.conf

mysql, apache: wwwadmins@example.com

マスターの puppet.conf で、次のように設定します。

[master]
reports = tagmail

puppet.conf でクライアントのレポートが有効になっていることを確認します。

[agent]
report = true

これにより、"mysql" または "apache" タグ (クラス名、モジュール名など) を持つリソースに関連する電子メールがトリガーされます。

于 2011-12-30T17:42:51.560 に答える