Den här artikeln visar hur du använder Azure PowerShell-modulen Az.CloudService för att skapa en Azure Cloud Services-distribution (utökad support) som har flera roller (WebRole och WorkerRole).
Slutför följande steg som förutsättningar för att skapa distributionen med hjälp av Azure PowerShell.
Om du vill distribuera Cloud Services (utökad support) använder du något av följande PowerShell-cmdlet-alternativ:
Skapa en Cloud Services-distribution (utökad support) med hjälp av paketfilen (.cspkg eller .zip), konfigurationsfilen (.cscfg) och definitionsfilerna (.csdef):
Ladda upp konfigurationsfilen för Cloud Services (utökad support) (.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 din Cloud Services-paketfil (utökad support) (.cspkg eller .zip) 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åde Cloud Services-roller (utökad support) (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 ett DNS-etikettvärde för den offentliga IP-adressen. Cloud Services (utökat stöd) stöder endast en offentlig IP-adress för grundläggande SKU. Offentliga IP-adresser för standard-SKU fungerar inte med Cloud Services (utökad support).
Om du använder en statisk IP-adress måste du referera till den som en reserverad IP-adress i konfigurationsfilen (.cscfg) för distributionen.
$publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic
Skapa ett nätverksprofilobjekt och associera sedan den offentliga IP-adressen till lastbalanserarens klientdel. Azure-plattformen skapar automatiskt en klassisk SKU-lastbalanserare i samma prenumeration som cloud services-resursen (utökad support). Lastbalanseraren är en skrivskyddad resurs i Azure Resource Manager. Du kan endast uppdatera resurser via cloud services-konfigurationsfilen (.cscfg) och distributionsfilen (.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. Nyckelvalvet lagrar certifikat som är associerade med Cloud Services-roller (utökad support). Nyckelvalvet måste finnas i samma region och prenumeration som cloud services-distributionen (utökad support) och ha ett unikt namn. Mer information finns i Använda certifikat med Cloud Services (utökad support).
New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US”
Uppdatera åtkomstprincipen för nyckelvalvet 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
Du kan också ange åtkomstprincipen med hjälp ObjectId
av värdet. Hämta värdet genom att ObjectId
köra Get-AzADUser
:
Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete
I följande exempel läggs ett självsignerat certifikat till i ett nyckelvalv. Du måste lägga till certifikatets tumavtryck via konfigurationsfilen (.cscfg) för Cloud Services-roller (utökad support).
$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 en OS-profil minnesinternt objekt. En OS-profil anger de certifikat som är associerade med Cloud Services-roller (utökad support), vilket är certifikatet som du skapade 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. En rollprofil definierar en rolls SKU-specifika egenskaper, till exempel namn, kapacitet och nivå. I det här exemplet definieras två roller: frontendRole och backendRole. Rollprofilinformationen måste matcha rollkonfigurationen som definierats i filen och definitionsfilen (.csdef) för distributionskonfigurationen (.cscfg).
$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 ska läggas till i distributionen av Cloud Services (utökad support). Det här exemplet lägger till ett RDP-tillägg (Remote Desktop Protocol):
$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)}
Konfigurationsfilen (.cscfg) bör bara PublicConfig
ha taggar och ska innehålla ett namnområde som visas i följande exempel:
<?xml version="1.0" encoding="utf-8"?>
<PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
...............
</PublicConfig>
(Valfritt) I en PowerShell-hashtabell kan du definiera taggar som ska läggas till i distributionen:
$tag=@{"Owner" = "Contoso"}
Skapa distributionen av Cloud Services (utökad support) med hjälp av de profilobjekt och SAS-URI:er som du definierade:
$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