ohai+ConsulでIT資産管理を便利にしよう
はじめまして。SEの香取です。
データホテルの「現場の工夫」などの情報をブログやイベントを通じて、提供していきたく思っています。こうした情報が、皆様にとって少しでもお役に立ちますと幸いです。
Ohai + Consul KVS
管理するサーバの台数が増えてくると、Excel などで作った台帳では更新が間に合わなくなってきます。更新を忘れて台帳とのズレが生じてしまい・・・などを防ぐために、台帳の動的な更新が出来ると良いですね。
今回は ohai と Consul の KVS 機能を利用して、管理対象の複数のサーバから台帳の元となるデータを取得するところまでを行います。取得したデータの利用、consul の別機能を使ったケーススタディについても、次回以降に書いて行く予定です。
概要
ohai で取得したデータを Consul の KVS に登録し、他のアプリケーション(サーバ管理台帳など)から利用出来る状態にします。
前提条件
- Consulクラスタが既に組まれている。
- クラスタ内の各サーバで Ruby が利用出来る。
ohai の準備
Chefと共にインストールされるツールです。単体でも利用することが出来ます。
インストール
# gem install --no-ri --no-doc ohai
インストールが終ったら、さっそく実行してみましょう。
JSON のデータが表示されると思います。本当に様々な情報が取得出来ますので、ぜひ一度、出力されるJSONの内容を確認してみてください。
# ohai { "languages": { "ruby": { }, "perl": { "version": "5.10.1", "archname": "x86_64-linux-thread-multi" }, "php": { "version": "5.5.18", "builddate": "Oct 16 2014" }, …
Consul KVS の利用
先ほどのデータは標準出力されるだけなので、そのままでは他のアプリケーションからの利用が出来ません。そこで、KVSにデータを登録してみます。
# ohai | curl http://localhost:8500/v1/kv/ohai/${HOSTNAME} -X PUT -d @-
Consulクライアントで実行する場合でも、登録する先は localhost でOKです。
確認
KVSに登録したデータを確認してみます。jq コマンドが無いとエラーになりますので、予めインストールしておいてください。
※ CentOS6 で実行しています。epel リポジトリから yum install しました。
# curl -s http://localhost:8500/v1/kv/ohai/${HOSTNAME} | jq '.[].Value | .' -r | base64 -d { "languages": { "ruby": { "platform": "x86_64-linux", …
JSONとして認識出来るものが登録されていますね。
オーケストレーション
本当は「オーケストレーション」という言葉について、良く解っていません。言葉の使い方が間違っていたら、すみません。Consulクラスタ内の全サーバで、ohai を実行してKVSに登録する様な一括操作のことを言っています。
それでは、実行してみましょう。果たして一括実行は成功するでしょうか。
# consul exec 'ohai | curl http://localhost:8500/v1/kv/ohai/${HOSTNAME} -X PUT -d @-'
確認
登録されたキーの一覧を見てみます。ローカルでやっていたのと違い、少し緊張しますね。
# curl -s http://localhost:8500/v1/kv/ohai/?recurse | jq '.' | grep -v Value [ { "Flags": 0, "Key": "ohai/app.novalocal", "LockIndex": 0, "ModifyIndex": 25084, "CreateIndex": 25084 }, { "Flags": 0, "Key": "ohai/db1.novalocal", "LockIndex": 0, "ModifyIndex": 25093, "CreateIndex": 25093 }, { "Flags": 0, "Key": "ohai/db2.novalocal", "LockIndex": 0, "ModifyIndex": 25091, "CreateIndex": 25091 }, …
成功です! たくさん登録されています!!
まったくの余談ですが、ホスト名の後ろに .novalocal と付いているのはテスト環境が OpenStack だからです。現在 OpenStack 関連にも力を入れていますので、いつかレポート出来たら良いなと思っています。
Consul UI
GUI でも確認をしてみましょう。
良い感じです!
先ほどの consul exec
を cron で定期的に実行しておくと、構成変更があっても更新漏れを防ぐことが出来ます。
まとめ
今回はクラスタ内の全サーバの構成情報のデータ取得までを行いました。「このデータを変換して、便利に使ってみよう」というのが次回のテーマ(予定)です。
今後とも、よろしくお願いいたします。
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterAWSを中心としたクラウドインフラやオンプレミス、ビッグデータ、機械学習などの技術ネタを中心にご紹介します。
Recommends
こちらもおすすめ
-
Zabbix6.0のネイティブHA機能を試してみた
2022.3.1
-
AWS、Azure、GCPのGPUインスタンス一覧。価格と性能を比較
2019.10.24
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16