はじめに
Chefは、実行環境の状態をJSON形式で出力する「Ohai」というライブラリを利用しますが、「Ohai」単体で利用することもできます。
サーバの設定値を確認するコマンドとして、このようなライブラリを利用すると便利と思い、本記事ではLinuxサーバにChefの環境用意のついでにOhaiをインストールする流れを記載します。
環境情報
- Debian GNU/Linux 9 (stretch)
- curl 7.52.1 (x86_64-pc-linux-gnu)
インストールのハンズオン
結論から言えば以下のcurl
コマンドでインストールします。-L
リダイレクト先に対してもリクエストを発行します。デフォルトでは実施しませんが、今回はChef社が提供している信頼できるリンクなので利用しています。
# curl -L https://www.opscode.com/chef/install.sh | bash ... Installing chef installing with dpkg... Selecting previously unselected package chef. (Reading database ... 62425 files and directories currently installed.) Preparing to unpack .../chef_15.2.20-1_amd64.deb ... Unpacking chef (15.2.20-1) ... Setting up chef (15.2.20-1) ... Thank you for installing Chef Infra Client! For help getting started visit https://learn.chef.io
ちなみに、Chefにも通じることですが環境の違いはスクリプト側で吸収してくれています。
install.shの中身を見ると分かりますが、例えばDebianがdpkgを利用していることをシェルの中で判断して
install_file() { echo "Installing $project $version" case "$1" in "rpm") if test "x$platform" = "xnexus" || test "x$platform" = "xios_xr"; then echo "installing with yum..." yum install -yv "$2" else echo "installing with rpm..." rpm -Uvh --oldpackage --replacepkgs "$2" fi ;; "deb") echo "installing with dpkg..." dpkg -i "$2" ;; "bff") echo "installing with installp..." installp -aXYgd "$2" all ;; ....
dpkgコマンドを発行しています。
インストールが完了すると以下のように/usr/bin
配下にChef関連のコマンドのリンクができており、その中に「ohai」が存在します。
# ls -l /usr/bin | grep chef lrwxrwxrwx 1 root root XX chef-apply -> /opt/chef/bin/chef-apply lrwxrwxrwx 1 root root XX chef-client -> /opt/chef/bin/chef-client lrwxrwxrwx 1 root root XX chef-shell -> /opt/chef/bin/chef-shell lrwxrwxrwx 1 root root XX chef-solo -> /opt/chef/bin/chef-solo lrwxrwxrwx 1 root root XX knife -> /opt/chef/bin/knife lrwxrwxrwx 1 root root XX ohai -> /opt/chef/bin/ohai
バージョンは以下で確認できます。
# ohai -v Ohai: 15.2.5
利用してみる
コマンド自体はシンプルで
# ohai --help
Usage: /usr/bin/ohai (options)
-c, --config CONFIG A configuration file to use
-d, --directory DIRECTORY A directory to add to the Ohai plugin search path. If passing multiple directories use this option more than once.
-l, --log_level LEVEL Set the log level (debug, info, warn, error, fatal)
-L, --logfile LOGLOCATION Set the log file location, defaults to STDOUT - recommended for daemonizing
-v, --version Show Ohai version
-h, --help Show this message
実際そのままコマンド押下すれば利用できます。
# ohai | wc 4582 7793 105200
さくっと大量の情報を格納してくれます。
試しに冒頭で記載したcurl
コマンドのバージョンを取得してみます。
表現方法は異なりますが、確かにバージョンが一致しています。
# ohai | grep -A 2 curl "curl": { "version": "7.52.1-5+deb9u9", "arch": "amd64"
終わりに
本記事ではChefの基幹技術であるOhaiを利用する簡単な流れを記載しました。
サーバーの環境定義書の作成にも使えそうな便利なコマンドなので、興味がある方はぜひ試してみてください。
以上、ご参考になれば幸いです。