使用Chef SoloconfigurationWindows EC2实例并引导它

我试图自动化一些.NET应用程序的CI过程,在一个完美的世界中,我想为每个应用程序启动一个Windows EC2实例,引导实例来安装Chef Solo,然后执行Chef recipe安装一些依赖项和打包的软件本身。

但是 – 我是新手,即使这是可行的,也不知道从哪里开始:)

我对AWS的命令行工具非常熟悉,所以可以启动一个AMI,但超出这一点,我很困难。 我想避免与预先安装的厨师build立一个定制AMI,因为这需要很多优势。

我认为这实际上是我需要做的 – 但是(不出意外)把重点放在Linux上:

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

有没有人有链接到谁做过这样或类似的人之前? 或者更好地实现我想要做的事情?

任何帮助赞赏。

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

然而这应该是厨师独奏的可能。

如果你没有build立一个AMI与chef-client上,那么你的第一步是获得完整的厨师Windows安装在那里。

幸运的是,我记得在Windows的亚马逊AMI上默认启用winrm。 看看这里的潜在引导解决scheme: https : //stackoverflow.com/a/13284313/2205881

你可以同时引导其他东西; 像Ruby Windows Installer等。在同一个过程中,抓住你的食谱,angular色等,并开始你的厨师供应。

UPDATE

我已经开始以一种稍微不同的方式做这个,创build实例时使用--user-data-file 。 这可以与AWS API,命令行工具一起使用,或者在启动实例时简单地粘贴到Web界面中。

我正在使用包装经理Chocolatey来安装厨师客户。

<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的用户数据脚本,我们有一个batch file来处理。
@powershell... (etc)是一个从它的文档安装Chocolatey的命令。
cinst chef-client安装chef-client包 。

这不需要任何用户input。 用户数据作为本地pipe理员执行。

所有Amazon AMI都在第一次启动时(默认情况下)运行其用户数据,而不是在后续启动时运行。 因此,这是一个非常简单的方式来获得chef-client ,而无需连接到RDP,甚至不需要获得您的pipe理员密码。

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

<powershell>

#代码下载和安装aplications在这里

</ powershell>

然后当你启动实例时,只需传入userdata文件即可:

ec2run –region“us-east-1”“$ ami”`

  --group "$mygroup" ` --subnet "$mySubnet" --instance-type "m1.medium" ` --key "$myKey" ` --user-data-file "hello.ps1" 

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