2020年9月3日木曜日

ohai で macOS 上のデータを参照してみた

概要

ohai は chef の内部で使われているライブラリです
実行中のマシンの情報を取得することができます
今回は ohai 単体で実行してみました

環境

  • macOS 10.15.6
  • Ruby 2.7.1p83
    • ohai 16.4.12

インストール

  • bundle init
  • vim Gemfile
gem "ohai"
  • bundle config path vendor
  • bundle install

システム全体の情報を取得

とりあえず ohai で取得できる情報をすべて取得してみます
かなり長い JSON が表示されるのが確認できると思います

require 'ohai'

system_info = Ohai::System.new
system_info.all_plugins
puts system_info.json_pretty_print

特定のプラグインの情報だけ取得

ohai はプラグインを読み込みそのプラグインによって取得するシステムの情報を決定します
先程紹介した all_plugins はすべてのプラグインを読み込むので結構重たい処理になります
必要なプラグインの情報だけ取得したい場合はプラグイン名を引数に指定することで処理も軽くなります
データ取得後は data からハッシュとして参照することができます

system_info = Ohai::System.new
system_info.all_plugins(['cpu', 'os'])
puts system_info.json_pretty_print
puts system_info.data['os']

プラグインの一覧を表示

ではプラグインの一覧はどうやって参照するかというと一度すべてのプラグインを読み込んだあとはで provides_map を参照します
ここで表示されたプラグイン名を指定することで必要なプラグインだけを使用することができます

require 'ohai'

system_info = Ohai::System.new
system_info.all_plugins
system_info.provides_map.all_plugins.each do |plugin|
  puts plugin.name
end

実行中の OS の表示

特定の情報はプラグインを使用しないでも取得することができます
OS の情報を取得したいだけであれば以下のようにして取得することができます

require 'ohai'

puts Ohai::Mixin::OS.collect_os

最後に

ohai を単体で使ってみました
リソースの使用量も取得できるので簡単な監視ツールとして使うことができると思います
chef だけを使っているとあまり ohai のことを気にすることはありませんが ohai の仕組みを知ることで chef も更に使えるようになると思います

参考サイト

0 件のコメント:

コメントを投稿