Stemcell

Airbnb 的 EC2 實例建立與引導工具
177
作者Igor Serebryany

Stemcell 在 EC2 中啟動實例。這些實例會根據您的規格建立,例如 AMI、實例類型和區域。實例會使用指定的 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。除非您是在一個很多人同時編輯 cookbook 的大型團隊中工作,否則我們強烈建議您採用這種方法!當與 hosted chef 配對使用時,它尤其出色,這使得配置管理的起步變得快速而簡單。

如果您想將 knife-ec2 與 chef-solo 一起使用,您可以使用 knife solo。另一個非常適合互動式使用的方法涉及使用 fabric 來引導 chef搭配 gist)。

最後,我們忍不住做了一些程式碼考古。人們使用 chef 和 EC2 已經很久了!一篇早期的文章是這篇,它甚至不再出現在網路上了。但是,它催生了一些最近活躍的工具,例如 這個這個。類似的方法在這裡提到,程式碼在這裡這裡(附帶部落格文章這篇文章也提到了許多值得關注的前輩。

連結