什么是Windows的Cloud-Init等价物?

时间:2011-10-06 16:36:26

标签: windows amazon-ec2 bootstrapping cloud-init

似乎Windows上的库存引导过程有点缺乏。

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

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

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

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

我错过了什么吗?

6 个答案:

答案 0 :(得分:14)

亚马逊提供的AMI上的EC2Config现在支持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年5月的AMI,使用<powershell/>代码支持PowerShell。

答案 1 :(得分:2)

我必须自己建造一个,但这很容易。刚刚创建了一个在启动时读取用户数据的服务,并将该文件作为powershell脚本执行。

为了解决不知道何时启动服务的问题,我刚刚将服务启动类型设置为“delayed-auto”,这似乎解决了问题。取决于您需要对系统做什么,可能会或可能不会对您有用,但在我的情况下,这是我必须做的全部。

答案 2 :(得分:1)

我添加了一个新的codeplex项目,该项目已经为windows构建了这个工具。期待一些反馈。

http://cloudinitnet.codeplex.com/

答案 3 :(得分:1)

Cloudbase.it开源了一个python windows服务,他们称之为cloudbase-init,它遵循configdrive和HTTP数据源。 http://www.cloudbase.it/cloud-init-for-windows-instances/

github在这里 https://github.com/stackforge/cloudbase-init/

答案 4 :(得分:0)

我们必须自己建造它;我们使用自定义服务完成了它并构建了我们自己的AMI。目前EC2Config中没有任何条款可以做到这一点。

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

答案 5 :(得分:0)

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