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
に例があります。そのファイルに記述されているように、以下が必要になります。
$ 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上にないこちらです。しかし、最近活発になっているツールがいくつか生まれています。たとえば、こちらやこちらです。こちらで同様のアプローチが言及されており、コードはこちらまたはこちら(ブログ投稿付き)にあります。こちらの記事でも、多くの価値ある先駆者が言及されています。