第1回では、システムの自動管理がなぜ必要なのか、ということと、Puppetの概要についてお話しました。今回はPuppetをインストールして起動するまでの手順についてご説明します。
Puppetのインストール
Puppetのインストール方法は、以下の3つのうちのいずれかから選択できます。
- パッケージシステムによるインストール
- RubyGemsによるインストール
- tarballからのインストール
パッケージシステムによるインストールが最もお勧めです。
インストールの前提条件
PuppetはRubyでできているため、当然Rubyが必要です。Puppetのtarballに含まれるREADMEには、Ruby 1.8.1以降が必要と記載されています。
また、Facterというライブラリのバージョン1.1.1以降が必要です。このライブラリは、システムに関する情報(プロセッサアーキテクチャ、利用OSとそのバージョン、ドメイン名、FQDN、IPアドレスなど)を収集するための、クロスプラットフォームなRubyライブラリです。
ただし、パッケージシステムによるインストールの場合、通常は依存関係を自動的に解決してくれますので、RubyやFacterを明示的にインストールする必要はありません。
また、2007年7月16日現在、Puppetの最新バージョンは0.23.0ですが、まだ安定していないようですので、0.22.xの使用をお勧めします。
パッケージシステムによるインストール
以下のOSでは、パッケージシステムによるインストールが可能です。
- Debian GNU/Linux
- RedHat Enterprise Linux/CentOS
- SuSE Linux
- Gentoo Linux
- Fedora
- FreeBSD
- OpenBSD
- Solaris
各OSでの具体的なインストール手順について、順に見ていきます(ただし、すべての手順を筆者は試したわけではありませんので、ここに書かれた手順そのままではインストールできないこともあるかもしれません。ご了承ください)。
Debian GNU/Linuxでのインストール
Debian GNU/Linux では、Puppetは標準パッケージとしてメンテナンスされていますので、以下の様にapt-getを実行するだけでインストールが完了します。
詳細はPuppet本家のドキュメントをご参照ください。
Red Hat Enterprise Linux/CentOS でのインストール
Red Hat Enterprise Linux 4, 5や、CentOS 4, 5では、DAG RPM Repositoryやそのミラーリポジトリを利用することにより、yumでインストールすることができます。例えば、理化学研究所のミラーからインストールする場合には、
といった内容で /etc/yum.repos.d/dag.repoファイルを作成し、
と実行することでインストールできます。
また、David Lutterkort氏がメンテナンスしているyumリポジトリからインストールすることも可能です。こちらの方がより新しいバージョンがメンテナンスされているようです。
あわせてPuppet本家のドキュメントもご参照ください。
SUSE Linuxでのインストール
SUSE Linuxの場合には、software.openSUSE.orgのリポジトリからインストールすることが可能です。
適切なリポジトリをYaSTのインストールソースに追加し、
と実行することで、インストールすることができます。
openSUSE 10.2の場合には、zypperを利用して以下の手順でインストールすることも可能です。
あわせてPuppet本家のドキュメントもご参照ください。
Gentoo Linuxでのインストール
オフィシャルのPortageツリーでebuildが提供されています。デフォルトではpuppetとfacterはマスクされていて、そのままではインストールできませんので、/etc/portage/package.keywordsに、
という記述を追加し、
と実行してインストールします。
あわせてPuppet本家のドキュメントもご参照ください。
Fedoraでのインストール
Fedora Core 4, 5, 6の場合はFedora Extrasで、Fedora 7の場合はFedora Updatesでパッケージが配布されており、特に何も設定しなくても、以下の様にコマンドを実行することでインストールできます。
FreeBSDでのインストール
オフィシャルなパッケージが提供されていますので、以下の様にコマンドを実行することでインストールできます。
あわせてPuppet本家のドキュメントもご参照ください。
OpenBSDでのインストール
オフィシャルなパッケージが提供されていますので、以下の様にコマンドを実行することでインストールできます。
あわせてPuppet本家のドキュメントもご参照ください。
Solarisでのインストール
Solarisの場合は、Blastwaveアーカイブを利用することにより、以下の手順でインストールできます。
あわせてPuppet本家のドキュメントもご参照ください。
RubyGemsによるインストール
ご利用のOSでパッケージが提供されていない場合には、RubyGemsを利用して、以下の様にインストールすることができます。
tarballからのインストール
パッケージシステムとRubyGemsを利用する以外にも、tarballを直接ダウンロードして、同梱されているinstall.rbを実行することでインストールすることもできます。
Puppet起動前の準備
では、インストールが済んだところで、Puppetを起動してみましょう。
起動前の準備として、パッケージからインストールした場合には、/etc/puppet 以下にファイルやディレクトリができていますが、これらをすべて削除するか、別ディレクトリへ退避してください。これはPuppetサーバ、Puppetクライアントの双方で行います。
Ppuppetは基本的に、全く設定をせずに起動させることができます。逆に自分の知らない設定がされていることによって、うまく起動しなかったり、意図した通りに動作しないことがありますので、まずは一度既存の設定ファイル等をすべて削除し、あらためて必要な設定を施していくことをお勧めします。
Puppetサーバの起動
Puppetサーバを起動させるためには、マニフェストが必須となります。
マニフェストとは、前回の記事でも触れましたが、独自の宣言型言語によって、システムのあるべき状態を記述したファイルです。
今回は起動するだけですので、以下の様に空のマニフェストを作成します。
では、実際に起動してみます。Puppetサーバ側では、puppetmasterdというデーモンを起動します。初回の起動時には--mkusersオプションをつけることにより、puppetユーザ/puppetグループが作成され、puppetmasterdプロセスのオーナは、このユーザ/グループに設定されます。
2回目以降の起動や、パッケージからのインストールで自動的にpuppetユーザ/puppetグループが作成されている場合には、--mkusersオプションは必要ありません。
--verboseオプションをつけることにより、puppetmasterdはフォアグラウンドで起動し、内部で何が行われているのかメッセージ出力してくれます。--verboseオプションがない場合には、メッセージが出力されず、バックグラウンドで起動します。
Puppetクライアントの起動
次にPuppetクライアント側で、puppetdというデーモンを起動します。--serverオプションでPuppetサーバを指定します。--verboseオプションはpuppetmasterdの場合と同様の動作となります。
Puppetサーバ/クライアント間は、SSLv3認証を利用しますので、初回起動時には証明書を作成し、Puppetサーバに対して署名するようリクエストします。
Puppetサーバ側では、以下の様なメッセージが表示されます。
/etc/puppet/autosign.confを設定することで、自動で署名することも可能ですが、今回は手動で署名します。フォアグラウンドで動いているpuppetmasterdを停止するか、別ターミナルで以下の様にコマンドを実行し、署名リクエストの確認と署名を行います。
puppetmasterdを停止させた場合には、ここでもう一度起動します。
少し待つと、Puppetクライアント側で以下の様に表示され、証明書に署名されたことが通知されます。
エラーはPuppetサーバ上のマニフェストに、このPuppetクライアント用の設定がないために表示されていますが、マニフェストは空ですので、出て当然のエラーということになります。
以上がPuppetのインストールから起動までの流れとなります。次回は具体的なマニフェストを作成して、実際に簡単なシステム管理を行う手順についてご説明したいと思います。