ksaitoの日記

日々試したことの覚え書き

puppetを使ってサーバを管理する その2

移転しました。

自動的にリダイレクトします。

[ubuntu][puppet][Debian]puppetを使ってサーバを管理する その2
puppetは、30分に一度、マニフェストを読み込んで動作します。
小人のようにマニフェスト通りにファイルのパーミッションやパッケージ、ファイルの状態を管理してくれます。
でも、やっぱり変更したことは教えて欲しいものです。
puppetのレポート機能を使ってpupptが変更した内容をメールで通知させるように設定することができます。

puppetmasterの設定

/etc/puppet/puppet.confに以下の設定を追加します。
reportsに複数のレポートをカンマ区切りで指定できます。
メールでの通知は、tagmailでsendmailにメーラ、reportfromに通知メールのfromのメールアドレスとして自分のメールアドレス、smtpserverにSMTPサーバを指定します。

[puppetmasterd]
reports=tagmail,log,rrdgraph,store
sendmail=/usr/lib/sendmail
reportfrom=自分のメールアドレス
smtpserver=localhost

レポートメールの送信先設定

レポートの送信先は、tagmail.confのallにカンマ区切りで送信先メールアドレスを指定します。
all以外にもラベルを複数設定できて、操作によって送信先を変更できるようです。

$ cat /etc/puppet/tagmail.conf
all: 送信先アドレス1,送信先アドレス2

ログの出力先

reportsにlogが指定されていると/var/log/syslogや/var/log/daemon.logにログが出力されます。
下記のようにするとログの監視ができます。

$ tail -f /var/log/syslog | grep puppet

puppetクライアントの設定

/etc/puppet/puppet.confに以下の行を追加します。

[puppetd]
report=true

通知されるメールの内容

タイトルに変更したサーバ名、本文に変更した内容が簡潔に記載されています。
下記の例は、禁止しておいたtelnetdがインストールされたのでパッケージをアンインストールしたときのレポートです。

件名	Puppet Report for "puppetクライアントのホスト名"
本文
Tue Mar 03 15:10:09 +0900 2009 //Node[basenode]/prohibition/Package[telnetd]/ensure (notice): removed

ちなみに設定は、こちらです。

$ cat manifests/classes/prohibition.pp
class prohibition {
  package {
    telnetd:
      ensure => absent
  }
}

$ cat manifests/nodes/basenode.pp
node basenode {
  include prohibition
}

$ cat manifests/site.pp
import "classes/*.pp"
import "nodes/*.pp"

node default inherits basenode {
}
$