2016-11-15 22 views
-1

我有一個基於類的自定義DSC模塊。在初始同步過程中,目標計算機嘗試在C:\ Windows \ System32 \ dsc中生成MOF,這會導致錯誤 - 這會導致初始同步報告爲失敗,即使所有單個配置資源任務都顯示爲成功。基於MOF的資源沒有生成報告成功,但實際上根本沒有執行。Azure DSC錯誤初始同步生成mof

這是錯誤:

{ 
    "JobId": "4deeaf52-aa56-11e6-a940-000d3ad04eaa", 
    "OperationType": "Initial", 
    "ReportFormatVersion": "2.0", 
    "ConfigurationVersion": "2.0.0", 
    "StartTime": "2016-11-14T21:37:14.2770000+11:00", 
    "Errors": [{ 
     "ErrorSource": "DSCPowershellResource", 
     "Locale": "en-US", 
     "Errors": { 
      "Exception": { 
       "Message": "Could not find the generate schema file dsc\tBlobSync.1.4.tAzureStorageFileSync.schema.mof.", 
       "Data": { 

       }, 
       "InnerException": null, 
       "TargetSite": null, 
       "StackTrace": null, 
       "HelpLink": null, 
       "Source": null, 
       "HResult": -2146233079 
      }, 
      "TargetObject": null, 
      "CategoryInfo": { 
       "Category": 6, 
       "Activity": "", 
       "Reason": "InvalidOperationException", 
       "TargetName": "", 
       "TargetType": "" 
      }, 
      "FullyQualifiedErrorId": "ProviderSchemaNotFound", 
      "ErrorDetails": null, 
      "InvocationInfo": null, 
      "ScriptStackTrace": null, 
      "PipelineIterationInfo": [] 
     }, 
     "ErrorCode": "6", 
     "ErrorMessage": "Could not find the generate schema file dsc\tBlobSync.1.4.tAzureStorageFileSync.schema.mof.", 
     "ResourceId": "[tAzureStorageFileSync]CDrive" 
    }], 
    "StatusData": [], 
    "AdditionalData": [{ 
     "Key": "OSVersion", 
     "Value": { 
      "VersionString": "MicrosoftWindowsNT10.0.14393.0", 
      "ServicePack": "", 
      "Platform": "Win32NT" 
     } 
    }, 
    { 
     "Key": "PSVersion", 
     "Value": { 
      "CLRVersion": "4.0.30319.42000", 
      "PSVersion": "5.1.14393.206", 
      "BuildVersion": "10.0.14393.206" 
     } 
    }] 
} 

我已經試過手動生成財政部和包括它的模塊中,但這並沒有幫助(也許我這樣做是錯誤的)。儘管這是一個基於類的資源,但我在文件\ DSCResources \ className \ classname .schema.mof文件中添加了MOF類的名稱。我注意到在C:\ windows \ system32 \ dsc文件夾中生成的文件包含版本號,而我的版本號並不是。也許這就是問題所在。

失敗的初始同步後,隨後的一致性檢查通過,並且在錯誤消息中提到的位置創建MOF。

該類本身包含一個函數,該函數調用Import-Module Azure.Storage,該函數通過不同的DSC資源安裝在機器上,並且已經在一致性檢查時安裝,但(顯然)不在初始同步開始的位置。安裝模塊的資源被標記爲配置中類資源的依賴關係,但我認爲MOF的生成必須發生在模塊部署的位置,這在邏輯上是在初始同步運行之前進行的。

至少這是我認爲正在發生的事情。

如果有人能告訴我在這種情況下可以做什麼,以及我的假設(上面)是否正確,我將不勝感激嗎?我似乎無法從MOF編譯過程本身得到任何額外的錯誤或遙測,看到爲什麼 MOF編譯失敗。

+0

你可以分享你的ARM模板或一個回購的問題和導致問題的資源?沒有代碼,我只能猜測是什麼導致了錯誤,問題還不清楚。 – TravisEz13

+0

@ TravisEz13我不認爲這真的與實際代碼有關(我無法發佈)。正如我所說,一旦MOF產生,它會在第二次及以後的時間內順利運行。我開始將MOF文件與根目錄中的類(與'.psm1'相同的文件夾)傳送,而不是上述的文件夾偏移量,似乎解決了這個問題。 –

回答

0

@Mods我真的不清楚這是什麼基礎會被低估 - 我不認爲問一個沒有人能回答的問題是「懲罰」的真正理由。

發佈一個答案,因爲沒有人真的有什麼可以在這裏貢獻,我似乎 已經解決了我自己的問題。我相信這個問題是時間問題。 DSC依賴模塊從拉取服務器傳送並編譯之前其中任何一個都被執行。我的班級模塊對Azure.Storage的依賴意味着無法編譯.psm1文件(因爲該模塊尚未存在於機器上 - 它將在稍後通過DSC資源發送)。

也許有一些機制在基於PS的模塊中解釋這些依賴關係,或者應用了一些寬鬆的情況,而不是基於類的資源。這仍然不清楚。

一些實驗後,我開始創建和航運MOF文件旁邊的psm1psd1文件,而不是在我的問題概括的DSCResources...子文件夾,這似乎已經解決了這個問題。

希望這可以幫助別人,並且不會吸引更多的讚賞者。