BT

InfoQ ホームページ ニュース Tumblrがデータセンタ自動化ツールGenesisをリリース

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

ブックマーク

原文(投稿日: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グループ経由で募集している。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

RESTlessnessに打ち勝つ

Matt McLarty 2019年3月13日 午前7時39分

.NET CLIクイックツアー

Jeremy Miller 2019年2月18日 午前1時55分

.NET CoreとDevOps

Dave Swersky 2019年2月6日 午後11時46分

こんにちは

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

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

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

コミュニティコメント

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

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

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。