例如,您可以使用 AWS CloudFormation(带 Chef 服务器)部署由 Web 服务器、ELB 和 DB 组成的 Auto Scaling 组: http://aws.amazon.com/cloudformation/aws-cloudformation-templates/
但是,您需要首先创建一个 CF 模板,是否可以仅使用 Chef Server 和 Knife 来完成此操作?我们不想过多地依赖 CloudFormation,而且似乎托管在 (http://www.opscode.com/) 就能做到这一点。
有任何开源替代品吗?
谢谢。
答案1
答案2
您可以使用 knife ec2 插件来创建和删除 ec2 实例,但它不会创建您可以使用云形成来支持的全部资源(ELB、Route 53 RecordSet、安全组等)。因此,您要么需要手动创建这些资源,要么构建自己的基于策略的扩展代码,该代码将响应监控基础设施发出的警报,从而导致使用 chef 配置和取消配置 ec2 实例。
还有一个 knife cfn 插件,允许您使用 knife 创建和删除云形成堆栈。
如果您依赖 AWS,我认为云形成模板将帮助您很好地协调 Chef 部署。除此之外,这些模板非常适合“基础设施即代码”的口号。使用 Chef,您的基础设施将以代码指定。将所有可以转换为代码/CFN 模板的扩展策略排除在源代码控制系统之外将是一种遗憾。模板格式也被第三方采用,例如云边踢因此它可能与部署到 AWS 之外的其他云提供商相关。
答案3
据我所知,你应该能够做到这一点:
创建已安装的自定义 AMI chef-client
,并拥有贵组织的验证证书,但不是客户端证书,它将在第一次调用时自动注册chef-client
,并注册新节点。
将此自定义 AMI 与新自动扩展启动配置,然后继续执行其余的常规 Auto Scaling 步骤。
我认为,挑战在于如何让新创建和注册的实例通知 Chef Server“我想成为一种新型的XXXX服务器“。看起来 chef-client 没有标志可以将其发送到 chef 服务器,并自动将其自身与角色等关联起来。
因此看起来 Auto Scaling 确实可以在不使用 CloudFormation 模板的情况下完成,我只是不明白 Auto Scaling 如何与 Chef 配合使用。