似乎Windows上的库存引导过程有点缺乏。
Linux有cloud-init,它将安装包,存储文件,并从用户数据运行bash脚本。
Windows有ec2config但目前没有支持在系统“准备就绪”时运行cmd或powershell脚本 - 这意味着所有初始重新启动都已完成。
似乎有第三方选择。例如,RightScale具有执行此功能的RightLink代理。
是否有可用的开源选项? 有没有计划将此功能添加到Ec2Config? 我必须自己建立这个吗?
我错过了什么吗?
答案 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构建了这个工具。期待一些反馈。
答案 3 :(得分:1)
Cloudbase.it开源了一个python windows服务,他们称之为cloudbase-init,它遵循configdrive和HTTP数据源。 http://www.cloudbase.it/cloud-init-for-windows-instances/
答案 4 :(得分:0)
我们必须自己建造它;我们使用自定义服务完成了它并构建了我们自己的AMI。目前EC2Config中没有任何条款可以做到这一点。
更好的是,没有简单的方法来确定实例何时“准备就绪”。我们必须通过拖尾EC2Config的日志文件来完成它。
答案 5 :(得分:0)
我最近发现nssm(在nssm.cc)很容易将一个简单的批处理文件(或其他任何东西)包装成一个服务。然后,您可以使用sc config servic1 depend = service0强制批处理文件在服务初始化序列中的特定点运行。我在ex2config和sql express之间使用它来在d上创建一个文件夹,例如。您必须使用服务工具使其作为网络服务运行,并使用regedit将AppExit属性更改为Ignore,但是一旦您完成所有操作,它就会起作用。