Distribuera en molntjänst (utökat stöd) med hjälp av ARM-mallar
Den här självstudien förklarar hur du skapar en distribution av molntjänster (utökat stöd) med hjälp av ARM-mallar.
Innan du börjar
Granska distributionens krav för Cloud Services (utökad support) och skapa de associerade resurserna.
Skapa en ny resursgrupp med hjälp Azure Portal eller PowerShell. Det här steget är valfritt om du använder en befintlig resursgrupp.
Skapa ett nytt lagringskonto med hjälp Azure Portal eller PowerShell. Det här steget är valfritt om du använder ett befintligt lagringskonto.
Upload paketfilerna (.cspkg) och Tjänstkonfiguration (.cscfg) till lagringskontot med hjälp av Azure Portal, eller PowerShell. Hämta SAS-URI:er för båda filerna som ska läggas till i ARM-mallen senare i den här självstudien.
(Valfritt) Skapa ett nyckelvalv och ladda upp certifikaten.
- Certifikat kan kopplas till molntjänster för säker kommunikation till och från tjänsten. För att kunna använda certifikat måste tumavtrycken anges i din tjänstkonfigurationsfil (.cscfg) och överföras till ett nyckelvalv. Ett nyckelvalv kan skapas via Azure Portal eller PowerShell.
- Det associerade nyckelvalvet måste finnas i samma region och prenumeration som molntjänsten.
- Det associerade nyckelvalvet för måste aktiveras lämpliga behörigheter så att Cloud Services (utökat stöd) kan hämta certifikat från Key Vault. Mer information finns i Certifikat och Key Vault
- Du måste referera till nyckelvalvet i avsnittet OsProfile i ARM-mallen som visas i stegen nedan.
Distribuera en molntjänst (utökat stöd)
Anteckning
Ett enklare och snabbare sätt att generera ARM-mallen och parameterfilen är via Azure Portal. Du kan ladda ned den genererade ARM-mallen via portalen för att skapa din molntjänst via Powershell
Skapa ett virtuellt nätverk. Namnet på det virtuella nätverket måste matcha referenserna i tjänstkonfigurationsfilen (.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 i avsnittet för att säkerställa att plattformen skapar det virtuella nätverket
dependsOninnan du skapar molntjänsten."dependsOn": [ "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]" ]Skapa en offentlig IP-adress och (om du vill) 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 i servicekonfigurationsfilen (.cscfg). Om du använder en befintlig IP-adress hoppar du över det här steget och lägger till IP-adressinformationen direkt i lastbalanseringskonfigurationsinställningarna för 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 i avsnittet för att säkerställa att plattformen skapar
dependsOnIP-adressen innan du skapar molntjänsten."dependsOn": [ "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" ]Skapa ett molntjänstobjekt (utökat stöd) och lägg till lämpliga referenser om du
dependsOndistribuerar virtuella nätverk eller offentlig IP-adress 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 din molntjänst och associera den offentliga IP-adressen med lastbalanseringsleverantörens frontend. En lastbalanserare skapas automatiskt av plattformen.
"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 din nyckelvalvsreferens
OsProfilei avsnittet i ARM-mallen. Key Vault används för att lagra certifikat som är associerade med Cloud Services (utökat stöd). Lägg till certifikaten i Key Vault och referera sedan till certifikatets tumavtryck i servicekonfigurationsfilen (.cscfg). Du måste också aktivera Key Vault "Åtkomstprinciper" för "Azure Virtual Machines for deployment" (på portalen) så att Cloud Services-resursen (utökat stöd) kan hämta certifikat som lagras som hemligheter från Key Vault. Nyckelvalvet måste finnas i samma region och prenumeration som molntjänsten och ha ett unikt namn. Mer information finns i använda certifikat med Cloud Services (utökat stöd)."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}" } ] } ] }Anteckning
SourceVault är ARM-resurs-ID:t för ditt nyckelvalv. Du hittar den här informationen genom att leta upp resurs-ID:t i avsnittet Egenskaper för nyckelvalvet.
- du hittar certificateUrl genom att navigera till certifikatet i nyckelvalvet märkt som Secret Identifier (Hemlig identifierare).
- certificateUrl ska vara i https://{keyvault-endpoin}/secrets/{secretname}/{secret-id}
Skapa en rollprofil. Kontrollera att antalet roller, rollnamn, antal instanser i varje roll och storlek är samma i avsnittet Tjänstkonfiguration (.cscfg), Tjänstdefinition (.csdef) och rollprofil 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 i molntjänsten. I det här exemplet lägger vi till fjärrskrivbordet och Windows Azure Diagnostics-tillägget.
Anteckning
Lösenordet för fjärrskrivbordet måste vara mellan 8 och 123 tecken långt och måste uppfylla minst tre av kraven på lösenordskomplexitet från följande: 1) Innehåller ett versaler 2) Innehåller ett gemener 3) Innehåller en numerisk siffra 4) Innehåller ett specialtecken 5) Kontrolltecken tillåts inte
"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 CSPKG file to deploy" } }, "configurationSasUri": { "type": "securestring", "metadata": { "description": "SAS Uri of the service configuration (.cscfg)" } }, "roles": { "type": "array", "metadata": { "description": "Roles created in the cloud service application" } }, "wadPublicConfig_WebRole1": { "type": "string", "metadata": { "description": "Public configuration of Windows Azure Diagnostics extension" } }, "wadPrivateConfig_WebRole1": { "type": "securestring", "metadata": { "description": "Private configuration of Windows 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" ] } } ] } } } ] }Distribuera mallen och parameterfilen (definiera parametrar i mallfilen) för att skapa molntjänstdistributionen (utökat stöd). Se dessa exempelmallar efter behov.
New-AzResourceGroupDeployment -ResourceGroupName "ContosOrg" -TemplateFile "file path to your template file" -TemplateParameterFile "file path to your parameter file"
Nästa steg
- Läs vanliga frågor och svar om Cloud Services (utökad support).
- Distribuera en molntjänst (utökat stöd) med hjälp Azure Portal, PowerShell, Mall eller Visual Studio.
- Besök lagringsplatsen Cloud Services exempel (utökad support)