[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 { } $