Stemcell

Airbnb 的 EC2 实例创建和引导工具
177
作者Igor Serebryany

Stemcell 在 EC2 中启动实例。这些实例根据您的规格创建,并提供 AMI、实例类型和区域等可配置参数。实例使用 chef-solo 进行引导,并使用指定的 git 仓库和分支作为角色和食谱的来源。

安装

将此行添加到您的应用程序的 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

自动化

本自述文件介绍了 `stemcell` 作为管理员用于创建实例的工具。但是,我们设计 `stemcell` 的目的是易于用于控制服务器基础架构的自动化系统。这些自动化系统可以在命令行上调用 `stemcell`,或者直接使用 ruby 类。

类似工具

还有一些其他工具可以使用 chef-solo 引导 EC2 实例。如果您使用的是 chef-server,显而易见的答案是 knife-ec2。除非您在一个大型团队中工作,并且很多人同时编辑 cookbook,否则我们强烈推荐这种方法!它与 托管 chef 配合使用时尤其出色,这使得配置管理的入门变得快速而轻松。

如果您想将 knife-ec2 与 chef-solo 一起使用,您可以使用 knife solo。另一种非常适合交互式使用的方案是 使用 fabric 引导 chef(代码示例)。

最后,我们忍不住做了一些代码考古学。人们很久以前就开始将 chef 与 EC2 配合使用了!一篇早期的文章是 这篇,它甚至不在网络上了。但是,它产生了一些最近活跃的工具,例如 这个这个。类似的方法在 这里 有提及,代码在 这里这里(附带 博文这篇文章 也提到了许多有价值的早期工具。

链接