2016-04-25 16 views
0

Classic Portalを使用していて、10.0.0.0/16のVnet "RGVnet"が設定されています サブネット: - 10.0.0.0/24が設定されています。既存のVnetにサブネットを作成するには

Get-AzureVNetConfig -ExportToFile c:\NetworkConfig.xmlを使用せずに同じVnetに新しいサブネットを追加したいとします。

RM Vnetで追加するような従来のポータルでサブネットを追加する方法はありますか?

あなたの援助を感謝します。 :)

答えて

1

あなたはvnetのサブネットを作成するExportToFileする必要はありません。

New-AzureRmVirtualNetwork -ResourceGroupName TestRG -Name RGVnet` 
    -AddressPrefix 10.0.0.0/16 -Location centralus 
$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName TestRG -Name TestVNet 
Add-AzureRmVirtualNetworkSubnetConfig -Name FrontEnd ` 
    -VirtualNetwork $vnet -AddressPrefix 10.0.0.0/24 
Add-AzureRmVirtualNetworkSubnetConfig -Name BackEnd ` 
    -VirtualNetwork $vnet -AddressPrefix 10.0.1.0/24 
Set-AzureRmVirtualNetwork -VirtualNetwork $vnet 

最後のステップは、設定を適用します。

MSDN virtual-networks-create-vnet-arm-ps

+0

こんにちはピーター、 私は上記のコマンドは、リソースマネージャの展開であり、クラシックではないと思います。 –

+0

はい、あなたの質問を読んでいます。指摘してくれてありがとう。 – Peter

+0

問題はありませんPeter :) ありがとうございました。 –

1

古典vNetにサブネットを追加しますそのような簡単なPowerShellのコマンドはありません。 Microsoft/ClassicNetworkとMicrosoft/Networkの両方のARM REST APIをチェックすると、Resource Managerモデルでは、「サブネット」はVnetのリソースとして、またVnetのプロパティとして管理されています。一方、従来のモデルでは、サブネット "はVnetの単なるプロパティです。

"サブネット"はVnetのクラシックモデルの単なるプロパティで、 "サブネット"はオブジェクトの配列なので、 "サブネット"を更新するためには常に少なくとも2つの要求が必要です。 1つは古いサブネットを取得し、もう1つは新しいサブネットを古いサブネットに追加した後にサブネットを配置することです。

ただし、純粋なAzure PowerShellの代わりにREST APIを使用すると、xmlファイルをまったくエクスポートする必要はありません。ここに私が書いたスクリプトがあります。

# Adding the AD library to your PowerShell Session. 
Add-Type -Path 'C:\Program Files\Microsoft Azure Active Directory Connect\Microsoft.IdentityModel.Clients.ActiveDirectory.dll' 

# This is the tenant name of you subscription. You can use tenant id instead if you want. 
$tenantName = "<you tenant name>" 
$authString = "https://login.windows.net/" + $tenantName 

# Create a authentication context with the above authentication string. 
$authenticationContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext ($authString, $false) 

# Client Id and key of your AD application. You can create an AD application through Azure 
# Portal or PowerShell. 
$clientId = "<the client id of your AD application>" 
$key = "<the key of your AD application>" 

# Create a client credential with the above client id and key. 
$clientCred = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential ($clientId, $key) 

# The resource URI for your token. If you are using ARM, "https://management.azure.com/" 
# is good too. 
$resource = "https://management.core.windows.net/" 

# Acquire access token from server. 
$authenticationResult = $authenticationContext.AcquireToken($resource, $clientCred); 

# Use the access token to setup headers for your http request. 
$authHeader = $authenticationResult.AccessTokenType + " " + $authenticationResult.AccessToken 
$headers = @{"Authorization"=$authHeader; "Content-Type"="application/json"} 

# Send a request to get the Vnet you want to update. 
$vnet = Invoke-RestMethod -Method GET -Uri "https://management.azure.com/subscriptions/<your subscription id>/resourceGroups/Default-Networking/providers/Microsoft.ClassicNetwork/virtualNetworks/<your vnet>?api-version=2016-04-01" -Headers $headers 

# Create a new subnet from a Json string. and add it to the subnets of your Vnet. 
$newSubnet = ConvertFrom-Json '{"name": "newSubnet","addressPrefix": "10.34.0.0/29"}' 
$vnet.properties.subnets += $newSubnet 

# Convert the Vnet object into a Json string. This will be used as request body in the second http request. 
$body = ConvertTo-Json $vnet -Depth 3 

# Send another http request to update your Vnet. 
Invoke-RestMethod -Method PUT -Uri "https://management.azure.com/subscriptions/<your subscription id>/resourceGroups/Default-Networking/providers/Microsoft.ClassicNetwork/virtualNetworks/<your vnet>?api-version=2016-04-01" -Headers $headers -Body $body 

注:私のスクリプトを使用するために、あなたがサービスプリンシパルを作成するためにthis tutorialに従う必要があります。

関連する問題