使用 Chef Solo 配置 Windows EC2 实例并启动它

使用 Chef Solo 配置 Windows EC2 实例并启动它

我正在尝试为几个 .NET 应用程序自动化我们的 CI 流程,在理想的情况下,我希望为每个应用程序启动一个 Windows EC2 实例,引导实例安装 Chef Solo,然后执行 Chef 配方来安装一些依赖项和打包的软件本身。

然而 - 我是一个新手,不知道这是否可行,更不用说从哪里开始:)

我非常熟悉 AWS 的命令行工具,因此可以顺利启动 AMI,但除此之外,我很难做到。我希望避免构建预装 chef 的自定义 AMI,因为这会失去很多优势。

我认为这基本上是我需要做的 - 但(毫不奇怪)专注于Linux:

http://www.opinionatedprogrammer.com/2011/06/chef-solo-tutorial-managing-a-single-server-with-chef/

有人能提供做过类似事情的人的链接吗?或者有更好的方法来实现我想要做的事情吗?

任何帮助均感激不尽。

答案1

大多数 Windows 引导资源都集中在 Hosted Chef 和使用knife-windows插件上。

然而,使用 Chef solo 应该可以实现这一点。

如果你没有在chef-client其上构建 AMI,那么你的第一步是获取完整的 Chef Windows 安装程序在那里。

幸运的是,我记得,winrmWindows Amazon AMI 默认启用了此功能。请查看此处以了解潜在的引导解决方案:https://stackoverflow.com/a/13284313/2205881

您可以同时引导其他东西;例如 Ruby Windows 安装程序等。在同一过程中获取您的食谱、角色等并启动您的 Chef 配置。

更新

我已经开始以稍微不同的方式执行此操作,--user-data-file在创建实例时使用。这可以与 AWS API、命令行工具一起使用,也可以在创建实例时直接粘贴到 Web 界面中启动实例

我在用着巧克力味,一个包管理器,用于安装 chef-client。

<script>
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
cinst chef-client
</script>

基本上: <script>告诉 AWS 的用户数据脚本我们有一个要处理的批处理文件。
@powershell...(等)是安装 Chocolatey 的命令这是文档.
cinst chef-client安装chef-client包裹

所有这些都不需要任何用户输入。用户数据以本地管理员身份执行。

所有 Amazon AMI 都会在首次​​启动时运行其用户数据(默认情况下),而不会在后续启动时运行。因此,这是一种非常简单的安装方法,chef-client无需连接到 RDP 甚至获取管理员密码。

答案2

另一种方法是简单地传入用 Powershell 编写的“用户数据脚本”。您只需创建一个类似于以下内容的文本文件(hello.ps1):

< 电源外壳 >

#此处提供下载和安装应用程序的代码

< /powershell >

然后,当您启动实例时,只需传入用户数据文件:

ec2run——区域“us-east-1”“$ami”`

    --group "$mygroup" `

    --subnet "$mySubnet" --instance-type  "m1.medium" `

    --key "$myKey" `

    --user-data-file "hello.ps1"

您可以从 S3 下载二进制文件并通过单个 PowerShell 脚本完全完成安装。这里是一些来自亚马逊的文档供您参考

相关内容