我正在通过简单的练习来学习 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
iaasv2tempstoreseasia
因此,我将其解释为位于名为 的 blob 容器中的存储帐户(不是我的)vmextensionstemporary-000116674c9bb772-20160908062048340
。仅凭这个词的存在temp
就表明它不在那里可以导航到。
有趣的是,当我从扩展刀片中删除 DSC 扩展时,我仍然可以使用此 URL 下载包。几个小时后它就消失了 - 我怀疑是一些清理工作。
答案1
DSC 使用 DSC 本地配置管理器来处理您的 DSC 配置并对其进行监控。本地配置管理器有一个名为配置模式的设置,默认情况下,该设置被设置为 ApplyAndMonitor。这意味着它将处理并应用您的 DSC 脚本,但如果发生更改(例如删除文件),它将不会自动重新应用设置。您需要做的是将配置模式设置为 ApplyAndAutocorrect。在此模式下,它将检测配置漂移并重新应用您的 DSC 设置。
请查看此 URL 来获取有关此设置的更多信息: