Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,208)  
HandBrake Japanese Language Version  (3,353)  
CrystalDiskInfo  (1,743)  
CotEditor  (1,120)  
CrystalDiskMark  (866)  
Boookends  (788)  
SMPlayer  (642)  
えこでこツール  (599)  
Tera Term  (595)  
10  FFFTP  (579)  
11  Cabos  (530)  
12  BathyScaphe  (494)  
13  ffdshow  (481)  
14  MergeDoc  (464)  
15  ギコナビ  (438)  
More >>

最近ブックマークされた記事

ネットワーク上でのシステム管理を容易にするPuppet

2008年08月21日 11:09 Ben-Martin(2008年8月11日(月)) 1 2 3
  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
最終更新:2008年10月21日 17:07