在 Azure 虚拟机上触发重新运行 DSC 检查

在 Azure 虚拟机上触发重新运行 DSC 检查

我正在通过简单的练习来学习 Azure 和 Powershell DSC。

这篇博文为 DSC 提供了完美的“Hello World”示例:

Configuration HelloWorldConfig 
{
       Node localhost 
       {
              File TestFile {
                     Ensure = "Present"
                     DestinationPath = "c:\temp\HelloWorld.txt"
                     Contents = "Hello World!"
              }
       }
}

我使用 powershell 创建了包,并通过 azure 门户上的扩展刀片将其上传到我的 Azure VM。

成功了!当我登录到机器时,我可以看到文件c:\temp\HelloWorld.txt

但 DSC 应该可以保护您免受“配置漂移”的影响。为了测试这一点,我通过手动删除文件来漂移我的配置。

我如何让该文件再次出现?即如何重新运行此所需状态配置检查。

我假设我上传的 DSC 脚本位于虚拟机的某个位置。(我可以在扩展刀片上看到一个条目)。

在此处输入图片描述

或者我必须重新加载包吗?如果是这样,为什么该条目在 blade 上仍然可见?


我问,这个包到底在哪里?我使用 powershell 找到了答案:

$extension = Get-AzureRmVMDscExtension -ResourceGroupName $vm.ResourceGroupName -VMName $vm.Name
$extension.ModulesUrl

这表明我的包裹现在位于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

iaasv2tempstoreseasia因此,我将其解释为位于名为 的 blob 容器中的存储帐户(不是我的)vmextensionstemporary-000116674c9bb772-20160908062048340。仅凭这个词的存在temp就表明它不在那里可以导航到。

有趣的是,当我从扩展刀片中删除 DSC 扩展时,我仍然可以使用此 URL 下载包。几个小时后它就消失了 - 我怀疑是一些清理工作。

答案1

DSC 使用 DSC 本地配置管理器来处理您的 DSC 配置并对其进行监控。本地配置管理器有一个名为配置模式的设置,默认情况下,该设置被设置为 ApplyAndMonitor。这意味着它将处理并应用您的 DSC 脚本,但如果发生更改(例如删除文件),它将不会自动重新应用设置。您需要做的是将配置模式设置为 ApplyAndAutocorrect。在此模式下,它将检测配置漂移并重新应用您的 DSC 设置。

在此处输入图片描述

请查看此 URL 来获取有关此设置的更多信息:

https://msdn.microsoft.com/en-us/PowerShell/DSC/metaConfig

相关内容