2011-10-06 130 views
7

看起來股票引導過程在Windows上有點欠缺。Windows的Cloud-Init等效物是什麼?

Linux具有cloud-init,它將安裝軟件包,存儲文件並從用戶數據運行bash腳本。

Windows有ec2config,但目前不支持在系統「準備就緒」時運行cmd或powershell腳本 - 這意味着所有初始重新啓動都已完成。

似乎有第三方選項。例如RightScale具有執行此功能的RightLink代理。

是否有開源選項? 有沒有計劃將此功能添加到Ec2Config? 我是否必須建立我自己?

我錯過了什麼嗎?

回答

14

似乎EC2Config在亞馬遜提供的的AMI現在支持「用戶數據腳本」作爲the 11-April-2012 updates

該文檔尚未更新,因此很難判斷它是否支持PowerShell或僅支持cmd.exe腳本。我有posted a question on the AWS forums嘗試瞭解更多細節,並在我瞭解更多信息時在此更新。

更新:它看起來像支持cmd.exe批處理語法,它可以反過來調用PowerShell。 AMI上包含一個新版本的EC2Config文檔。從它引用:

[EC2Config]將在該實例指定的用戶讀取數據,然後檢查是否含有標籤<script></script>。如果找到兩者,那麼它將採用這兩個標籤之間的信息並將其保存到位於此應用程序的Settings文件夾中的批處理文件中。然後它將在實例啓動期間執行批處理文件。

批處理文件只有在sysprep後首次啓動實例時纔會創建並執行。如果您希望再次創建並執行批處理文件,請將Ec2HandleUserdata插件狀態設置爲已啓用。

更新2:我解釋is confirmed通過Shon from the AWS Team

更新3:而隨着五月-2012的AMI,PowerShell是使用<powershell/>標籤支持。

+0

如果OP正在收聽,我認爲在這個時候這個答案應該被標記爲接受的答案。 – blong

+1

@blong - 同意 –

0

我們必須自己建造它;我們通過定製服務完成了自己的AMI。 EC2Config目前沒有提供這項服務。

更好的是,沒有簡單的方法來確定實例何時「準備就緒」。我們必須通過拖拽EC2Config的日誌文件來完成。

+0

什麼只是刪除Ec2Config與定製服務編排引導過程?這不像Ec2Config那麼做。 –

+0

沒錯。你不需要Ec2Config;除了我們的引導程序之外,我們完全不「使用」它:我們相信我們可以最終知道該實例的唯一方法是通過在Ec2ConfigLog.txt文件中查找「Windows已準備好使用」。如果你真的想知道實例何時完成設置並重新啓動,這是一個令人生厭的問題。 – Joe

+1

我決定走這條路。 Ec2Config會自動執行一些啓動任務。沒有重新發明輪子的意義。例如,格式化臨時卷並根據需要重命名機器。希望未來版本的Ec2Config添加一個「ready」事件鉤子來簡化這個過程。 –

2

我不得不自己創建一個,但它非常簡單。只是提供了一個服務,在啓動時讀取用戶數據並將其作爲PowerShell腳本執行。

爲了解決不知道何時啓動服務的問題,我只是將服務啓動類型設置爲「delayed-auto」,似乎解決了問題。取決於你需要做什麼系統,可能或可能不適合你,但在我的情況下,這就是我所要做的。

1

我添加了一個新的codeplex項目,已經有這個工具建立了Windows。期待一些反饋。

http://cloudinitnet.codeplex.com/

+0

我一直在使用這個,報告問題等 - 這是一個*很棒的工具。 –

+0

我想過渡到這個工具,特別是對於個人項目。看起來很有趣。 –

+0

如果您有任何問題,您可以在本網站(我認爲)或codeplex網站與我聯繫,如果您有任何問題,我會非常樂意幫助您。 – bwight

0

我最近找到了nssm(在nssm.cc),它可以很容易地將簡單的批處理文件(或者其他任何東西)作爲服務包裝起來。您可以隨後通過sc config servic1 depend = service0強制批處理文件在服務初始化序列中的特定點上運行。例如,我在ex2config和sql express之間使用它來在d上創建一個文件夾。您必須使用服務工具使其作爲網絡服務運行,並使用regedit將AppExit屬性更改爲忽略,但一旦完成就可以運行。

相關問題