我们目前使用此命令通过 chef 创建一个新的 ec2 实例:
knife ec2 server create --node-name=prod-apache-1 --availability-zone us-east-1c --image ami-3d4ff254 --distro ubuntu12.04-gems --groups "default" --ssh-key foo --identity-file ~/.ssh/id_rsa --ssh-user ubuntu --flavor m1.small
执行此命令后,我们再运行进一步的 chef 命令来完成服务器的配置。
我想知道是否有可能在第一次设置实例时,我想创建一个 100 gb 的卷并将其安装在 /mnt 上,而将临时存储安装在 /tmp 或 /mnt-ephemeral 上。
如果没有,您建议在 chef 中运行哪些其他命令?我知道如何通过 aws 控制台执行此操作,并且可能知道如何通过 ec2 命令行工具执行此操作,但我对 chef 并不熟悉,因此有点不知所措。
答案1
看着源代码在knife-ec2
Github 上似乎knife ec2 server create
支持以下选项:
--ebs-size
设置从 EBS 启动实例上的启动卷的大小--ephemeral
设置临时卷应映射到的设备位置
这些可能会有所帮助。我相信这些设置只会将卷附加到新实例上的设备;您可能需要进行管理/etc/fstab
(大概可以通过 Chef 完成)以将设备安装在适当的安装点。
如果您还需要创建和安装额外的 EBS 卷,那么您可以修补knife-ec2
插件的本地副本,以便在block-device-mapping
启动新实例之前向其添加更多条目。或者,您可以在启动后创建并附加卷,例如使用OpsCode AWS 手册与 Chef 一起管理这个过程。
(据记录,我是一名资深的 Puppet 用户,但我自己对 Chef 还不熟悉,还没有尝试过这些东西。祝你好运!;)