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` 中看到一个示例。如该文件中所述,您将需要:
$ 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 配合使用了!一篇早期的文章是 这篇,它甚至不在网络上了。但是,它产生了一些最近活跃的工具,例如 这个 和 这个。类似的方法在 这里 有提及,代码在 这里 或 这里(附带 博文)这篇文章 也提到了许多有价值的早期工具。