特集
» 2008年08月25日 00時00分 UPDATE

Leverage OSS:ネットワーク上でのシステム管理を容易にするPuppet (1/2)

システム管理コマンドを複数のマシンに対して発行できるPuppetは、宣言型言語を学ぶ手間が掛かるが、ソフトウェアのインストールや設定の手間を大きく軽減してくれる強力なツールだ。

[Ben-Martin,Open Tech Press]
SourceForge.JP Magazine

 Puppetを利用すれば、システム管理コマンドを1台または複数のマシンに対して発行でき、ディストリビューションによる環境の違いにも対応できる。例えば、MySQLをインストールする場合にはこうした管理上の操作が重要になるが、インストール先マシンのディストリビューションがMaemoなのかUbuntuなのか、あるいはFedoraなのかを気にしなくても済むのだ。

 自宅にはデスクトップマシンと場合によってはサーバマシンもあり、それ以外に1、2台のノートPC、さらにLinuxベースの携帯電話やモバイルインターネット端末(MID:Mobile Internet Device)まで持っているLinuxユーザーは少なくない。すべてのLinuxマシンに対して1つ変更を加えるだけでも、手作業で行うとそれなりの負担になる。この作業をいっそう面倒にしているのが、MIDとノートPCとの間のLinuxディストリビューションの違いだ。

 Puppetでは、実行したいシステム管理タスクを宣言型言語で記述することで、システムのハードウェアアーキテクチャやLinuxディストリビューションの違い、あるいは特定のマシンのどこにApacheのDocumentRootがあるかといったことを考慮しなくても済む。Puppetはクラス(class)をはじめとする多くの機能を持ち、記述されたシステム管理タスクの実行時に環境ごとの細かな違いを吸収できるのだ。

 Puppetの宣言型言語は、最大の強みであると同時に最大の弱みでもある。導入に当たっては新たな言語とやり方を覚えなければならず、その過程は学習曲線を描く。クラスとリソースが抽象化されていることもPuppetの習得を困難にしている。そもそも、大半のシステム管理者はbashスクリプトを利用してシステム管理を行うのに慣れている。無意識のうちにsshによるやり方が思い浮かぶようなタスクを実行するのに、わざわざ新しい言語を覚えなければならないことがPuppet導入の妨げとなる。

 システム管理タスク用にカスタマイズされた言語を使えば、タスクを安全に繰り返し実行可能なものにできる。多くのシステム管理用スクリプトは次の処理に進む前に確認のための入力を求めてくるが、Puppetはこうしたチェックも代わりにやってくれる。

 Puppetでは、クライアントサーバモデルが採用されている。puppetmasterdデーモンと呼ばれるサーバが、どのシステム管理タスクを実行すべきかをクライアント側に伝える役割を果たす。HardyのUniverseリポジトリには、Puppetのクライアントサーバが別々にパッケージ化されている。また、Fedora 9にはpuppetとpuppet-serverとして、openSuse 11にも1-Clickインストールに対応したクライアントサーバの各パッケージが用意されている。以下では、64ビット版Fedora 9マシンを使い、FedoraのパッケージリポジトリからPuppetのバージョン0.24.4を入手してインストールを行う。

 Fedora用の各パッケージはpuppetクライアントとそのサーバデーモンをインストールしてくれるが、これらのサービスは自動的には起動されず、ブート時の起動もスケジューリングされていない。そこで、以下のコマンドにより、システムのブート時に自動で立ち上がるようにするとともにpuppetサービスの起動を行う。

# chkconfig --add puppetmaster

# chkconfig --add puppet

# service puppetmaster start

# service puppet start


 Puppetを利用する新しいクライアントマシンの最初のセットアップでは、サーバへの接続とSSL証明書への署名要求をクライアントに行わせる必要がある。クライアントでこの処理を実行した後、サーバ側でクライアントの証明書への署名を行う。これで、このクライアントでpuppetサービスが利用可能になるはずだ。この手順の詳細はインストール作業の解説ページに記載されている。

 Puppetクライアントには、puppetmasterサーバがどこで稼働しているかを教えてやる必要がある。なお、今回はサーバとクライアントを同じマシン上で実行している。ここではサーバ名を直接指定したが、サーバ名を「puppet」のままにしておいてDNSのCNAMEを使ってクライアントが実行時にサーバのアドレスを解決できるようにする方法を勧めるPuppetユーザーもいる。

vi /etc/sysconfig/puppet

...

PUPPET_SERVER=virtualfed9


       1|2 次のページへ

Copyright © 2010 OSDN Corporation, All Rights Reserved.

Loading

ピックアップコンテンツ

- PR -

注目のテーマ

マーケット解説

- PR -