2012-04-27 68 views
1

Help !!!使用自定義AMI自動登錄啓動多個ec2 windows服務器

我試圖創建一個Windows AMI,當啓動時(需要多個[20]活服務器在短時間內短時間內啓動)自動登錄並運行一個.exe應用程序(很遺憾,我無法獲得應用程序作爲服務運行)。機器名稱也必須是唯一的。

問題在系統準備完好的時候工作正常,但是當我從ami啓動實例時,它無法登錄,因爲機器名稱明顯從原始機器映像更改。

我管理它的唯一方法是不sysprep,採取ami,然後啓動時登錄到新計算機上並手動更改計算機名稱,並設置自動登錄sysinternal工具。這並不理想,因爲最終用戶不是技術人員,而且時間限制不允許有效執行此操作。

我在我的智慧結束!非常感激你的幫助。

回答

8

我知道這是一個很古老的問題。然而,當我遇到類似的問題時,谷歌引導了我這個問題。我做了以下解決我的問題。

  • 根據自己的喜好自定義實例。 AMI將使用此實例創建。

    • 創建一個具有管理員權限的新用戶帳戶。這是必需的,因爲Sysprep \ Ec2ConfigService將重置管理員密碼。將此用戶添加到組Remote Desktop Users,以便您可以使用此用戶帳戶的RDP。
  • 編輯EC2的Sysprep應答文件以啓用自動登錄。

    • 附加以下的文件C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml

名爲Microsoft-Windows-Shell-Setupcomponent節點。

<AutoLogon> 
    <Password> 
    <Value>NewUser'sPassword</Value> 
    <PlainText>true</PlainText> 
    </Password> 
    <Username>NewUser'sName</Username> 
    <Enabled>true</Enabled> 
    <LogonCount>999</LogonCount> 
</AutoLogon> 

生成的文件應該看起來像下面的代碼片段。我刪除了不需要這個答案的部分。

<?xml version="1.0" encoding="utf-8"?> 
<unattend xmlns="urn:schemas-microsoft-com:unattend"> 
    <settings pass="oobeSystem"> 
    <!-- snip --> 
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <!-- snip -->  
     <AutoLogon> 
      <Password> 
      <Value>NewUser'sPassword</Value> 
      <PlainText>true</PlainText> 
      </Password> 
      <Username>NewUser'sName</Username> 
      <Enabled>true</Enabled> 
      <LogonCount>999</LogonCount> 
     </AutoLogon> 
    </component> 
    </settings> 
    <!-- snip --> 
</unattend> 
  • 接下來我們編輯EC2ConfigService設置。

    • 在文件"C:\Program Files\Amazon\Ec2ConfigService\Settings\BundleConfig.xml",確保值SetPasswordAfterSysprepYes
    • 在文件"C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml"中,確保state節點對於插件Ec2SetPassword具有值Enabled
    • 在文件"C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml"中,確保RemoveCredentialsfromSysprepOnStartup的值爲false
  • 您已經在登錄時啓動exe。使用相同的機制,還可以啓動一個腳本,從註冊表中刪除AutoLogonCount設置。此步驟非常重要,否則在999(根據上述示例)登錄後,自動登錄將停止。

。現在

powershell.exe -command { Remove-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\winlogon" -Name AutoLogonCount -Force -ErrorAction 0 } 
  • 我們就可以開始Sysprep的。使用UI或以下命令。

%ProgramFiles%\Amazon\Ec2ConfigService\ec2config.exe -sysprep 

使用上述實例創建的AMI啓動的任何實例都將無限期地保留自動登錄行爲。