【问题标题】:What is the Cloud-Init equivalent for Windows?Windows 的 Cloud-Init 等效项是什么?
【发布时间】:2011-12-02 10:00:56
【问题描述】:

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

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

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

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

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

我错过了什么吗?

【问题讨论】:

    标签: windows amazon-ec2 bootstrapping cloud-init


    【解决方案1】:

    the 11-April-2012 updates 开始,Amazon 提供的 AMI 上的 EC2Config 现在似乎支持“用户数据脚本”。

    文档尚未更新,因此很难判断它是支持 PowerShell 还是仅支持 cmd.exe 脚本。我已经posted a question on the AWS forums 尝试了解更多详细信息,当我了解更多信息时会在此处更新。

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

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

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

    更新 2: 我对 is confirmed 的解释 Shon from the AWS Team

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

    【讨论】:

    • 如果 OP 正在听,我认为此时此答案应该标记为已接受的答案。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      http://cloudinitnet.codeplex.com/

      【讨论】:

      • 我一直在使用它,报告问题等等——这是一个很棒的工具。
      • 我想过渡到这个工具,特别是对于个人项目。看起来很有趣。
      • 如果您有任何问题,可以在本网站(我认为)或 codeplex 网站上与我联系,如果您有任何问题,我非常愿意帮助您。跨度>
      • 谁能澄清 CloudInit.NET 和 EC2Config-with-UserData 之间的关系?后者本质上是否使前者过时了?
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 只删除 Ec2Config 并使用自定义服务编排引导过程怎么样?这不像 Ec2Config 做的那么多。
        • 对。您不需要 Ec2Config;我们根本不“使用”它来进行引导,除了:我们认为我们可以确定地知道实例真正准备好的唯一方法是在 Ec2ConfigLog.txt 文件中查找“Windows 已准备好使用”。如果您真的想知道实例何时完成设置和重启,这是一个令人抓狂的问题。
        • 我决定走这条路。 Ec2Config 确实会自动执行一些启动任务。重新发明轮子没有意义。例如,如果需要,格式化临时卷和重命名机器。希望 Ec2Config 的未来版本添加一个“就绪”事件挂钩来简化此过程。
        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 2012-12-27
          • 2011-02-10
          • 1970-01-01
          • 2011-10-16
          • 2011-03-19
          • 1970-01-01
          • 2021-08-07
          • 1970-01-01
          • 2023-03-31
          相关资源
          最近更新 更多