是否可以使用 JClouds 在云上实例化新虚拟机的 Puppet 设置,然后通过 Puppet 定义和实现它们的配置(软件堆栈)?
或者 Puppet 的本质是否存在某种固有的东西,阻止了它在 AWS、RackSpace 或 Heroku 等云提供商上的使用?
是否可以使用 JClouds 在云上实例化新虚拟机的 Puppet 设置,然后通过 Puppet 定义和实现它们的配置(软件堆栈)?
或者 Puppet 的本质是否存在某种固有的东西,阻止了它在 AWS、RackSpace 或 Heroku 等云提供商上的使用?
这里涉及两个独立的问题:在云节点上引导 puppet 和在它们之间进行编排(例如,使用数据库的 IP 地址配置应用程序服务器)。
对于引导,有很多可用的工具;AWS CloudFormation 可以使用用户数据进行集成,CloudInit(Ubuntu、ec2-linux AMI 和许多 EL 映像上的默认设置)支持开箱即用的引导 puppet。Puppetlabs 提供云供应商,最后是Cloudify。除了 CloudFormation 和 Cloudify,大多数工具在引导后不管理您的堆栈,也不提供编排。CloudFormation 本身只提供启动时编排功能,而且非常蹩脚。Puppet 本身在编排方面缺乏(例如与 Chef 出色的搜索功能相比)
Cloudify provides ongoing stack management and fancy orchestration exposed via Puppet integration module. This gives you the ability to pass information between nodes (for service discovery, credential distribution, etc.) and bootstrap your entire system with one command. Plus it supports most clouds in existence.
Puppet 是配置云基础设施的绝佳选择,大多数云提供商允许您在首次启动时调用脚本(Ec2 具有用户数据),您可以让此脚本插入一些节点类型的数据,然后克隆 puppet 存储库并应用它,如果您不想运行 puppet master 服务(设置和维护可能很麻烦),您还可以使用 git 将更新推送到配置,甚至在配置更改时生成新图像以允许快速节点启动你最新的设置。看看这个博客
我知道的唯一直接宣布 puppet + jclouds 集成的开源工具是 Apache Whirr,但这主要是通过puppet 应用与服务器。
由于 puppet 现在有一个restful 界面,应该可以像我们为chef一样在 jclouds 中创建原生 puppet 支持。欢迎您帮助定义:)
同时,您可以使用 whirr 之类的东西,或者制作指令并在节点创建期间通过 jclouds TemplateOptions.runScript将它们作为 shell 脚本提供,或者稍后使用submitScriptOnNode命令(两者目前都通过 ssh 运行)。