Stemcell

AirbnbのEC2インスタンス作成およびブートストラップツール
177
作成者Igor Serebryany

StemcellはEC2でインスタンスを起動します。これらのインスタンスは、AMI、インスタンスタイプ、リージョンなどの設定項目を公開し、指定された仕様に基づいて作成されます。インスタンスは、rolesとrecipesのソースとして指定されたgitリポジトリとブランチを使用して、chef-soloでブートストラップされます。

インストール

アプリケーションのGemfileに次の行を追加します

gem 'stemcell'

そして実行します

$ bundle

または、自分でインストールする場合は

$ gem install stemcell

または、gemをローカルでビルドしてインストールします

$ gem build stemcell.gemspec
$ gem install ./stemcell-0.4.3.gem

設定

コマンドラインツールを使用している場合は、chefリポジトリのルートにstemcell.jsonを追加する必要があります。これには、インスタンスを起動するためのデフォルト属性と、バッキングストアからイメージへのマッピングが含まれています。例については、examples/stemcell.jsonを参照してください。

標準オプションを含むStemcellのRCファイルを作成し(ルートディレクトリに.stemcellrcとして配置)、examples/stemcellrcに例があります。そのファイルに記述されているように、以下が必要になります。

  • chef用のモノリポジトリ(こちらで説明されているようなもの)
  • リポジトリのローカルチェックアウト
  • リポジトリの読み取りが許可されているsshキー
  • インスタンスを作成する権限を持つAWS認証情報
  • AWSのsshキーペア
  • 暗号化されたデータバッグの秘密鍵(オプション)

使い方

ベース構成を含めます

$ source ~/.stemcellrc

シンプルな起動

$ stemcell $your_chef_role --git-branch $your_chef_branch

これにより、インスタンスが起動され、そのIPとインスタンスIDが画面に出力されます。

その他のオプション

$ stemcell --help

インストールの監視

$ stemcell $your_chef_role --tail

終了

終了するには、necrosisコマンドを使用し、インスタンスIDのスペース区切りリストを渡します

$ necrosis i-12345678 i-12345679 i-12345670

自動化

このREADMEでは、stemcellを、管理者がインスタンスを作成するために使用するツールとして紹介しています。ただし、stemcellは、サーバーインフラストラクチャを制御する自動化されたシステムで簡単に使用できるように設計されています。これらの自動化されたシステムは、コマンドラインでstemcellを呼び出すか、rubyクラスを直接使用できます。

類似ツール

chef-soloでEC2インスタンスをブートストラップする追加のツールがいくつかあります。chef-serverを使用している場合は、明らかにknife-ec2が答えです。多くの人が同時にクックブックを編集する大規模なチームで作業していない限り、このアプローチを強くお勧めします!特に、設定管理を迅速かつ簡単にするhosted chefと組み合わせると、非常に優れています。

knife-ec2をchef-soloで使用する場合は、knife soloを使用できます。インタラクティブな使用に最適な別の方法として、fabricを使用してchefをブートストラップするgist付き)があります。

最後に、少しコード考古学をせずにいられませんでした。人々は長い間EC2でchefを使用してきました!初期の記事の1つは、もはやWeb上にないこちらです。しかし、最近活発になっているツールがいくつか生まれています。たとえば、こちらこちらです。こちらで同様のアプローチが言及されており、コードはこちらまたはこちらブログ投稿付き)にあります。こちらの記事でも、多くの価値ある先駆者が言及されています。

リンク