2017-03-14 4 views
0

私はARMのテンプレートを使用してVMSSを導入しました。ARM - VMSSのプライベートIPを取得する

最初のVMのIPアドレスをoutputに追加します。 Azureのリソースエクスプローラで

- 私は、リソースを参照してください。だから私はvariablesに追加しようとしました

... 
     "ipConfigurations": [ 
      { 
      "name": "jm-website-script-4-master-ip", 
      "id": "/subscriptions/0a4f2b9c-***-40b17ef8c3ab/resourceGroups/jm-website-script-4/providers/Microsoft.Compute/virtualMachineScaleSets/jm-website-script-4-master-vmss/virtualMachines/1/networkInterfaces/jm-website-script-4-master-nic/ipConfigurations/jm-website-script-4-master-ip", 
      "etag": "W/\"09be80d2-76f5-49fc-ad47-0ef836a3799a\"", 
      "properties": { 
       "provisioningState": "Succeeded", 
       "privateIPAddress": "10.0.0.5", 
... 

:その後、

"masterVM": "[concat('Microsoft.Compute/virtualMachineScaleSets/jm-website-script-4-master-vmss/virtualMachines/1/networkInterfaces/jm-website-script-4-master-nic/ipConfigurations/jm-website-script-4-master-ip')]", 

そして出力に呼び出す:

"outputs": { 
    "MasterFirstIPConfig": { 
     "type": "string", 
     "value": "[reference(variables('masterVM').properties.privateIPAddress)]" 
    } 
    } 

私にエラーが返されます:

The language expression property 'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Expression.Expressions.JTokenExpression' can't be evaluated..

私のmasterVM変数定義は完全に間違っていると思いますが、それを得ることはできません。

UPD

おかげ4c74356b41によって答えのためのソリューション。

ソリューションは、次のようになります。

変数定義:

"masterVM": "Microsoft.Compute/virtualMachineScaleSets/jm-website-script-4-master-vmss/virtualMachines/1/networkInterfaces/jm-website-script-4-master-nic" 

出力:

"outputs": { 
    "MasterFirstIPConfig": { 
    "type": "string", 
    "value": "[reference(variables('masterVM'),'2016-09-01').ipConfigurations[0].properties.privateIPAddress]" 
    } 
} 
+0

わからないような参照:、あなたも適切にそれを参照する必要があなたは、ネットワークインタフェースをターゲットにする必要があります(そして、あなたは、この場合には、CONCATする必要はありません)これは、Azure Resource Explorerの場合、(たとえそれがVMSS名前空間にあるとしても)ネットワークインターフェイス情報を返すネットワークリソースプロバイダへの呼び出しだからですが、変数定義はComputeスタックを経由しています。 外部からIPアドレスを取得することができます。 ...(取得-AzureRmNetworkInterface -VirtualMachineScaleSetName $ VMSSName -ResourceGroupName $ RG -VirtualMachineIndex 0).IpConfigurationsのようなPowerShellを使用し、[0] .PrivateIpAddress はのために使用されている出力は何ですか?たぶん、必要なものを手に入れる別の方法があります。 – sendmarsh

+0

@sendmarshご意見ありがとうございます。 Docker Swarmの初期化プロセス(参加者)にIPを使用する必要があります。だから私はマスターのIPをARMの変数に入れて、それを 'CustomScript'拡張の' bash'スクリプトに渡そうとしています。 Azure CLIでIPを取得する方法を見つけようとしましたが、まもなくいいことはありません。 – setevoy

答えて

1

さて、あなたは間違ったリソースをターゲットにしています。

"masterVM": "Microsoft.Compute/virtualMachineScaleSets/jm-website-script-4-master-vmss/virtualMachines/1/networkInterfaces/jm-website-script-4-master-nic]" 

をそして、あなたが行うことができますので、

"value": "[reference(variables('masterVM'),'2016-09-01').ipConfigurations[0].properties.privateIPAddress]" 
関連する問題