使用 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/
有沒有人有連結到以前做過這個或類似的人?還是實現我想做的更好的方法?
任何幫助表示讚賞。
大多數 Windows 引導資源都集中在 Hosted Chef 和使用
knife-windows
外掛上。然而,這應該可以通過 Chef 獨奏來實現。
如果您沒有
chef-client
在其上建構 AMI,那麼您的第一步是在那裡獲取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) 是從它的 docs
@powershell...
安裝 Chocolatey 的命令。安裝包。
cinst chef-client
chef-client
這些都不需要任何使用者輸入。使用者數據以本地管理員身份執行。
所有 Amazon AMI 在首次啟動時(預設情況下)而不是在後續啟動時執行其使用者數據。因此,這是一種非常簡單的方法,
chef-client
無需連接到 RDP,甚至無需獲取您的管理員密碼。