I'm running through simple exercises to learn Azure and Powershell DSC.
This blog entry provides the perfect "Hello World" example for DSC:
Configuration HelloWorldConfig
{
Node localhost
{
File TestFile {
Ensure = "Present"
DestinationPath = "c:\temp\HelloWorld.txt"
Contents = "Hello World!"
}
}
}
I created the package using powershell, and uploaded to my Azure VM via the extensions blade on the azure portal.
It worked! When I logged on to the machine, I could see the file c:\temp\HelloWorld.txt
.
But DSC is supposed to protect you from 'configuration drift'. To test this, I drifted my configuration by manually deleting the file.
How do I make the file appear again? i.e. How do I re-run this Desired State Configuration check.
I assume that the DSC script I uploaded resides somewhere on the virtual machine. (I can see an entry on the extensions blade).
Or do I have to reload the package? If so, why is that entry even visible on the blade?
I ask, where does this package even reside? I found out the answer using powershell:
$extension = Get-AzureRmVMDscExtension -ResourceGroupName $vm.ResourceGroupName -VMName $vm.Name
$extension.ModulesUrl
This revealed that my package now resides in https://iaasv2tempstoreseasia.blob.core.windows.net/vmextensionstemporary-000116674c9bb772-20160908062048340/sample-dsc-package.zip?sv=2015-04-05&sr=c&sig=YnGCCH%2Bvfv%2FMPWexQWhGOw7H8d8EkGcN5Ufudyz1MIE%3D&se=2016-09-09T06%3A20%3A48Z&sp=rw
So, I interpret it is in a storage account (not mine) called iaasv2tempstoreseasia
in a blob container called vmextensionstemporary-000116674c9bb772-20160908062048340
. Just the existence of the word temp
suggests it's not there to be navigated to.
And interestingly, when I deleted the DSC extension from the Extensions blade, I could still download the package using this URL. After a few hours it went away – I suspect by some cleanup job.
Best Answer
DSC uses the DSC Local Configuration Manager to process you DSC configuration and to monitor it. the Local Configuration Manger has a setting called CONFIGURATION MODE, by default this is set to ApplyAndMonitor. This means that it will process and apply your DSC script but if there is a change (in you example deleting the file) it wont automatically re-apply the settings. what you need to do is set the CONFIGURATION MODE to ApplyAndAutocorrect. in this mode it will detect configuration drift and re-apply your DSC settings.
Check out this URL for more info on this setting:
https://msdn.microsoft.com/en-us/PowerShell/DSC/metaConfig