2016-05-18 10 views
3

Azureリソースグループテンプレートの一部として、さまざまなWindows機能をプロビジョニングするMy VM用のPowerShell DSC拡張セットアップがあります。Azure PowerShell DSC特別モジュールのインストール

この自動設定の一環として、xFirewall DSCモジュールが利用可能であることがわかった後、ファイアウォールの一部のポートを開くことができるようにしたいと考えています。私の問題は、DSCを実行する前にこのモジュールをAzure VMに自動的にインストールする方法です。

私の構成は次のようになります。

Configuration Main 
{ 

Param ([string] $nodeName) 

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

Node $nodeName 

モジュールがインストールされていないため、xFirewallのインポートに失敗しました。

私はこの前に実行できる別のDSCスクリプトを作成することを考えましたが、一度に1つのVMに1つのDSC拡張を追加するだけでは困難です。

+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" 
     } 
    } 
} 

あなたのリソースグループの展開テンプレートにこれを取得するには、あなたはPowerShellのDSC拡張機能を追加したときに作成されたDSCフォルダの下にプロジェクトにxNetworking moduleをコピーする必要があります。次に、ここに示すようにxNetworkingフォルダーをプロジェクトに追加します。

enter image description here

次に、あなたの通常の展開過程を経ます。 DSC拡張機能が導入された今は、展開前にアーティファクトストレージアカウントを指定する必要があります。

enter image description here

Azureのリソースマネージャ(ARM)は、その後の拡張をプッシュすることができるように、プロジェクト内の展開-AzureResourceGroup.ps1スクリプトは、ストレージアカウントに今あなたのxNetworkingモジュールを含むDSC.zipをアップロードします仮想マシンにの後にがプロビジョニングされています。そこから、仮想マシンのDSCエンジンが引き継ぎ、設定を適用します。

+0

こんにちは@Rick Raineyさん、このモジュールを出力ディレクトリやAzure Storageにコピーしないでください。追加のステップが必要ですか? –

+0

昨年PowerShellスクリプトに変更が加えられたため、ローカルマシンにモジュールをインストールする必要があります。だから、プロジェクトのモジュールを手作業でパッケージ化する(私の意見ではこれが好きだった方法)スクリプトを変更するか、開発者用ボックスにモジュールをインストールするだけです。 PowerShellスクリプトを見ると、私が何を話しているのか分かります。 –

0

はその後Import-Module {FullPath}を使用することによって、私は、それはxNetworkingだと思う使用して、あなたはモジュールをインポートする必要があるDscResource、 ファーストの一環としてxFirewallモジュールを落としたと仮定すると、このarticle

でDSCリソースにを発見する方法を参照してください。続きを読むImport-DSCResource -ModuleName xNetworking -name xFirewall

またはImport-DSCResource -Name xFirewallを試してください、これはリソースフォルダ全体をスキャンし、あなたのためにxFirewallを見つけるように見えます。

関連する問題