复合 DSC 资源未在 Azure 自动化中导出
Posted
技术标签:
【中文标题】复合 DSC 资源未在 Azure 自动化中导出【英文标题】:Composite DSC Resources not Exporting in Azure Automation 【发布时间】:2021-02-04 02:42:07 【问题描述】:我正在尝试构建我的第一个复合 DSC 资源模块以在 Azure 自动化中使用,而在我的一生中,我无法弄清楚我忽略了什么愚蠢的东西,它阻止了我的 DSC 资源被导出或可用在我创建的测试配置中。我的第一次尝试很大很花哨,有param
s 并导入了其他 DSCResouces,效果很好,令人印象深刻,但根本没有用。
所以我决定使用我的非复合配置中的代码块创建一个超级简单的配置,一切正常。我压缩了下面列出的所有内容,将其导入到我的 Azure 自动化模块中,并且没有导出任何活动。没有错误,似乎没有什么不开心,但没有任何反应。该模块已列出,但它不执行任何操作。
对其运行测试配置失败,说它无法导入模块 DefaultEnvironment,请尝试导入模块。
我尝试了以下两个配置,都因相同的原因而失败:
configuration testdscconfig
Import-Module TestDSC
Import-DscResource -Name DefaultRegistry
Import-DscResource -Name DefaultEnvironment
node localhost
DefaultEnvironment SetDefaultEnvironment
DefaultRegistry SetDefaultRegistry
和
configuration testdscconfig
Import-DSCResource -ModuleName TestDSC
node localhost
DefaultEnvironment SetDefaultEnvironment
DefaultRegistry SetDefaultRegistry
我的复合 DSC 配置结构如下:
TESTDSC
│ TestDSC.psd1
│ TestDSC.psm1
│
└───DSCResources
├───DefaultEnvironment
│ DefaultEnvironment.psd1
│ DefaultEnvironment.schema.psm1
│
└───DefaultRegistry
Defaultregistry.psd1
DefaultRegistry.schema.psm1
TestDSC.psm1 是一个空文件。 TestDSC.psd1 包含:
@
RootModule = "TestDSC.psm1"
ModuleVersion = '0.0.8'
GUID = <GUID>
Author = 'RobbieCrash'
CompanyName = 'Noncorp'
# DSC resources to export from this module
DscResourcesToExport = @(
'DefaultEnvironment'
'DefaultRegistry'
)
DSCResources\DefaultRegistry\DefaultRegistry.psd1:
@RootModule="DefaultRegistry.schema.psm1"
DSCResources\DefaultRegistry\DefaultRegistry.schema.psm1:
Configuration DefaultRegistry
Registry SecureDotNetCryptox64
Ensure = "Present"
Key = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319\"
ValueName = "SchUseStrongCrypto"
ValueData = "1"
Registry SecureDotNetCryptox86
Ensure = "Present"
Key = "HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319"
ValueName = 'SchUseStrongCrypto'
ValueData = '1'
DefaultEnvironment 设置相同,但配置块看似无害。删除一个或另一个没有区别,编译失败并且没有资源被导出。
我尝试将RootModule=
设置为".\Resource.schema.psm1"
和"Resource.schema.psm1"
,经过验证的案例,验证代码中没有任何不可靠的内容或拼写错误等。
我很肯定我在某处遗漏了一些重要的细节,但在浏览了 20 篇不同的文章以及 StackExchange/相关主题之后,我坐在这里傻傻地盯着我必须遗漏的东西。
【问题讨论】:
【参考方案1】:从上面开始,我做了一些测试,最低要求是定义RootModule
和ModuleVersion
,所以DefaultRegistry.psd1
可以是:
@
RootModule = 'DefaultRegistry.schema.psm1'
ModuleVersion = '1.0.0'
【讨论】:
【参考方案2】:事实证明,要正确检测,资源的清单实际上需要是完整清单,而不仅仅是存根条目RootModule = "module"
documentation states 是必需的,我是个懒惰的白痴。 :)
【讨论】:
以上是关于复合 DSC 资源未在 Azure 自动化中导出的主要内容,如果未能解决你的问题,请参考以下文章
Terraform DSC 配置与节点配置中的 Azure 自动化
xSCOM 1.3.3.0 在 Azure VM 上运行 DSC 时引发异常
是否可以通过 ARM 模板将分配的 Azure DSC 配置更新到 VM?