Puppet設定ガイドメモ

これのこと
Configuring Puppet — Documentation — Puppet Labs

Configuration Guide

初回設定の方法が書かれている

サーバとクライアントのファイアウオールポート開放

下記をサーバ/クライアントの両方で開放する

  • TCP/UDPポート: 8140

設定ファイル

  • メイン設定ファイル: /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分になってる