2016-04-25 8 views
0

Ich habe einige Probleme bei der Bereitstellung einer dscExtension in einem Azure Virtual Machine-Skalierungssatz (VMSS) mit einer Bereitstellungsvorlage.Probleme beim Bereitstellen von dscExtension in Azure VMSS

Hier ist, wie ich hinzugefügt habe es zu meiner Vorlage:

{ 
    "name": "dscExtension", 
    "properties": { 
    "publisher": "Microsoft.Powershell", 
    "type": "DSC", 
    "typeHandlerVersion": "2.9", 
    "autoUpgradeMinorVersion": true, 
    "settings": { 
     "ModulesUrl": "[concat(parameters('_artifactsLocation'), '/', 'MyDscPackage.zip', parameters('_artifactsLocationSasToken'))]", 
     "ConfigurationFunction": "CmvmProcessor.ps1\\CmvmProcessor", 
     "Properties": [ 
     { 
      "Name": "ServiceCredentials", 
      "Value": { 
      "UserName": "parameters('administratorLogin')", 
      "Password": "parameters('administratorLoginPassword')" 
      }, 
      "TypeName": "System.Management.Automation.PSCredential" 
     } 
     ] 
    } 
    } 
} 

Die VMSS selbst ist erfolgreich bereitstellen, aber wenn ich die InstanceView der einzelnen VMs zu finden, zeigt die dscExtension den Status Fehler mit einer Fehlermeldung .

Die Probleme, die ich habe, sind wie folgt:

Der ARM Einsatz versucht nicht, die dscExtension auf redeploy zu aktualisieren. Ich bin MSDeploy für Web App-Erweiterungen gewohnt, bei denen die Artefakte aktualisiert werden und der Code bei jeder neuen Bereitstellung erneut bereitgestellt wird. Ich weiß nicht, wie man es zwingt, die dscExtension mit neuen Binärdateien zu aktualisieren. In der Tat scheint es nur einen Fehler bei der ersten Bereitstellung der VMSS zu geben, dann wird es nicht noch einmal versuchen.

Der Fehler, den ich bekomme, ist für alten Code, der nicht mehr existiert.

hatte ich vorher einen Fehler in einem Skript benutzerdefinierten DSC Powershell, wo ich den -replace Operator zu verwenden versuchte, die ein $ Spiele Variable erstellen sollten, aber es sagt Spiele $ gibt es nicht.

In jedem Fall, habe ich seit dem Refaktorieren des Codes und löschte die gesamte Ressourcengruppe dann neu implementiert. Die dscExtension gibt immer noch den gleichen Fehler. Ich habe überprüft, dass das BLOB-Speicherkonto, in dem sich meine DSC-Datei befindet, nicht mehr den Code besitzt, der diese Fehlermeldung erzeugt. Azure muss die dscExtension irgendwo zwischenspeichern. Ich kann es nicht nutzen, um mein neues Blob .zip zu verwenden, das ich vor jeder Bereitstellung hochlade.

Jeder Einblick in die DSC-Erweiterung und wie man es zwingt, auf Bereitstellung zu aktualisieren?

Antwort

2

Es hört sich an, als könnten Sie hier mehrere Dinge finden, also probieren Sie zuerst das Einfache aus. Um eine VM-Erweiterung für eine nachfolgende Bereitstellung ausführen zu können, müssen Sie sie "seed". (Und du hast recht das ist anders als der Rest von AzureRM) Werfen Sie einen Blick auf diese Vorlage:

https://github.com/bmoore-msft/AzureRM-Samples/blob/master/VMDSCInstallFile/azuredeploy.json

Es ist eine Eigenschaft auf der DSC-Erweiterung genannt:

   "forceUpdateTag" : "changeThisToEnsureScriptRuns-maxlength=50", 

Das Anwesen Der Wert muss unterschiedlich sein, wenn die Erweiterung erneut ausgeführt werden soll. Wenn Sie beispielsweise möchten, dass es jedes Mal ausgeführt wird, verwenden Sie eine Zufallszahl oder eine GUID. Sie könnten auch Versionsnummern verwenden, wenn Sie es irgendwie versionieren möchten. Der Punkt ist, wenn der Wert in der Vorlage derselbe ist wie der, den Sie übergeben, wird die Erweiterung nicht erneut ausgeführt.

Dieses Beispiel verwendet eine VM, aber die VMSS-Syntax sollte gleich sein. Diese Eigenschaft gilt auch für andere Erweiterungen (z. B. benutzerdefiniertes Skript).

Der Teil, der seltsam scheint, ist, dass Sie sagten, Sie löschte die gesamte RG und konnte es nicht, das neue Paket zu akzeptieren ... Das klingt schlecht (d. H. Wie ein Fehler). Wenn das Obige es nicht behebt, müssen wir uns vielleicht tiefer in die Vorlage und das Skript vertiefen. LMK ...

+0

Vielen Dank.Ich war tatsächlich in der Lage, die DSC-Erweiterung richtig funktionieren zu lassen, indem ich zu TypeHandlerVersion 2.17 wechselte und die JSON-Syntax verwendete, die ich nur hier https://blogs.msdn.microsoft.com/powershell/2016/02/26/arm-dsc finden konnte -extension-settings/ –

+0

Aber ich muss es immer noch zwingen, es zu aktualisieren, natürlich ist diese Antwort großartig. –

+0

ein weiterer Debugging-Tipp ist, dass, wenn Sie Probleme haben, es erneut auszuführen können Sie die Erweiterung entfernen und den Rest der VM und RG intakt lassen - viel schneller zum Debuggen. Ich benutze PowerShells "Remove-AzureRmVMExtension". –

Verwandte Themen