基本情報
概要
Itamae(イタマエ)とは、サーバ管理を自動化する構成管理ツールです。「Chef」ライクなRuby DSLで記述するツールで、必要最低限の機能のみを揃えており、非常にシンプルに使用できます。
基本説明
Itamaeは「Chef」のような記述性/柔軟性を持ちながら、シンプルで導入しやすい構成管理ツールを目指して開発されています。「できるだけツールの学習コストを下げ、構成管理の自動化を最短距離で実現する」ことを目標としています。
「Chef」は高機能である一方、「導入/設定/管理方法の学習コストが高い」「周辺ツールのインストールなどで導入までに手間がかかる」「設定ファイル記述/管理が複雑になりやすい」などの問題があります。
→Chefとは
Itamaeは、Chefのそれらの欠点を解消するために、「レシピを書いてitamaeコマンドを実行するだけ」のような非常にシンプルな設計になっています。
「機能がシンプル」「学習コストが低い」「サイズがコンパクト」「導入しやすい」「管理対象サーバにエージェントインストールが不要」などの特徴があります。
経緯
Itamaeは、クックパッド社員の荒井良太氏によって開発されました。
主な特徴
レシピ(RubyDSL)
Itamaeは、Chefと同様に、「レシピ」ファイルに設定内容を記述します。レシピは、Chefとほぼ同じフォーマットのRubyDSL(ドメイン固有言語)で記述し、Rubyコードとして実行されます。ChefとRubyの知識があれば、容易に導入できます。
レシピには、「リソース」と呼ばれる定義で、サーバのあるべき状態(どのようなソフトウェアがインストールされ、どのように設定されているかなど)を記述します。ただし、Chefと比べて標準サポートの管理対象リソースが少なく、一部パラメータなども異なるため、Chef向けレシピをそのままItamaeに転用することはできません。
Itamaeは、Chefにおけるcookbook/role/environmentなどの概念はなく、レシピのみを管理します。cookbook/roleの機能については、他のレシピを読み込むことで、同様の機能を実現しています。
Itamaeは、何度実行してもレシピに書かれた状態に収束(冪等性)するように作られています。
サーバ別設定
Chefでは、それぞれのサーバごとに異なる設定を行う機能として「Data Bag」がありますが、Itamaeにはそのような一元管理機能は用意されていません。
その代わりとして、レシピに与えるパラメータを別ファイル(JSONファイル/YAMLファイル)に分離することで、対象サーバごとに異なる処理を行わせることが可能です。
実行方法(1)SSH経由実行
Itamaeは、SSH経由で他サーバの構成管理を行えます。管理対象サーバに専用エージェントをインストールする必要はありません。
実行方法(2)ローカル実行
対象サーバにItamaeをインストールして、ローカル実行させることも可能です。
リポジトリ
設定ファイル/プラグインを提供する独自リポジトリはありません。
その代わり、Rubyパッケージ管理システム「RubyGems」を使って管理できるようになっています。
dry-runモード
実際には変更を加えずに変更点を表示する「dry-runモード」が用意されています。
同様製品
同様な機能を提供する製品として、次のようなものがあります。
オープンソース製品:「Chef」「Ansible」「Puppet」など。
導入事例
クックパッドの実運用環境に導入されています。
ライセンス情報
Itamaeのライセンスは「MIT License」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。
ダウンロード
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。