(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Chef】ohaiをLinux環境で利用する流れ

スポンサーリンク

はじめに

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を利用する簡単な流れを記載しました。
サーバーの環境定義書の作成にも使えそうな便利なコマンドなので、興味がある方はぜひ試してみてください。

以上、ご参考になれば幸いです。