2011-10-06 128 views
7

看起来股票引导过程在Windows上有点欠缺。Windows的Cloud-Init等效物是什么?

Linux具有cloud-init,它将安装软件包,存储文件并从用户数据运行bash脚本。

Windows有ec2config,但目前不支持在系统“准备就绪”时运行cmd或powershell脚本 - 这意味着所有初始重新启动都已完成。

似乎有第三方选项。例如RightScale具有执行此功能的RightLink代理。

是否有开源选项? 有没有计划将此功能添加到Ec2Config? 我是否必须建立我自己?

我错过了什么吗?

回答

14

似乎EC2Config在亚马逊提供的的AMI现在支持“用户数据脚本”作为the 11-April-2012 updates

该文档尚未更新,因此很难判断它是否支持PowerShell或仅支持cmd.exe脚本。我有posted a question on the AWS forums尝试了解更多细节,并在我了解更多信息时在此更新。

更新:它看起来像支持cmd.exe批处理语法,它可以反过来调用PowerShell。 AMI上包含一个新版本的EC2Config文档。从它引用:

[EC2Config]将在该实例指定的用户读取数据,然后检查是否含有标签<script></script>。如果找到两者,那么它将采用这两个标签之间的信息并将其保存到位于此应用程序的Settings文件夹中的批处理文件中。然后它将在实例启动期间执行批处理文件。

批处理文件只有在sysprep后首次启动实例时才会创建并执行。如果您希望再次创建并执行批处理文件,请将Ec2HandleUserdata插件状态设置为已启用。

更新2:我解释is confirmed通过Shon from the AWS Team

更新3:而随着五月-2012的AMI,PowerShell是使用<powershell/>标签支持。

+0

如果OP正在收听,我认为在这个时候这个答案应该被标记为接受的答案。 – blong

+1

@blong - 同意 –

0

我们必须自己建造它;我们通过定制服务完成了自己的AMI。 EC2Config目前没有提供这项服务。

更好的是,没有简单的方法来确定实例何时“准备就绪”。我们必须通过拖拽EC2Config的日志文件来完成。

+0

什么只是删除Ec2Config与定制服务编排引导过程?这不像Ec2Config那么做。 –

+0

没错。你不需要Ec2Config;除了我们的引导程序之外,我们完全不“使用”它:我们相信我们可以最终知道该实例的唯一方法是通过在Ec2ConfigLog.txt文件中查找“Windows已准备好使用”。如果你真的想知道实例何时完成设置并重新启动,这是一个令人生厌的问题。 – Joe

+1

我决定走这条路。 Ec2Config会自动执行一些启动任务。没有重新发明轮子的意义。例如,格式化临时卷并根据需要重命名机器。希望未来版本的Ec2Config添加一个“ready”事件钩子来简化这个过程。 –

2

我不得不自己创建一个,但它非常简单。只是提供了一个服务,在启动时读取用户数据并将其作为PowerShell脚本执行。

为了解决不知道何时启动服务的问题,我只是将服务启动类型设置为“delayed-auto”,似乎解决了问题。取决于你需要做什么系统,可能或可能不适合你,但在我的情况下,这就是我所要做的。

1

我添加了一个新的codeplex项目,已经有这个工具建立了Windows。期待一些反馈。

http://cloudinitnet.codeplex.com/

+0

我一直在使用这个,报告问题等 - 这是一个*很棒的工具。 –

+0

我想过渡到这个工具,特别是对于个人项目。看起来很有趣。 –

+0

如果您有任何问题,您可以在本网站(我认为)或codeplex网站与我联系,如果您有任何问题,我会非常乐意帮助您。 – bwight

0

我最近找到了nssm(在nssm.cc),它可以很容易地将简单的批处理文件(或者其他任何东西)作为服务包装起来。您可以随后通过sc config servic1 depend = service0强制批处理文件在服务初始化序列中的特定点上运行。例如,我在ex2config和sql express之间使用它来在d上创建一个文件夹。您必须使用服务工具使其作为网络服务运行,并使用regedit将AppExit属性更改为忽略,但一旦完成就可以运行。

相关问题