13

Windows 上似乎有点缺乏股票引导过程。

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

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

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

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

我错过了什么吗?

4

6 回答 6

18

自 2012 年 4 月 11 日更新以来,Amazon 提供的 AMI 上的 EC2Config 现在似乎支持“用户数据脚本” 。

该文档尚未更新,因此很难判断它是支持 PowerShell 还是仅支持 cmd.exe 脚本。我已经在 AWS 论坛上发布了一个问题,以尝试获取更多详细信息,当我了解更多信息时会在此处更新。

更新:似乎支持 cmd.exe 批处理语法,这又可以调用 PowerShell。AMI 中包含新版本的 EC2Config 文档。引用它:

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

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

更新 2:AWS 团队的 Shon确认了我的解释

更新 3:从 2012 年 5 月的 AMI 开始,使用<powershell/>标签支持 PowerShell。

于 2012-04-17T15:40:33.790 回答
2

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

为了解决不知道何时启动服务的问题,我只是将服务启动类型设置为“延迟自动”,这似乎解决了问题。取决于您需要对系统执行的操作,这可能对您有用,也可能对您不起作用,但在我的情况下,这就是我所要做的。

于 2011-11-10T20:52:22.627 回答
2

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

http://cloudinitnet.codeplex.com/

于 2011-12-20T23:23:28.543 回答
2

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

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

于 2013-09-13T08:01:29.107 回答
0

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

更好的是,没有简单的方法来确定实例何时“准备就绪”。我们必须通过跟踪 EC2Config 的日志文件来做到这一点。

于 2011-10-06T16:39:25.117 回答
0

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

于 2013-05-16T16:31:06.710 回答