2016-05-18 94 views
3

作为Azure资源组模板的一部分,我为我的虚拟机安装了PowerShell DSC扩展设置,其中提供了各种Windows功能。Azure PowerShell DSC安装额外模块

作为这个自动化设置的一部分,我希望能够在防火墙中打开一些端口,经过一些研究后,我发现有一个xFirewall DSC模块可用。我的问题是如何在DSC执行之前自动将此模块安装到Azure虚拟机上?

我的配置是这样的:

Configuration Main 
{ 

Param ([string] $nodeName) 

Import-DscResource -ModuleName PSDesiredStateConfiguration 
Import-DscResource -ModuleName xFirewall 

Node $nodeName 

,因为没有安装模块xFirewall的导入失败。

我曾想过创建另一个DSC脚本,可以在此之前运行,但这证明很困难,因为您一次只能将一个DSC扩展附加到VM。

+0

您是否使用Visual Studio创作/编辑模板? –

+0

@RickRainey是 –

+0

1. xNetworking是包含xFirewall的模块的名称 2.您是否在使用Publish-AzureVMDscConfiguration创建扩展Zip文件?如果是这样,它应该包含在zip中的模块。 – TravisEz13

回答

2

您需要导入的模块是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文件夹添加到您的项目中,如此处所示。

enter image description here

接下来,请通过正常的部署过程。现在您有一个DSC扩展的不同之处在于您需要在部署之前指定工件存储帐户。

enter image description here

部署,AzureResourceGroup.ps1脚本在您的项目将上传DSC.zip现在包括您xNetworking模块插入存储帐户,以便Azure的资源管理器(ARM),然后推扩展进入虚拟机之后它已被调配。从那里,虚拟机中的DSC引擎接管并应用配置。

+0

Hello @Rick Rainey,请不要将此模块复制到输出目录或Azure存储。是否需要一些额外的步骤? –

+0

过去一年中PowerShell脚本已经发生变化,现在要求您在本地机器上安装模块。因此,您必须更改脚本以手动打包项目中的模块(它以前的工作方式 - 我认为这是首选),或者将模块安装到开发人员包中。看看PowerShell脚本,你会看到我在说什么。 –

0

参考如何使用Import-Module {FullPath}然后使用和发现DSC资源这个article

假设你掉xFirewall模块作为DscResource, 首先,你需要导入模块的一部分,我认为这是xNetworking,关注Import-DSCResource -ModuleName xNetworking -name xFirewall

或尝试Import-DSCResource -Name xFirewall,似乎这会让它扫描整个资源文件夹并为您找到xFirewall。

相关问题