サーバの構成情報の収集にはdmidecode、uname、/proc/*などなど、いろいろ駆使してると思うのですが
覚えるの大変・・・出力のパースめんどくさい・・・複数OS使ってる場合は特に・・・
というわけでいい感じにサーバの構成情報を出力してくれるツール、ohaiを紹介
(実はChefっていう構成管理ツールで内部的に使うためのものなのですが単体でも利用可能です)
http://wiki.opscode.com/display/chef/Ohai
インストール
Rubyで書かれたツールなのでgemで
[root@test01 ohai]# gem install ohai
※うまくインストールできない場合はgemをアップデートしてください。ruby-develも必要
実行例(コマンド)
ohaiコマンドを実行するとJSON形式でサーバの情報が出力されます
HPサーバ上のCentOS
[root@test01 ohai]# ohai { "dmi": { "system": { "manufacturer": "HP", "product_name": "ProLiant DL360 G5", "serial_number": "CN77XXXXXX " ... "kernel": { "machine": "x86_64", "name": "Linux", "os": "GNU/Linux", "version": "#1 SMP Wed Jun 23 18:42:01 JST 2010", "release": "2.6.18.8" ... "platform_version": "5.2", "platform": "centos", ... "cpu": { "real": 2, "total": 4, "0": { ... "model_name": "Intel(R) Xeon(R) CPU 5140 @ 2.33GHz", ... "memory": { ... "total": "4046944kB", "free": "40408kB", ... "swap": { "total": "2031608kB", "free": "1921044kB", "cached": "58584kB" }, ... "filesystem": { "/dev/cciss/c0d0p1": { "kb_available": "71394", "mount": "/boot", "percent_used": "26%", "kb_used": "24473", "kb_size": "101086" }, ... "languages": { "perl": { "archname": "x86_64-linux-thread-multi", "version": "5.8.8" }, ...
HW、OS、言語などなど
VMWare Player上のDebian
仮想化関連の情報も取得できます
root@debian6:~# ohai ... "vendor": "Phoenix Technologies LTD", ... "manufacturer": "VMware, Inc.", "wake_up_type": "Power Switch", "product_name": "VMware Virtual Platform" ... "virtualization": { "role": "guest", "system": "vmware" }, ... "platform": "debian" "platform_version": "6.0.2", ...
KVMゲストだとこんな感じ
[root@vm01 ~]# ohai ... "vendor": "QEMU", ... "manufacturer": "Red Hat", "product_name": "KVM", "serial_number": "Not Specified" ... "virtualization": { "role": "guest", "system": "kvm" }, ...
実行例(プログラム)
JSONをパースしてもいいのですが(ohai入れるとRubyのYajlってライブラリがついてきます)
rubyでライブラリとして扱うこともできます。
※HPサーバだったらhpacucliを更新する例
#!/usr/bin/ruby require 'rubygems' require 'ohai' ohai = Ohai::System.new ohai.all_plugins if ohai[:dmi][:system][:manufacturer] == 'HP' puts "HP!!!" system("yum -y update hpacucli") end
バグ
Ruby1.8.7と現状gemでインストールされるohai0.6.4でdmiやカーネル等、いろいろ情報抜けがありました。
デバッグオプションをつけるとこんなエラーが
[root@test01 lib]# ohai -l debug ... [Sat, 17 Sep 2011 19:03:58 +0900] DEBUG: Plugin kernel threw exception #<NameError: uninitialized constant Ohai::Mixin::Command::StringIO> /usr/lib/ruby/gems/1.8/gems/ohai-0.6.4/lib/ohai/mixin/command.rb:249:in `popen4' ...
バグっぽいです。
https://tickets.opscode.com/browse/OHAI-291
0.6.6で解決済みとのことで早くアップデートしてもらいたいところですが、
とりあえずohai.rbにrequire 'stringio'を追加すれば正常に動きます
(/usr/lib/ruby/gems/1.8/gems/ohai-0.6.4/libあたりにあります)
require 'ohai/version' require 'ohai/config' require 'ohai/system' #追加 require 'stringio'
とりあえず
プラグインで機能追加もできそう。
なかなか便利そうなツールなのでChef導入への布石も兼ねてちょっと使ってみようと思います。