2013-11-28 6 views
1

Я пытаюсь использовать следующий рецепт шеф-повара для загрузки и установки обновлений Windows на машине Windows 2008 R2 в облаке Amazon: https://github.com/dougm/site-cookbooks/blob/master/windows/recipes/update.rb.Рецепт обновления для Windows Update

Я использую Chef 11.8.0, но повар запуска выдает следующее сообщение об ошибке:

Рецепт Compile Error в с: /chef/cache/cookbooks/test/recipes/updates.rb

WIN32OLERuntimeError


(в методе OLE `CreateUpdateDownloader ':) OLE код ошибки: 80070005 в код ошибки HRESULT: 0x80020009 произошло Исключение.

Поваренная трассировки:


C: /chef/cache/cookbooks/test/recipes/updates.rb: 54: в method_missing' c:/chef/cache/cookbooks/test/recipes/updates.rb:54:in from_file»

Line 54: загрузчик = session.CreateUpdateDownloader.

Любые идеи?

+0

Я забыл добавить, что проблема не существует при использовании Chef Solo с брандмауэром, загружающим образ Windows 2008 R2. –

ответ

0

Ошибка исходит от this line of code. Ошибка не связана с шеф-поваром, но WIN32OLE поднимает это исключение.

Я бы попробовал запустить код в интерактивном рубине (irb) и посмотреть, есть ли у вас более полезная ошибка.

0

Как и sethvargo, это не проблема с кодом шеф-повара. Оба «кода: 80070005» и «код ошибки 0x80020009» - это проблемы с разрешениями. Попробуйте подтвердить пользовательский контекст, который работает Chef на вашем сервере Windows. Шеф-повар установлен и работает как служба или вы запускаете выполнение шеф-повара?

0
# 
# Cookbook Name:: InstallWindowsUpdates 
# Recipe:: default 
# Author(s):: A M 
# 

# Configures Windows Update automatic updates 
powershell_script "install-windows-updates" do 
    guard_interpreter :powershell_script 
    # Set a 2 hour timeout 
    timeout 7200 
    code <<-EOH 
    Write-Host -ForegroundColor Green "Searching for updates (this may take up to 30 minutes or more)..." 

    $updateSession = New-Object -com Microsoft.Update.Session 
    $updateSearcher = $updateSession.CreateupdateSearcher() 
    try 
    { 
     $searchResult = $updateSearcher.Search("Type='Software' and IsHidden=0 and IsInstalled=0").Updates 
    } 
    catch 
    { 
     eventcreate /t ERROR /ID 1 /L APPLICATION /SO "Chef-Cookbook" /D "InstallWindowsUpdates: Update attempt failed." 
     $updateFailed = $true 
    } 

    if(!($updateFailed)) { 
     foreach ($updateItem in $searchResult) { 
     $UpdatesToDownload = New-Object -com Microsoft.Update.UpdateColl 
     if (!($updateItem.EulaAccepted)) { 
      $updateItem.AcceptEula() 
     } 
     $UpdatesToDownload.Add($updateItem) 
     $Downloader = $UpdateSession.CreateUpdateDownloader() 
     $Downloader.Updates = $UpdatesToDownload 
     $Downloader.Download() 
     $UpdatesToInstall = New-Object -com Microsoft.Update.UpdateColl 
     $UpdatesToInstall.Add($updateItem) 
     $Title = $updateItem.Title 
     Write-host -ForegroundColor Green " Installing Update: $Title" 
     $Installer = $UpdateSession.CreateUpdateInstaller() 
     $Installer.Updates = $UpdatesToInstall 
     $InstallationResult = $Installer.Install() 
     eventcreate /t INFORMATION /ID 1 /L APPLICATION /SO "Chef-Cookbook" /D "InstallWindowsUpdates: Installed update $Title." 
     } 

     if (!($searchResult.Count)) { 
     eventcreate /t INFORMATION /ID 999 /L APPLICATION /SO "Chef-Cookbook" /D "InstallWindowsUpdates: No updates available." 
     } 
     eventcreate /t INFORMATION /ID 1 /L APPLICATION /SO "Chef-Cookbook" /D "InstallWindowsUpdates: Done Installing Updates." 
    } 
    EOH 
    action :run 
end 
Смежные вопросы