Puppet設定ガイドメモ
これのこと
Configuring Puppet — Documentation — Puppet Labs
Configuration Guide
初回設定の方法が書かれている
設定ファイル
- メイン設定ファイル: /etc/puppet.conf
- yumとかpackage baseでインストールしたなら、自動で作られてるはず
設定できるパラメータとデフォルト値を見るには、下記のコマンドを実行すると表示される
$ /usr/bin/puppet --genconfig
DNSの設定
- puppetクライアントはサーバ名:puppetを参照する
- localのDNSを構築しているなら、サーバにCNAMEを設定したほうがよい
puppet IN CNAME crabcake.picnic.edu.
CNAMEを指定すれば、いちいちそれぞれのクライアントでサーバを指定しなくても済む
CNAMEレコードの設定は、DNS and Bind本を参考にするといいだろう
- CNAMEレコードを追加後、nameサーバをリスタート(非DynamicDNSの場合)
DynamicDNSなら、下記のようにコマンドで設定(再起動不要)
$ nsupdate -k <tsig_key_file> -d > server ns.picnic.edu > zone picnic.edu > update add puppet.picnic.edu. 3600 CNAME crabcake.picnic.edu. > send
- サーバとクライアントの両方の/etc/hostsにホストエントリを追加することも可能
For the server:
127.0.0.1 localhost.localdomain localhost puppet
For the clients:
192.168.1.67 crabcake.picnic.edu crabcake puppet
WARNING: もし、puppetに対してpingできても、クライアントからサーバに接続できないというログが出力されていたら、サーバでport 8140が開放されているか確認する
Puppet Lauguage設定
Site Manifest作成
- Puppetは、宣言型システム
- puppet独自コードで記述されているmanifestを使う
- サイト全体の設定を中心に管理するのは、site manifest
- manifestは、複数に分割してもよい
- nodeごとの個々のシステムの差異は取り除かれるべき
- Puppetは、Primaryのmanifestとして/etc/puppet/manifests/site.ppを使う
- /etc/puppet/manifestsを作成して、そこにmanifestを追加する
- manifestの変更trackのために、scm(git, svnとか)を使うことを強く推奨
Manifestの例
とっかかりとして、sudoersファイルの適切なパーミッションを保持する例
# site.pp file { "/etc/sudoers": owner => root, group => root, mode => 440 }
Start the Central Daemon
- 多くは一つのサーバでいいはず
- Puppet Labsが公開しているドキュメントにスケールアウトとフェールオーバーについてのベストプラクティスがあるので、必要に応じて追加すればいい
- サーバの決定: puppetmasterが動作
- puppetmasterはinitスクリプトで自動起動した方がよさげ
- 必要に応じて、daemonで使うpuppetユーザとグループを作成する
daemon起動時に作成する場合
# /usr/sbin/puppetmasterd --mkusers
- puppet daemonを起動すれば、必要な証明書、ディレクトリ、ファイルは自動的に作成される
インストールの確認
- Puppetは、クライアントをサーバに対してすべてが正常に動作するか確認を行うことができる
- 最初のクライアントは、--waitforcertフラグを有効にすべき(default: 120秒)
# puppetd --server myserver.domain.com --waitforcert 60 --test
- --testフラグは、フォアグラウンドで出力を表示でき、一回のみ動作する
クライアント動作中のメッセージ
info: Requesting certificate warning: peer certificate won't be verified in this SSL session notice: Did not receive certificate
- 自動署名でなければ、上のメッセージが60秒おきにくりかえされる?
- 署名待ちリストをサーバで確認する方法
# puppetca --list
- クライアント名が表示されるはず
- 手動で署名
# puppetca --sign mytestclient.domain.com
※ waitforcertはdefault:5分らしいが、CentOS5.4環境でrpmインストールしたpuppetでは2分になってる