Azure PowerShell DSC 安装额外模块
Azure PowerShell DSC install extra modules
作为 Azure 资源组模板的一部分,我为我的 VM 设置了 PowerShell DSC 扩展设置,它提供了各种 Windows 功能。
作为此自动设置的一部分,我希望能够在防火墙中打开一些端口,经过一些研究后我发现有一个 xFirewall DSC 模块可用。我的问题是如何在 DSC 执行之前将此模块自动安装到 Azure VM 上?
我的配置是这样的:
Configuration Main
{
Param ( [string] $nodeName )
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xFirewall
Node $nodeName
xFirewall导入失败,因为没有安装模块
我考虑过创建另一个 DSC 脚本,它可以 运行 在此之前,但事实证明这很困难,因为您一次只能将一个 DSC 扩展附加到 VM。
参考如何使用和发现 DSC 资源 article
假设您将 xFirewall 模块作为 DscResource 的一部分删除,
首先你需要导入模块,我认为是 xNetworking
,通过使用 Import-Module {FullPath}
然后是 Import-DSCResource -ModuleName xNetworking -name xFirewall
或尝试 Import-DSCResource -Name xFirewall
,这似乎会让它扫描整个资源文件夹并为您找到 xFirewall。
您需要导入的模块是xNetworking模块,资源是xFirewall。因此,DSC 脚本的一个简单示例如下所示。
Configuration Main
{
Param ( [string] $nodeName )
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xNetworking
Node $nodeName
{
xFirewall Firewall
{
Name = "AllowNotepad"
Program = "c:\windows\system32\notepad.exe"
Action = "Allow"
}
}
}
要将其添加到您的资源组部署模板中,您需要将 xNetworking module 复制到您在添加 PowerShell DSC 扩展时创建的 DSC 文件夹下的项目中。然后将 xNetworking 文件夹添加到您的项目中,如下所示。
接下来,完成正常的部署过程。现在您有了 DSC 扩展,不同之处在于您需要在部署之前指定工件存储帐户。
项目中的 Deploy-AzureResourceGroup.ps1 脚本会将现在包含 xNetworking 模块的 DSC.zip 上传到存储帐户中,以便 Azure资源管理器 (ARM) 然后可以将扩展推送到虚拟机 之后 它已被配置。从那里,虚拟机中的 DSC 引擎接管并应用配置。
作为 Azure 资源组模板的一部分,我为我的 VM 设置了 PowerShell DSC 扩展设置,它提供了各种 Windows 功能。
作为此自动设置的一部分,我希望能够在防火墙中打开一些端口,经过一些研究后我发现有一个 xFirewall DSC 模块可用。我的问题是如何在 DSC 执行之前将此模块自动安装到 Azure VM 上?
我的配置是这样的:
Configuration Main
{
Param ( [string] $nodeName )
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xFirewall
Node $nodeName
xFirewall导入失败,因为没有安装模块
我考虑过创建另一个 DSC 脚本,它可以 运行 在此之前,但事实证明这很困难,因为您一次只能将一个 DSC 扩展附加到 VM。
参考如何使用和发现 DSC 资源 article
假设您将 xFirewall 模块作为 DscResource 的一部分删除,
首先你需要导入模块,我认为是 xNetworking
,通过使用 Import-Module {FullPath}
然后是 Import-DSCResource -ModuleName xNetworking -name xFirewall
或尝试 Import-DSCResource -Name xFirewall
,这似乎会让它扫描整个资源文件夹并为您找到 xFirewall。
您需要导入的模块是xNetworking模块,资源是xFirewall。因此,DSC 脚本的一个简单示例如下所示。
Configuration Main
{
Param ( [string] $nodeName )
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xNetworking
Node $nodeName
{
xFirewall Firewall
{
Name = "AllowNotepad"
Program = "c:\windows\system32\notepad.exe"
Action = "Allow"
}
}
}
要将其添加到您的资源组部署模板中,您需要将 xNetworking module 复制到您在添加 PowerShell DSC 扩展时创建的 DSC 文件夹下的项目中。然后将 xNetworking 文件夹添加到您的项目中,如下所示。
接下来,完成正常的部署过程。现在您有了 DSC 扩展,不同之处在于您需要在部署之前指定工件存储帐户。
项目中的 Deploy-AzureResourceGroup.ps1 脚本会将现在包含 xNetworking 模块的 DSC.zip 上传到存储帐户中,以便 Azure资源管理器 (ARM) 然后可以将扩展推送到虚拟机 之后 它已被配置。从那里,虚拟机中的 DSC 引擎接管并应用配置。