2017-11-07 16 views
0

VMを設定し、最終設定のためにAzure DSC Automationサーバーに追加するネストされたARMテンプレートを作成しました。このセットアップは、セットアップを次のようにGitのリソースプルサーバーを利用:ARMテンプレートDSC(またはDSCでない)を使用してコンピュータ記述を設定

https://github.com/Azure/azure-quickstart-templates/tree/master/dsc-extension-azure-automation-pullserver

このソースは、プルサーバは、登録キーであるところのためにVMを設定するには、ARMテンプレート内DSC拡張子を使用する設定、およびそのDSC Node Configurationを適用します。ここでは、マシンを構成するためのすべてがあります。私のDSC構成の

一部が更新されるマシン記述が必要です。

Registry ChangeDescription 
{ 
    Ensure = "Present" 
    Key = "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" 
    ValueName = "srvcomment" 
    ValueData = "my-super-awesome-computer-description" 
    ValueType = "String" 
} 

私は、エンドユーザーがコンピュータに入力したDSCの構成にパラメータを渡すために、私のARMテンプレートの能力を持つようにしたいですARMデプロイメント時の説明(私はAzureテンプレートデプロイメントを人々が使用するための「ストック」イメージとして使用する予定です)。

Azureのテンプレート:https://portal.azure.com/#blade/HubsExtension/Resources/resourceType/Microsoft.Gallery%2Fmyareas%2Fgalleryitems

ARMパラメータ:

"computerDescription": { 
    "type": "string", 
    "metadata": { 
    "description": "The description name of the VM." 
    } 
}, 

Microsoft.Compute/virtualMachines /拡張性:

{ 
     "Name": "computerDescription", 
     "Value": "[parameters('computerDescription')]", 
     "TypeName": "System.String" 
    } 

DSC:

Registry ChangeDescription 
{ 
    Ensure = "Present" 
    Key = "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" 
    ValueName = "srvcomment" 
    ValueData = $ComputerDescription 
    ValueType = "String" 
} 

Gitのソースからは、DSCファイルにパラメータを渡すことができますが、マシンがどのように設定されるのかはわかりますが、DSCのマシンを実際に設定する.ps1スクリプトに渡すことしかできません。したがって、私のノード構成がセットアップを完了する次の段階にどのようにパラメータを渡すことができないのか分かりません。

私はDSCポイントでセットアップする必要はありません。どのようにして知っていたのか、誰か他の人が知っているかも知れば、テンプレートを使って行うことができますか?基本的には一度設定するだけです。

どのようなアイデアですか?

EDIT for 4c74356b41質問です。

パラメータcomputerDescriptioncommandToExecuteの文字列として使用する方法がまだわかりません。これは私が思いついたPSスクリプトですが、その文字列をPSの変数にする方法は実際にはありません。

Param ([string] $psVariable) 
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\" -Name "srvcomment" -Value $psVariable -PropertyType String 

そして、これは私がそこにcomputerDescriptionパラメータを入れてどこか分からない

"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File ', variables('asdfcseScriptFolder'), '/', variables('asdfcseScriptFileName'))]" 

を持っているcommandToExecuteですか...?

+0

あなたは本当に別の質問を提起すべきですが、 [this]を見てください(https://social.msdn.microsoft.com/Forums/en-US/41c1027e-bc5d-4de8-a663-45aa84357728/pass-parameters-to-custom-script-extension-script-using)。 -arm-templates?forum = WAVirtualMachinesforWindows) – 4c74356b41

+0

またはhttps://www.reddit.com/r/AZURE/comments/4r2k40/trouble_with_custom_script_extension_and_arm/ – 4c74356b41

答えて

1

DSC拡張機能を既にAzure Automationに搭載している場合は、変更したくない事前定義済みの設定があります。あなたのケースでは、私はそれがはるかに簡単に、このレジストリ値を設定するには、スクリプトの拡張子と単純なpowershell 1ライナーを使用すると言うでしょう腕のテンプレートを使用して簡単にパラメータ化することができます

+0

2倍の拡張機能で問題が発生していると聞いています。これまでにカスタムスクリプト拡張機能(単純なPowerShell 1のライナー用)とPowerShell DSC拡張機能の両方を使用している問題に遭遇したことはありますか? – Beefcake

+0

ではありません。 'dependson'プロパティを設定していることを確認してください。もう一つの拡張子がもう一方の文字列を待つようにしてください。 – 4c74356b41

+0

初心者の質問にもう一度おねがいしますが、そのパラメータをPowerShell CSEに変数として渡す方法がわかりません。私はDSCのためにそれを行う方法を見ることができます(上記の例のように)。 – Beefcake

関連する問題