我正在尝试为几个 .NET 应用程序自动化我们的 CI 过程,在一个完美的世界中,我想为每个应用程序启动一个 Windows EC2 实例,引导实例以安装 Chef Solo,然后执行 Chef 配方以安装一些依赖项和打包的软件本身。
但是-我是新手,不知道这是否可行,更不用说从哪里开始了:)
我相当精通 AWS 的命令行工具,因此可以启动 AMI ok,但除此之外,我还很困惑。我想避免构建预装了 Chef 的自定义 AMI,因为这会带走很多优势。
我认为这基本上是我需要做的——但(不出所料)专注于 Linux:
http://www.opinionatedprogrammer.com/2011/06/chef-solo-tutorial-managing-a-single-server-with-chef/
有没有人有链接到以前做过这个或类似的人?还是实现我想做的事情的更好方法?
任何帮助表示赞赏。
大多数 Windows 引导程序资源都集中在 Hosted Chef 和使用
knife-windows
插件上。然而,这应该可以通过 Chef solo 实现。
如果您不使用它来构建 AMI,
chef-client
那么您的第一步是在那里安装 Full Chef Windows 安装程序。幸运的是,我记得
winrm
在 Windows Amazon AMI 上默认启用。在这里查看潜在的引导程序解决方案:https ://stackoverflow.com/a/13284313/2205881您可以同时引导其他东西;像 Ruby Windows Installer 等。在同一过程中获取你的食谱、角色等并开始你的 Chef 配置。
更新
我开始以稍微不同的方式执行此操作,
--user-data-file
在创建实例时使用 a。这可以与 AWS API、命令行工具一起使用,或者在启动实例时简单地粘贴到 Web 界面中。我正在使用包管理器Chocolatey来安装 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 的用户数据脚本我们有一个批处理文件要处理。(etc) 是从其文档@powershell...
安装 Chocolatey 的命令。安装包。cinst chef-client
chef-client
这些都不需要任何用户输入。用户数据以本地管理员身份执行。
所有 Amazon AMI 在首次启动时(默认情况下)运行其用户数据,而不会在后续启动时运行。因此,这是一种非常简单的方法,
chef-client
无需连接到 RDP,甚至无需获取您的管理员密码。另一种方法是简单地传递一个用 Powershell 编写的“用户数据脚本”。您只需创建一个类似于以下内容的文本文件 (hello.ps1):
然后当你启动实例时,你只需传入用户数据文件:
您可以从 S3 下载二进制文件并通过单个 PowerShell 脚本完全安装。这是亚马逊的一些文档供您参考