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

V tomto článku se dozvíte, jak pomocí Az.CloudService modulu PowerShellu nasadit v Azure Cloud Services (rozšířenou podporu), která má více rolí (webrole a role pracovního procesu).

Požadavky

  1. Projděte si požadavky nasazení pro Cloud Services (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 uložení balíčku cloudové služby (. cspkg) a souborů konfigurace služby (. cscfg). Vyžaduje se jedinečný název pro název účtu úložiště. Tento krok je nepovinný, 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í Cloud Services (Rozšířená podpora)

K nasazení Cloud Services použijte některou z následujících rutin PowerShellu (Rozšířená podpora):

  1. rychlé vytvoření cloudové služby pomocí účtu Storage

    • Tento parametr nastaví vstupní 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 se vytváří pomocí rutiny s minimálním vstupem od uživatele.
    • V případě vstupu certifikátu je třeba zadat název trezoru klíčů. Kryptografické otisky certifikátů v trezoru klíčů jsou ověřovány pomocí těch, které jsou zadány v souboru. cscfg.
  2. Rychlé vytvoření cloudové služby pomocí identifikátoru URI SAS

    • Tento parametr nastaví vstup identifikátoru URI SAS souboru. cspkg spolu s místními cestami souborů. csdef a. cscfg. Není vyžadován žádný vstup z účtu úložiště.
    • Profil role cloudové služby, profil sítě a profil operačního systému se vytváří pomocí rutiny s minimálním vstupem od uživatele.
    • V případě vstupu certifikátu je třeba zadat název trezoru klíčů. Kryptografické otisky certifikátů v trezoru klíčů jsou ověřovány pomocí těch, které jsou zadány v souboru. cscfg.
  3. Vytvoření cloudové služby pomocí role, operačního systému, profilu sítě a rozšíření a identifikátorů URI SAS

    • Tento parametr nastaví vstupní identifikátory URI SAS souborů. cscfg a. cspkg.
    • Role, síť, operační systém a profil rozšíření musí zadat uživatel a musí odpovídat hodnotám ve. cscfg a. csdef.

rychlé vytvoření cloudové služby pomocí účtu Storage

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. Upload 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. cscfg,. csdef a. cspkg SAS.

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

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

  1. Upload 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. Upload 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 nepovinný, pokud používáte stávající síť a podsíť. V tomto příkladu se používá jedna virtuální síť a podsíť pro role cloudové služby (webrole a role pracovního procesu).

    $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 Popisek DNS pro veřejnou IP adresu. Cloud Services (Rozšířená podpora) podporuje jenom veřejné IP adresy základní SKU. Veřejné IP adresy Standard SKU nefungují s Cloud Services. Pokud používáte statickou IP adresu, musíte na ni odkazovat jako na Vyhrazená IP adresa 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 "klasický" SKU pro vyrovnávání zatížení 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, který je jen pro čtení, v Azure Resource Manager. Jakékoli aktualizace prostředku se podporují jenom 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 Key Vault bude sloužit k ukládání certifikátů, které jsou přidruženy k rolím cloudové služby (Rozšířená podpora). Key Vault se musí nacházet 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 Key Vault a udělte jim oprávnění k certifikátu pro svůj uživatelský účet.

    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 přes 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 do Key Vault certifikát podepsaný svým držitelem. Kryptografický otisk certifikátu se musí přidat do souboru konfigurace cloudové služby (. cscfg) pro nasazení v rolích 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ření profilu operačního systému v paměťovém objektu. Profil operačního systému Určuje certifikáty, které jsou přidružené k rolím cloudové služby. To bude stejný certifikát, který jste vytvořili 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 profil role v paměťovém objektu. Profil role definuje specifické vlastnosti SKU role, jako je název, kapacita a vrstva. V tomto příkladu jsme definovali dvě role: frontendRole a backendRole. Informace o profilu role by se měly shodovat s konfigurací role definovanou v souboru konfigurace (cscfg) a v 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 profil rozšíření s objektem v paměti, který chcete přidat do své 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ěly by obsahovat obor názvů následujícím způsobem:

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

    $tag=@{"Owner" = "Contoso"} 
    
  13. Vytvářejte nasazení cloudové služby pomocí objektů profilu & 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