BT

Tumblrがデータセンタ自動化ツールGenesisをリリース

| 作者: Daniel Bryant フォローする 736 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2015年2月22日. 推定読書時間: 5 分 |

原文(投稿日:2015/02/04)へのリンク

Tumblrは,データセンタ自動化のためのオープンソースツールGenesisをリリースした。新たに接続されたマシンの検出,TumblrのCollinsインベントリ管理システムへのハードウェア詳細情報の通知,ハードウェアコンフィギュレーションを実行するメカニズムという,一連のプロセスを統合する。

Genesisは,PXEによるブート用にストリップダウンされたLinuxイメージと,ホストで実行するタスクを記述するためのRubyベースのドメイン固有言語(DSL)で構成されている。Genesis DSLを使用してタスクを作成することにより,パッケージのインストールやコマンドの実行が容易になる。タスクの例として,システムの実稼働前にストレステストを実施してハードウェアエラーの検出可能性を向上するTimedBurninが,Genesis Gitgubリポジトリで公開されている。

Genesis DSLは,ホスト上へのオペレーティングシステムのプロビジョニングの先立って,BIOS設定の変更やRAIDカードの設定といったハードウェアコンフィギュレーションを行う機能も提供している。ハードウェアコンフィギュレーションタスクの例として提供されているBiosConfigR720は,Dell R720のBIOSをTumblr仕様に正しく設定するタスクだ。

Genesisの管理するマシンが起動すると,そのマシンがTumblrのCMDB(Configuration Management DataBase)アプリケーションに通知される。これにより,マシンインベントリ管理の自動化が可能になる。CollinsのGithub上のプロジェクトWebページには,このアプリケーションがTumblrのインフラストラクチャ全体の正確性と知識の根源である,と記されている。Tumblrの製品環境のすべての情報はCollinsに格納され,エンコードされる。このデータが,Tumblrのデータセンタ自動化のすべての動作で使用される。

Collinsアプリケーションは,Tumblr製品環境内にあるすべての物理的サーバ,スイッチ,ラックを管理するシステムとして開発された後,ハードウェアのインベントリやIPアドレス,ソフトウェアをサポートするように拡張されたものだ。Tumblrは,Collins APIとデータが自動プロセスを実行する上で,非常に好都合なメカニズムを提供してくれることに気が付いた。現在のCollinsは,ボタンひとつのクラスタデプロイ提供,ハードウェアトポロジ変更時のコンフィギュレーション生成,ソフトウェア構成変更時のアップデート,ソフトウェアでデプロイの管理支援といった機能を実装している。

データセンタ内のマシン管理にGenesisを使用するためには,サーバの属性をいくつか追加する必要がある。

  • DHCPサーバ
  • TFTPサーバ
  • HTTPファイルサーバ

GenesisのGithubプロジェクトにあるINSTALL.mdには,さらに詳細な操作説明とともに,必要なサーバ設定オプションに関しても記述されている。

同じプロジェクトのGithub README.mdには,Genesisによって管理されるマシンの一般的なワークフローに関する説明がある。最初にマシンが起動すると,DHCPサーバがPXEファームウェアに対して,続いてiPXEを起動するように指示する。起動したiPXEは,リモートサーバからメニュー選択を取得して,ユーザに対して表示する。ユーザが選択を行うと,Genesisカーネルとinitrd(ファイルサーバから取得)が,カーネルのコマンドライン上のパラメータと共にロードされる。

Genesis OSがロードされると,genesis-bootloaderが,第2ステージを記述したRubyスクリプトのフェッチを実行する。その中で,必要な基本RPMとRuby gemがインストールされた上で,リモートサーバからGenesisタスクのフェッチが行われる。そして最後に,それらのタスクが実行される。プロジェクトのGithub README.mdには,実際の例が記載されている。

新しいサーバを起動する場合を考えてみましょう。DHCPリクエストを行って,iPXEメニューをロードします。この場合,MACアドレスが今までなかったことから,新しいマシンであることが分かります。そこで,Genesisをディスカバリモードで起動して,Collinsに返送する必要のあるハードウェア情報を収集するタスクを実行します。私たちのセットアップでは,この中に,ハードドライブとその容量,CPUの数といったものだけでなく,より詳細な情報,例えばサービスタグ,どのメモリバンクが使用されているか,全インターフェースが接続されているスイッチポートの名称といったものまで含まれています。その後はTimedBurninタスクを使用して,48時間のハードウェアストレステストを実施します。

Genesisには,VirtualBoxベースの仮想テスト環境が含まれていて,フレームワークの変更と新規タスクを,エンドツーエンドでテストすることができる。テスト環境に関する詳細情報とコンフィギュレーション方法については,プロジェクトのGithub ‘testenv’サブディレクトリにある,README.mdに記載されている。

Tumblrのブログには,Genesisについて,シェルスクリプトの集合体であった旧システムのリプレースであり,Ruby DSLの採用によってよりフレキシブルで,理解やメンテナンスが容易な,スタッフにとって利用しやすく,拡張しやすいシステムである,と説明されている。

GenesisはAapacheライセンスによってオープンソース公開されているが,現在はまだ開発の初期段階にある。Tumblrでは,プロジェクトを向上させるため,バグリポートや機能リクエスト,質問を,プロジェクトのGithubリポジトリ,またはGenesis-user Googleグループ経由で募集している。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

.NETの派生を理解する

Wayne Citrin 2018年7月18日 午前3時44分

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT