Nasazení cloudové služby (rozšířená podpora) pomocí Azure PowerShellu

Tento článek ukazuje, jak pomocí Az.CloudService modulu PowerShell nasadit cloudovou službu (rozšířenou podporu) v Azure, která má více rolí (WebRole a WorkerRole).

Požadavky

  1. Projděte si požadavky na nasazení cloudových služeb (rozšířená podpora) a vytvořte přidružené prostředky.

  2. Nainstalujte modul Az.CloudService PowerShell.

    Install-Module -Name Az.CloudService 
    
  3. Vytvoříte novou skupinu prostředků. Tento krok je nepovinný, pokud používáte existující skupinu prostředků.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Vytvořte účet úložiště a kontejner, který se použije k ukládání souborů balíčku cloudové služby (.cspkg) a konfigurace služby (.cscfg). Je vyžadován jedinečný název pro název účtu úložiště. Tento krok je volitelný, pokud používáte existující účet úložiště.

    $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 
    

Nasazení cloudových služeb (rozšířená podpora)

K nasazení cloudových služeb (rozšířená podpora) použijte některou z následujících rutin PowerShellu:

  1. Rychlé vytvoření cloudové služby pomocí účtu úložiště

    • Tato sada parametrů vstupuje soubory .cscfg, .cspkg a .csdef jako vstupy spolu s účtem úložiště.
    • Profil role cloudové služby, profil sítě a profil operačního systému vytváří rutina s minimálním vstupem od uživatele.
    • Pro vstup certifikátu je potřeba zadat název služby KeyVault. Kryptografické otisky certifikátu v keyvault jsou ověřeny proti kryptografickým otiskům zadaným v souboru .cscfg.
  2. Rychlé vytvoření cloudové služby pomocí identifikátoru URI SAS

    • Tato sada parametrů zadá identifikátor URI SAS souboru .cspkg spolu s místními cestami souborů .csdef a .cscfg. Není vyžadován žádný vstup účtu úložiště.
    • Profil role cloudové služby, profil sítě a profil operačního systému vytváří rutina s minimálním vstupem od uživatele.
    • Pro vstup certifikátu je potřeba zadat název služby KeyVault. Kryptografické otisky certifikátu v keyvault jsou ověřeny proti kryptografickým otiskům zadaným v souboru .cscfg.
  3. Vytvoření cloudové služby s využitím rolí, operačního systému, profilu sítě a rozšíření a identifikátorů URI SAS

    • Tato sada parametrů zadá identifikátory URI SAS souborů .cscfg a .cspkg.
    • Uživatel musí zadat profil role, sítě, operačního systému a rozšíření a musí odpovídat hodnotám v souboru .cscfg a .csdef.

Rychlé vytvoření cloudové služby pomocí účtu úložiště

Vytvořte nasazení cloudové služby pomocí souborů .cscfg, .csdef a .cspkg.

$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>]

Rychlé vytvoření cloudové služby pomocí identifikátoru URI SAS

  1. Nahrajte balíček cloudové služby (cspkg) do účtu úložiště.

    $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>"
    
  2. Vytvořte nasazení cloudové služby pomocí identifikátoru URI SAS .cscfg, .csdef a .cspkg.

    New-AzCloudService
        -Name "ContosoCS" `
        -ResourceGroupName "ContosOrg" `
        -Location "EastUS" `
        -ConfigurationFile $cspkgFilePath `
        -DefinitionFile $csdefFilePath `
        -PackageURL $cspkgUrl `
        [-KeyVaultName <string>]
    

Vytvoření cloudové služby pomocí objektů profilu a identifikátorů URI SAS

  1. Nahrajte konfiguraci cloudové služby (cscfg) do účtu úložiště.

    $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 
    
  2. Nahrajte balíček cloudové služby (cspkg) do účtu úložiště.

    $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 
    
  3. Vytvořte virtuální síť a podsíť. Tento krok je volitelný, pokud používáte existující síť a podsíť. Tento příklad používá jednu virtuální síť a podsíť pro role cloudové služby (WebRole i 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 
    
  4. Vytvořte veřejnou IP adresu a nastavte vlastnost popisku DNS veřejné IP adresy. Cloud Services (rozšířená podpora) podporuje jenom veřejné IP adresy skladové položky Basic . Veřejné IP adresy standardní skladové položky nefungují s cloudovými službami. Pokud používáte statickou IP adresu, musíte na ni odkazovat jako na rezervovanou IP adresu v souboru Konfigurace služby (.cscfg).

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Vytvořte objekt profilu sítě a přidružte veřejnou IP adresu k front-endu nástroje pro vyrovnávání zatížení. Platforma Azure automaticky vytvoří prostředek nástroje pro vyrovnávání zatížení SKU Classic ve stejném předplatném jako prostředek cloudové služby. Prostředek nástroje pro vyrovnávání zatížení je prostředek jen pro čtení v Azure Resource Manageru. Všechny aktualizace prostředku se podporují pouze prostřednictvím souborů nasazení cloudové služby (.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} 
    
  6. Vytvoření trezoru klíčů Tato služba Key Vault se použije k ukládání certifikátů přidružených k rolím cloudové služby (rozšířená podpora). Služba Key Vault musí být umístěná ve stejné oblasti a předplatném jako cloudová služba a musí mít jedinečný název. Další informace najdete v tématu Použití certifikátů s Azure Cloud Services (rozšířená podpora).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Aktualizujte zásady přístupu ke službě Key Vault a udělte oprávnění certifikátu k vašemu uživatelskému účtu.

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -EnabledForDeployment
    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -UserPrincipalName 'user@domain.com' -PermissionsToCertificates create,get,list,delete 
    

    Případně můžete nastavit zásady přístupu prostřednictvím ObjectId (které lze získat spuštěním Get-AzADUser).

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. V tomto příkladu přidáme certifikát podepsaný svým držitelem do služby Key Vault. Kryptografický otisk certifikátu je potřeba přidat do souboru Konfigurace cloudové služby (.cscfg) pro nasazení do rolí cloudové služby.

    $Policy = New-AzKeyVaultCertificatePolicy -SecretContentType "application/x-pkcs12" -SubjectName "CN=contoso.com" -IssuerName "Self" -ValidityInMonths 6 -ReuseKeyOnRenewal 
    Add-AzKeyVaultCertificate -VaultName "ContosKeyVault" -Name "ContosCert" -CertificatePolicy $Policy 
    
  9. Vytvořte objekt profilu operačního systému v paměti. Profil operačního systému určuje certifikáty, které jsou přidružené k rolím cloudové služby. Bude to stejný certifikát vytvořený v předchozím kroku.

    $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)} 
    
  10. Vytvořte objekt profilu role v paměti. Profil role definuje specifické vlastnosti sku role, jako je název, kapacita a úroveň. V tomto příkladu jsme definovali dvě role: frontendRole a back-endRole. Informace o profilu role by měly odpovídat konfiguraci role definované v souboru konfigurace (cscfg) a souboru definice služby (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)} 
    
  11. (Volitelné) Vytvořte objekt profilu rozšíření v paměti, který chcete přidat do cloudové služby. V tomto příkladu přidáme rozšíření RDP.

    $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 by měl obsahovat pouze značky PublicConfig a měl by obsahovat obor názvů takto:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Volitelné) Definujte značky jako tabulku hash PowerShellu, kterou chcete přidat do cloudové služby.

    $tag=@{"Owner" = "Contoso"} 
    
  13. Vytvořte nasazení cloudové služby pomocí objektů profilu a adres URL SAS.

    $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 
    

Další kroky