サーバの構成情報の収集には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導入への布石も兼ねてちょっと使ってみようと思います。