powershell - Unable to run Node and Script in Desired State Configuration -
background
i provisioning vm in azure using arm template , created desired state configuration .ps1 file installs , configures iis. far good.
i added script
block right next node
block.
current set up:
configuration main { param ( [string] $nodename ) import-dscresource -modulename psdesiredstateconfiguration node $nodename { windowsfeature webserver { name = "web-server" ensure = "present" } #other windowsfeatures } script formatdiskscript { setscript = { #powershell format disks } testscript = { return $false } getscript = { } } }
inside arm template, have added dsc extension vm , specified url
zip file, script
run , function
invoke.
"properties": { "publisher": "microsoft.powershell", "type": "dsc", "typehandlerversion": "2.23", "autoupgrademinorversion": true, "settings": { "configuration": { "url": "[concat(parameters('_artifactslocation'), '/', variables('dscarchivefolder'), '/', variables('webvm_dsczipfilename'))]", "script": "webvm-dsc.ps1", "function": "main" }, "configurationarguments": { "nodename": "[variables('webvm_name')]" } }, "protectedsettings": { "configurationurlsastoken": "[parameters('_artifactslocationsastoken')]" } }
question
it generates 2 .mof files , executes both node
, script
sections node
section completes successfully.
when run script
, works, script
valid. problem when running both of them.
this see in output in c:\packages\plugins\microsoft.powershell.dsc\2.23.0.0\status\0.status
settings handler status 'transitioning' updating execution status dsc configuration completed no meta mof file exist restore ... settings handler status 'error'
answer
after trying different approaches, stumbled across 1 worked. placed script
inside node
instead of being peer:
configuration main { param ( [string] $nodename ) import-dscresource -modulename psdesiredstateconfiguration node $nodename { windowsfeature webserver { name = "web-server" ensure = "present" } #other windowsfeatures script formatdiskscript { setscript = { #powershell format disks } testscript = { return $false } getscript = { } } } }
you need create 2 configurations inside dsc configuration (say main , manual) , put thing want executed arm template main , other thing manual
or create 2 separate configurations in 2 separate files.
Comments
Post a Comment