Distribuera en molntjänst (utökat stöd) med Azure PowerShell
Den här artikeln visar hur du använder PowerShell-modulen för att distribuera Cloud Services (utökat stöd) i Azure som har flera roller Az.CloudService (WebRole och WorkerRole).
Förutsättningar
Granska distributionsförutsättningarna för Cloud Services (utökat stöd) och skapa de associerade resurserna.
Installera Az.CloudService PowerShell-modulen.
Install-Module -Name Az.CloudServiceSkapa en ny resursgrupp. Det här steget är valfritt om du använder en befintlig resursgrupp.
New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US”Skapa ett lagringskonto och en container som ska användas för att lagra filerna Cloud Service Package (.cspkg) och Service Configuration (.cscfg). Ett unikt namn för lagringskontots namn krävs. Det här steget är valfritt om du använder ett befintligt lagringskonto.
$storageAccount = New-AzStorageAccount -ResourceGroupName “ContosOrg” -Name “contosostorageaccount” -Location “East US” -SkuName “Standard_RAGRS” -Kind “StorageV2” $container = New-AzStorageContainer -Name “contosocontainer” -Context $storageAccount.Context -Permission Blob
Distribuera en Cloud Services (utökat stöd)
Använd någon av följande PowerShell-cmdlets för att distribuera Cloud Services (utökat stöd):
Snabb skapa molntjänst med ett Storage konto
- Den här parameteruppsättningen matar in .cscfg-, .cspkg- och .csdef-filerna som indata tillsammans med lagringskontot.
- Molntjänstrollprofilen, nätverksprofilen och OS-profilen skapas av cmdleten med minimala indata från användaren.
- För certifikatindata ska nyckelvalvsnamnet anges. Certifikatets tumavtryck i nyckelvalvet verifieras mot de som anges i .cscfg-filen.
Snabb skapa molntjänst med hjälp av en SAS-URI
- Den här parameteruppsättningen matar in SAS-URI för .cspkg tillsammans med de lokala sökvägarna för .csdef- och .cscfg-filer. Det krävs inga indata för lagringskontot.
- Molntjänstrollprofilen, nätverksprofilen och OS-profilen skapas av cmdleten med minimala indata från användaren.
- För certifikatindata ska nyckelvalvsnamnet anges. Certifikatets tumavtryck i nyckelvalvet verifieras mot de som anges i .cscfg-filen.
Skapa molntjänst med roll-, os-, nätverks- och tilläggsprofil och SAS-URI:er
- Den här parameteruppsättningen matar in SAS-URI:er för .cscfg- och .cspkg-filerna.
- Rollen, nätverket, operativsystemet och tilläggsprofilen måste anges av användaren och måste matcha värdena i .cscfg och .csdef.
Snabb skapa molntjänst med ett Storage konto
Skapa Cloud Service-distribution med hjälp av .cscfg-, .csdef- och .cspkg-filer.
$cspkgFilePath = "<Path to cspkg file>"
$cscfgFilePath = "<Path to cscfg file>"
$csdefFilePath = "<Path to csdef file>"
# Create Cloud Service
New-AzCloudService
-Name "ContosoCS" `
-ResourceGroupName "ContosOrg" `
-Location "EastUS" `
-ConfigurationFile $cscfgFilePath `
-DefinitionFile $csdefFilePath `
-PackageFile $cspkgFilePath `
-StorageAccount $storageAccount `
[-KeyVaultName <string>]
Snabb skapa molntjänst med hjälp av en SAS-URI
Upload cloud service package (cspkg) till lagringskontot.
$tokenStartTime = Get-Date $tokenEndTime = $tokenStartTime.AddYears(1) $cspkgBlob = Set-AzStorageBlobContent -File “./ContosoApp/ContosoApp.cspkg” -Container “contosocontainer” -Blob “ContosoApp.cspkg” -Context $storageAccount.Context $cspkgToken = New-AzStorageBlobSASToken -Container “contosocontainer” -Blob $cspkgBlob.Name -Permission rwd -StartTime $tokenStartTime -ExpiryTime $tokenEndTime -Context $storageAccount.Context $cspkgUrl = $cspkgBlob.ICloudBlob.Uri.AbsoluteUri + $cspkgToken $cscfgFilePath = "<Path to cscfg file>" $csdefFilePath = "<Path to csdef file>"Skapa Cloud Service-distribution med hjälp av .cscfg, .csdef och .cspkg SAS URI.
New-AzCloudService -Name "ContosoCS" ` -ResourceGroupName "ContosOrg" ` -Location "EastUS" ` -ConfigurationFile $cspkgFilePath ` -DefinitionFile $csdefFilePath ` -PackageURL $cspkgUrl ` [-KeyVaultName <string>]
Skapa molntjänst med hjälp av profilobjekt & SAS-URI:er
Upload din molntjänstkonfiguration (cscfg) till lagringskontot.
$cscfgBlob = Set-AzStorageBlobContent -File “./ContosoApp/ContosoApp.cscfg” -Container contosocontainer -Blob “ContosoApp.cscfg” -Context $storageAccount.Context $cscfgToken = New-AzStorageBlobSASToken -Container “contosocontainer” -Blob $cscfgBlob.Name -Permission rwd -StartTime $tokenStartTime -ExpiryTime $tokenEndTime -Context $storageAccount.Context $cscfgUrl = $cscfgBlob.ICloudBlob.Uri.AbsoluteUri + $cscfgTokenUpload cloud service package (cspkg) till lagringskontot.
$tokenStartTime = Get-Date $tokenEndTime = $tokenStartTime.AddYears(1) $cspkgBlob = Set-AzStorageBlobContent -File “./ContosoApp/ContosoApp.cspkg” -Container “contosocontainer” -Blob “ContosoApp.cspkg” -Context $storageAccount.Context $cspkgToken = New-AzStorageBlobSASToken -Container “contosocontainer” -Blob $cspkgBlob.Name -Permission rwd -StartTime $tokenStartTime -ExpiryTime $tokenEndTime -Context $storageAccount.Context $cspkgUrl = $cspkgBlob.ICloudBlob.Uri.AbsoluteUri + $cspkgTokenSkapa ett virtuellt nätverk och ett undernät. Det här steget är valfritt om du använder ett befintligt nätverk och undernät. I det här exemplet används ett enda virtuellt nätverk och undernät för både molntjänstroller (WebRole och WorkerRole).
$subnet = New-AzVirtualNetworkSubnetConfig -Name "ContosoWebTier1" -AddressPrefix "10.0.0.0/24" -WarningAction SilentlyContinue $virtualNetwork = New-AzVirtualNetwork -Name “ContosoVNet” -Location “East US” -ResourceGroupName “ContosOrg” -AddressPrefix "10.0.0.0/24" -Subnet $subnetSkapa en offentlig IP-adress och ange egenskapen DNS-etikett för den offentliga IP-adressen. Cloud Services (utökat stöd) stöder endast offentliga IP-adresser för Basic SKU. Offentliga IP-adresser för standard-SKU fungerar inte med Cloud Services. Om du använder en statisk IP-adress måste du referera till den som en Reserverad IP i servicekonfigurationsfilen (.cscfg).
$publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku BasicSkapa ett nätverksprofilobjekt och associera den offentliga IP-adressen med lastbalanserasens frontend. Azure-plattformen skapar automatiskt en "klassisk" SKU-lastbalanseringsresurs i samma prenumeration som molntjänstresursen. Lastbalanseringsresursen är en skrivskyddade resurs i Azure Resource Manager. Uppdateringar av resursen stöds endast via molntjänstdistributionsfilerna (.cscfg & .csdef).
$publicIP = Get-AzPublicIpAddress -ResourceGroupName ContosOrg -Name ContosIp $feIpConfig = New-AzCloudServiceLoadBalancerFrontendIPConfigurationObject -Name 'ContosoFe' -PublicIPAddressId $publicIP.Id $loadBalancerConfig = New-AzCloudServiceLoadBalancerConfigurationObject -Name 'ContosoLB' -FrontendIPConfiguration $feIpConfig $networkProfile = @{loadBalancerConfiguration = $loadBalancerConfig}Skapa ett nyckelvalv. Den Key Vault används för att lagra certifikat som är associerade med rollerna för molntjänst (utökat stöd). Den Key Vault måste finnas i samma region och prenumeration som molntjänsten och ha ett unikt namn. Mer information finns i Använda certifikat med Azure Cloud Services (utökat stöd).
New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US”Uppdatera Key Vault åtkomstprincip och bevilja certifikatbehörigheter till ditt användarkonto.
Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -EnabledForDeployment Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -UserPrincipalName 'user@domain.com' -PermissionsToCertificates create,get,list,deleteDu kan också ange åtkomstprincip via ObjectId (som kan hämtas genom att köra
Get-AzADUser).Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,deleteI det här exemplet ska vi lägga till ett själv signerat certifikat i en Key Vault. Certifikatets tumavtryck måste läggas till i Cloud Service Configuration-filen (.cscfg) för distribution i molntjänstroller.
$Policy = New-AzKeyVaultCertificatePolicy -SecretContentType "application/x-pkcs12" -SubjectName "CN=contoso.com" -IssuerName "Self" -ValidityInMonths 6 -ReuseKeyOnRenewal Add-AzKeyVaultCertificate -VaultName "ContosKeyVault" -Name "ContosCert" -CertificatePolicy $PolicySkapa ett objekt i minnet för en OS-profil. Os-profil anger de certifikat som är associerade med molntjänstroller. Det här är samma certifikat som skapades i föregående steg.
$keyVault = Get-AzKeyVault -ResourceGroupName ContosOrg -VaultName ContosKeyVault $certificate = Get-AzKeyVaultCertificate -VaultName ContosKeyVault -Name ContosCert $secretGroup = New-AzCloudServiceVaultSecretGroupObject -Id $keyVault.ResourceId -CertificateUrl $certificate.SecretId $osProfile = @{secret = @($secretGroup)}Skapa ett objekt i minnet för en rollprofil. Rollprofilen definierar en roll-SKU-specifika egenskaper som namn, kapacitet och nivå. I det här exemplet har vi definierat två roller: frontendRole och backendRole. Rollprofilinformationen ska matcha rollkonfigurationen som definierats i konfigurationsfilen (cscfg) och tjänstdefinitionsfilen (csdef).
$frontendRole = New-AzCloudServiceRoleProfilePropertiesObject -Name 'ContosoFrontend' -SkuName 'Standard_D1_v2' -SkuTier 'Standard' -SkuCapacity 2 $backendRole = New-AzCloudServiceRoleProfilePropertiesObject -Name 'ContosoBackend' -SkuName 'Standard_D1_v2' -SkuTier 'Standard' -SkuCapacity 2 $roleProfile = @{role = @($frontendRole, $backendRole)}(Valfritt) Skapa ett tilläggsprofilobjekt i minnet som du vill lägga till i molntjänsten. I det här exemplet lägger vi till RDP-tillägget.
$credential = Get-Credential $expiration = (Get-Date).AddYears(1) $rdpExtension = New-AzCloudServiceRemoteDesktopExtensionObject -Name 'RDPExtension' -Credential $credential -Expiration $expiration -TypeHandlerVersion '1.2.1' $storageAccountKey = Get-AzStorageAccountKey -ResourceGroupName "ContosOrg" -Name "contosostorageaccount" $configFile = "<WAD public configuration file path>" $wadExtension = New-AzCloudServiceDiagnosticsExtension -Name "WADExtension" -ResourceGroupName "ContosOrg" -CloudServiceName "ContosCS" -StorageAccountName "contosostorageaccount" -StorageAccountKey $storageAccountKey[0].Value -DiagnosticsConfigurationPath $configFile -TypeHandlerVersion "1.5" -AutoUpgradeMinorVersion $true $extensionProfile = @{extension = @($rdpExtension, $wadExtension)}ConfigFile bör endast ha PublicConfig-taggar och bör innehålla ett namnområde enligt följande:
<?xml version="1.0" encoding="utf-8"?> <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"> ............... </PublicConfig>(Valfritt) Definiera Taggar som PowerShell-hashtabell som du vill lägga till i molntjänsten.
$tag=@{"Owner" = "Contoso"}Skapa molntjänstdistribution med hjälp av profilobjekt & SAS-URL:er.
$cloudService = New-AzCloudService ` -Name “ContosoCS” ` -ResourceGroupName “ContosOrg” ` -Location “East US” ` -PackageUrl $cspkgUrl ` -ConfigurationUrl $cscfgUrl ` -UpgradeMode 'Auto' ` -RoleProfile $roleProfile ` -NetworkProfile $networkProfile ` -ExtensionProfile $extensionProfile ` -OSProfile $osProfile ` -Tag $tag
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ökat stöd).