Distribuera en molntjänst (utökad support) med Hjälp av Azure PowerShell
Den här artikeln visar hur du använder Az.CloudService
PowerShell-modulen för att distribuera Cloud Services (utökad support) i Azure som har flera roller (WebRole och WorkerRole).
Förutsättningar
Granska distributionskraven för Cloud Services (utökad support) och skapa de associerade resurserna.
Installera Az.CloudService PowerShell-modulen.
Install-Module -Name Az.CloudService
Skapa 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 cloud service-paketfilerna (.cspkg) och Service Configuration (.cscfg). Ett unikt namn för lagringskontonamnet 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ökad support)
Använd någon av följande PowerShell-cmdletar för att distribuera Cloud Services (utökad support):
Snabbskapa molntjänst med ett lagringskonto
- Den här parameteruppsättningen anger .cscfg-, .cspkg- och .csdef-filerna som indata tillsammans med lagringskontot.
- Rollprofilen för molntjänsten, nätverksprofilen och OS-profilen skapas av cmdleten med minimala indata från användaren.
- För certifikatindata ska keyvault-namnet anges. Certifikatets tumavtryck i keyvault verifieras mot dem som anges i .cscfg-filen.
Snabbskapa molntjänst med hjälp av en SAS-URI
- Den här parameteruppsättningen matar in SAS-URI:n för .cspkg tillsammans med de lokala sökvägarna för .csdef- och .cscfg-filer. Det krävs inga indata för lagringskontot.
- Rollprofilen för molntjänsten, nätverksprofilen och OS-profilen skapas av cmdleten med minimala indata från användaren.
- För certifikatindata ska keyvault-namnet anges. Certifikatets tumavtryck i keyvault verifieras mot dem 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 anger 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.
Snabbskapa molntjänst med ett lagringskonto
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>]
Snabbskapa molntjänst med hjälp av en SAS-URI
Ladda upp ditt Cloud Service-paket (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 profilobjekt och SAS-URI:er
Ladda upp molntjänstkonfigurationen (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 + $cscfgToken
Ladda upp ditt Cloud Service-paket (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
Skapa 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åda molntjänstrollerna (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 $subnet
Skapa 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 grundläggande 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-adress i tjänstkonfigurationsfilen (.cscfg).
$publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic
Skapa ett nätverksprofilobjekt och associera den offentliga IP-adressen till lastbalanserarens klientdel. Azure-plattformen skapar automatiskt en "klassisk" SKU-lastbalanserare i samma prenumeration som molntjänstresursen. Lastbalanserarens resurs är en skrivskyddad resurs i Azure Resource Manager. Alla 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. Det här Nyckelvalvet används för att lagra certifikat som är associerade med cloud service-rollerna (utökad support). 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ökad support).
New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US”
Uppdatera åtkomstprincipen för Key Vault 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,delete
Alternativt kan du 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,delete
I det här exemplet lägger vi till ett självsignerat certifikat i ett Key Vault. Certifikatets tumavtryck måste läggas till i cloud service-konfigurationsfilen (.cscfg) för distribution på 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 $Policy
Skapa ett minnesinternt os-profilobjekt. OS-profilen anger certifikaten, 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 minnesinternt rollprofilobjekt. Rollprofil definierar en roll-SKU-specifika egenskaper, till exempel namn, kapacitet och nivå. I det här exemplet har vi definierat två roller: frontendRole och backendRole. Information om rollprofilen 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 minnesinternt tilläggsprofilobjekt 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 och 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
- Granska vanliga frågor och svar om Cloud Services (utökad support).
- Distribuera en molntjänst (utökad support) med hjälp av Azure-portalen, PowerShell, mallen eller Visual Studio.
- Besök lagringsplatsen för Cloud Services-exempel (utökad support).