2016-04-25 2 views
0

У меня возникли проблемы с развертыванием dscExtension для набора параметров виртуальной машины Azure (VMSS) с использованием шаблона развертывания.Проблемы с развертыванием dscExtension до Azure VMSS

Вот как я добавил его в шаблон:

{ 
    "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" 
     } 
     ] 
    } 
    } 
} 

Самого VMSS успешно развернуть, но когда я просматриваю InstanceView в отдельных виртуальных машинах, то dscExtension показывает неисправное состояние с сообщением об ошибке ,

Проблемы у меня возникают следующие:

развертывания тонарма не пытается обновить dscExtension После повторного развёртывания. Я привык к расширениям веб-приложений MSDeploy, где артефакты обновляются, а код перераспределяется при каждом новом развертывании. Я не знаю, как заставить его обновлять dscExtension с помощью новых двоичных файлов. На самом деле это только, кажется, дает ошибку при первом развертывании VMSS, тогда он даже не попытается повторить.

Ошибка, которую я получаю для старого кода, который больше не существует.

У меня была ошибка, ранее в пользовательском DSC Powershell скрипт, где я пытался использовать оператор -replace, который предполагается создать $ Спички переменной, но это говорит $ Спички не существует.

В любом случае, я с тех пор отредактировал код и удалил всю группу ресурсов, а затем повторно развернул. Значение dscExtension по-прежнему дает ту же ошибку. Я проверил учетную запись хранилища blob, в которой находится мой DSC .zip, больше не имеет кода, способного вызывать это сообщение об ошибке. Azure должен кэшировать dscExtension где-нибудь. Я не могу заставить его использовать мой новый blob .zip, который я загружаю перед каждым развертыванием.

Любое понимание расширения DSC и как его заставить обновлять при развертывании?

ответ

2

Похоже, вы можете столкнуться с несколькими вещами здесь, поэтому сначала попробуйте простой. Чтобы получить расширение VM для последующего развертывания, вам нужно «засеять» его. (И вы правы, это отличается от остальной части AzureRM) Посмотрите на этот шаблон:

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

Существует свойство на расширение DSC называется:

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

Свойство значение должно быть другим, если вы хотите, чтобы расширение снова запускалось. Например, если вы хотите, чтобы он запускался каждый раз, когда вы засевали его случайным числом или указателем. Вы также можете использовать номера версий, если хотите каким-то образом его версия. Дело в том, что если значение в шаблоне совпадает с значением, которое вы передаете, расширение не будет работать снова.

Этот образец использует виртуальную машину, но синтаксис VMSS должен быть таким же. Это свойство также относится к другим расширениям (например, пользовательский скрипт).

Часть, которая кажется странной, заключается в том, что вы сказали, что удалили весь RG и не смогли заставить его принять новый пакет ... Это звучит плохо (например, как ошибка). Если выше это не исправить, нам, возможно, придется углубиться в шаблон и скрипт. LMK ...

+0

спасибо.Я действительно смог нормально работать с DSC-расширением, переключившись на TypeHandlerVersion 2.17 и используя синтаксис JSON, который мог найти только здесь. Https://blogs.msdn.microsoft.com/powershell/2016/02/26/arm-dsc -extension-settings/ –

+0

Но мне все же нужно заставить его обновляться, конечно, так что этот ответ велик. –

+0

еще одна подсказка для отладки заключается в том, что если у вас возникли проблемы с ее повторным запуском, вы можете удалить расширение и оставить остальную часть виртуальной машины и RG неповрежденной - гораздо быстрее для отладки. Я использую PowerShell «Remove-AzureRmVMExtension». –

Смежные вопросы