Distribuera Cloud Services (utökat stöd) med hjälp av en ARM-mall
Den här artikeln visar hur du använder en Azure Resource Manager-mall (ARM-mall) för att skapa en Azure Cloud Services-distribution (utökad support).
Förutsättningar
Slutför följande steg som förutsättningar för att skapa distributionen med hjälp av ARM-mallar.
Granska distributionskraven för Cloud Services (utökad support) och skapa de resurser som krävs.
Skapa en ny resursgrupp med hjälp av Azure-portalen eller Azure PowerShell. Det här steget är valfritt om du använder en befintlig resursgrupp.
Skapa ett nytt lagringskonto med hjälp av Azure-portalen eller Azure PowerShell. Det här steget är valfritt om du använder ett befintligt lagringskonto.
Ladda upp paketfilen (.cspkg eller .zip) och konfigurationsfilen (.cscfg) till lagringskontot med hjälp av Azure-portalen eller Azure PowerShell. Spara SAS-URI:erna (signatur för delad åtkomst) för båda filerna som ska läggas till i ARM-mallen i ett senare steg.
(Valfritt) Skapa ett nyckelvalv och ladda upp certifikaten.
- Du kan bifoga certifikat till distributionen för säker kommunikation till och från tjänsten. Om du använder certifikat måste certifikatets tumavtryck anges i konfigurationsfilen (.cscfg) och laddas upp till ett nyckelvalv. Du kan skapa ett nyckelvalv med hjälp av Azure-portalen eller Azure PowerShell.
- Det associerade nyckelvalvet måste finnas i samma region och prenumeration som din Cloud Services-distribution (utökad support).
- Det associerade nyckelvalvet måste ha relevanta behörigheter så att Cloud Services-resurser (utökad support) kan hämta certifikat från nyckelvalvet. Mer information finns i Använda certifikat med Cloud Services (utökad support).
- Nyckelvalvet måste refereras till i
osProfile
avsnittet i ARM-mallen som du ser i ett senare steg.
Distribuera Cloud Services (utökad support)
Så här distribuerar du Cloud Services (utökad support) med hjälp av en mall:
Kommentar
Ett enklare och snabbare sätt att generera ARM-mallen och parameterfilen är att använda Azure-portalen. Du kan ladda ned den genererade ARM-mallen i portalen för att skapa dina Molntjänster (utökad support) via Azure PowerShell.
Skapa ett virtuellt nätverk. Namnet på det virtuella nätverket måste matcha referenser för virtuella nätverk i konfigurationsfilen (.cscfg). Om du använder ett befintligt virtuellt nätverk utelämnar du det här avsnittet från ARM-mallen.
"resources": [ { "apiVersion": "2019-08-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('vnetName')]", "location": "[parameters('location')]", "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "subnets": [ { "name": "WebTier", "properties": { "addressPrefix": "10.0.0.0/24" } } ] } } ]
Om du skapar ett nytt virtuellt nätverk lägger du till följande rader i
dependsOn
avsnittet för att säkerställa att plattformen skapar det virtuella nätverket innan den skapar Cloud Services-instansen (utökad support):"dependsOn": [ "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]" ]
Skapa en offentlig IP-adress och (valfritt) ange egenskapen DNS-etikett för den offentliga IP-adressen. Om du använder en statisk IP-adress måste du referera till den som en reserverad IP-adress i konfigurationsfilen (.cscfg). Om du använder en befintlig IP-adress hoppar du över det här steget och lägger till IP-adressinformationen direkt i konfigurationsinställningarna för lastbalanseraren i ARM-mallen.
"resources": [ { "apiVersion": "2019-08-01", "type": "Microsoft.Network/publicIPAddresses", "name": "[parameters('publicIPName')]", "location": "[parameters('location')]", "properties": { "publicIPAllocationMethod": "Dynamic", "idleTimeoutInMinutes": 10, "publicIPAddressVersion": "IPv4", "dnsSettings": { "domainNameLabel": "[variables('dnsName')]" } }, "sku": { "name": "Basic" } } ]
Om du skapar en ny IP-adress lägger du till följande rader i
dependsOn
avsnittet för att säkerställa att plattformen skapar IP-adressen innan den skapar Cloud Services-instansen (utökad support):"dependsOn": [ "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" ]
Skapa ett Cloud Services-objekt (utökat stöd). Lägg till relevanta
dependsOn
referenser om du distribuerar virtuella nätverk eller offentliga IP-adresser i mallen.{ "apiVersion": "2021-03-01", "type": "Microsoft.Compute/cloudServices", "name": "[variables('cloudServiceName')]", "location": "[parameters('location')]", "tags": { "DeploymentLabel": "[parameters('deploymentLabel')]", "DeployFromVisualStudio": "true" }, "dependsOn": [ "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]", "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" ], "properties": { "packageUrl": "[parameters('packageSasUri')]", "configurationUrl": "[parameters('configurationSasUri')]", "upgradeMode": "[parameters('upgradeMode')]" } }
Skapa ett nätverksprofilobjekt för distributionen och associera den offentliga IP-adressen med lastbalanserarens klientdel. Azure-plattformen skapar automatiskt en lastbalanserare.
"networkProfile": { "loadBalancerConfigurations": [ { "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/loadBalancers/', variables('lbName'))]", "name": "[variables('lbName')]", "properties": { "frontendIPConfigurations": [ { "name": "[variables('lbFEName')]", "properties": { "publicIPAddress": { "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" } } } ] } } ] }
Lägg till key vault-referensen
osProfile
i avsnittet i ARM-mallen. Ett nyckelvalv lagrar certifikat som är associerade med Cloud Services (utökad support). Lägg till certifikaten i nyckelvalvet och referera sedan till certifikatets tumavtryck i konfigurationsfilen (.cscfg). Ange även åtkomstprincipen för nyckelvalvet för Azure Virtual Machines för distribution i Azure-portalen så att Cloud Services-resursen (utökad support) kan hämta de certifikat som lagras som hemligheter i nyckelvalvet. Nyckelvalvet måste finnas i samma region och prenumeration som din Cloud Services-resurs (utökad support) och ha ett unikt namn. Mer information finns i Använda certifikat med Cloud Services (utökad support)."osProfile": { "secrets": [ { "sourceVault": { "id": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.KeyVault/vaults/{keyvault-name}" }, "vaultCertificates": [ { "certificateUrl": "https://{keyvault-name}.vault.azure.net:443/secrets/ContosoCertificate/{secret-id}" } ] } ] }
Kommentar
sourceVault
i ARM-mallen är värdet för resurs-ID:t för ditt nyckelvalv. Du kan hämta den här informationen genom att hitta resurs-ID i avsnittet Egenskaper i ditt nyckelvalv.- Du kan hämta värdet för
certificateUrl
genom att gå till certifikatet i nyckelvalvet med etiketten Hemlig identifierare. certificateUrl
ska vara i form avhttps://{keyvault-endpoint}/secrets/{secret-name}/{secret-id}
.
- Du kan hämta värdet för
Skapa en rollprofil. Kontrollera att antalet roller, antalet instanser i varje roll, rollnamn och rollstorlekar är desamma i konfigurationsfilen (.cscfg), definitionsfilen (.csdef) och
roleProfile
avsnittet i ARM-mallen."roleProfile": { "roles": { "value": [ { "name": "WebRole1", "sku": { "name": "Standard_D1_v2", "capacity": "1" } }, { "name": "WorkerRole1", "sku": { "name": "Standard_D1_v2", "capacity": "1" } } ] } }
(Valfritt) Skapa en tilläggsprofil för att lägga till tillägg till din Cloud Services-distribution (utökad support). Följande exempel lägger till RDP-tillägget (Remote Desktop Protocol) och Azure Diagnostics-tillägget.
Kommentar
Lösenordet för RDP måste innehålla mellan 8 och 123 tecken och måste uppfylla minst tre av följande krav på lösenordskomplexitet:
Innehåller ett versalt tecken.
Innehåller ett gemener.
Innehåller en numerisk siffra.
Innehåller ett specialtecken.
Det går inte att innehålla ett kontrolltecken."extensionProfile": { "extensions": [ { "name": "RDPExtension", "properties": { "autoUpgradeMinorVersion": true, "publisher": "Microsoft.Windows.Azure.Extensions", "type": "RDP", "typeHandlerVersion": "1.2.1", "settings": "<PublicConfig>\r\n <UserName>[Insert Username]</UserName>\r\n <Expiration>1/21/2022 12:00:00 AM</Expiration>\r\n</PublicConfig>", "protectedSettings": "<PrivateConfig>\r\n <Password>[Insert Password]</Password>\r\n</PrivateConfig>" } }, { "name": "Microsoft.Insights.VMDiagnosticsSettings_WebRole1", "properties": { "autoUpgradeMinorVersion": true, "publisher": "Microsoft.Azure.Diagnostics", "type": "PaaSDiagnostics", "typeHandlerVersion": "1.5", "settings": "[parameters('wadPublicConfig_WebRole1')]", "protectedSettings": "[parameters('wadPrivateConfig_WebRole1')]", "rolesAppliedTo": [ "WebRole1" ] } } ] }
Granska den fullständiga mallen:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "cloudServiceName": { "type": "string", "metadata": { "description": "Name of the cloud service" } }, "location": { "type": "string", "metadata": { "description": "Location of the cloud service" } }, "deploymentLabel": { "type": "string", "metadata": { "description": "Label of the deployment" } }, "packageSasUri": { "type": "securestring", "metadata": { "description": "SAS URI of the package (.cspkg) file to deploy" } }, "configurationSasUri": { "type": "securestring", "metadata": { "description": "SAS URI of the configuration (.cscfg) file" } }, "roles": { "type": "array", "metadata": { "description": "Roles created in the cloud service application" } }, "wadPublicConfig_WebRole1": { "type": "string", "metadata": { "description": "Public configuration of the Azure Diagnostics extension" } }, "wadPrivateConfig_WebRole1": { "type": "securestring", "metadata": { "description": "Private configuration of the Azure Diagnostics extension" } }, "vnetName": { "type": "string", "defaultValue": "[concat(parameters('cloudServiceName'), 'VNet')]", "metadata": { "description": "Name of vitual network" } }, "publicIPName": { "type": "string", "defaultValue": "contosocsIP", "metadata": { "description": "Name of public IP address" } }, "upgradeMode": { "type": "string", "defaultValue": "Auto", "metadata": { "UpgradeMode": "UpgradeMode of the CloudService" } } }, "variables": { "cloudServiceName": "[parameters('cloudServiceName')]", "subscriptionID": "[subscription().subscriptionId]", "dnsName": "[variables('cloudServiceName')]", "lbName": "[concat(variables('cloudServiceName'), 'LB')]", "lbFEName": "[concat(variables('cloudServiceName'), 'LBFE')]", "resourcePrefix": "[concat('/subscriptions/', variables('subscriptionID'), '/resourceGroups/', resourceGroup().name, '/providers/')]" }, "resources": [ { "apiVersion": "2019-08-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('vnetName')]", "location": "[parameters('location')]", "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "subnets": [ { "name": "WebTier", "properties": { "addressPrefix": "10.0.0.0/24" } } ] } }, { "apiVersion": "2019-08-01", "type": "Microsoft.Network/publicIPAddresses", "name": "[parameters('publicIPName')]", "location": "[parameters('location')]", "properties": { "publicIPAllocationMethod": "Dynamic", "idleTimeoutInMinutes": 10, "publicIPAddressVersion": "IPv4", "dnsSettings": { "domainNameLabel": "[variables('dnsName')]" } }, "sku": { "name": "Basic" } }, { "apiVersion": "2021-03-01", "type": "Microsoft.Compute/cloudServices", "name": "[variables('cloudServiceName')]", "location": "[parameters('location')]", "tags": { "DeploymentLabel": "[parameters('deploymentLabel')]", "DeployFromVisualStudio": "true" }, "dependsOn": [ "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]", "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" ], "properties": { "packageUrl": "[parameters('packageSasUri')]", "configurationUrl": "[parameters('configurationSasUri')]", "upgradeMode": "[parameters('upgradeMode')]", "roleProfile": { "roles": [ { "name": "WebRole1", "sku": { "name": "Standard_D1_v2", "capacity": "1" } }, { "name": "WorkerRole1", "sku": { "name": "Standard_D1_v2", "capacity": "1" } } ] }, "networkProfile": { "loadBalancerConfigurations": [ { "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/loadBalancers/', variables('lbName'))]", "name": "[variables('lbName')]", "properties": { "frontendIPConfigurations": [ { "name": "[variables('lbFEName')]", "properties": { "publicIPAddress": { "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" } } } ] } } ] }, "osProfile": { "secrets": [ { "sourceVault": { "id": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.KeyVault/vaults/{keyvault-name}" }, "vaultCertificates": [ { "certificateUrl": "https://{keyvault-name}.vault.azure.net:443/secrets/ContosoCertificate/{secret-id}" } ] } ] }, "extensionProfile": { "extensions": [ { "name": "RDPExtension", "properties": { "autoUpgradeMinorVersion": true, "publisher": "Microsoft.Windows.Azure.Extensions", "type": "RDP", "typeHandlerVersion": "1.2.1", "settings": "<PublicConfig>\r\n <UserName>[Insert Username]</UserName>\r\n <Expiration>1/21/2022 12:00:00 AM</Expiration>\r\n</PublicConfig>", "protectedSettings": "<PrivateConfig>\r\n <Password>[Insert Password]</Password>\r\n</PrivateConfig>" } }, { "name": "Microsoft.Insights.VMDiagnosticsSettings_WebRole1", "properties": { "autoUpgradeMinorVersion": true, "publisher": "Microsoft.Azure.Diagnostics", "type": "PaaSDiagnostics", "typeHandlerVersion": "1.5", "settings": "[parameters('wadPublicConfig_WebRole1')]", "protectedSettings": "[parameters('wadPrivateConfig_WebRole1')]", "rolesAppliedTo": [ "WebRole1" ] } } ] } } } ] }
Om du vill skapa distributionen av Cloud Services (utökat stöd) distribuerar du mall- och parameterfilen (för att definiera parametrar i mallfilen). Du kan använda dessa exempelmallar.
New-AzResourceGroupDeployment -ResourceGroupName "ContosOrg" -TemplateFile "file path to your template file" -TemplateParameterFile "file path to your parameter file"
Relaterat innehåll
- Granska vanliga frågor och svar om Cloud Services (utökad support).
- Distribuera Cloud Services (utökat stöd) med hjälp av Azure-portalen, Azure PowerShell eller Visual Studio.
- Besök lagringsplatsen för Cloud Services-exempel (utökad support).