Udostępnij za pośrednictwem


Wdrażanie usług Cloud Services (wsparcie dodatkowe) przy użyciu programu Azure PowerShell

W tym artykule pokazano, jak za pomocą modułu Az.CloudService azure PowerShell utworzyć wdrożenie usług Azure Cloud Services (wsparcie rozszerzone), które ma wiele ról (WebRole i WorkerRole).

Wymagania wstępne

Wykonaj poniższe kroki jako wymagania wstępne dotyczące tworzenia wdrożenia przy użyciu programu Azure PowerShell.

  1. Zapoznaj się z wymaganiami wstępnymi dotyczącymi wdrażania dla usług Cloud Services (rozszerzona pomoc techniczna) i utwórz wymagane zasoby.

  2. Zainstaluj moduł Az.CloudService programu PowerShell:

    Install-Module -Name Az.CloudService 
    
  3. Tworzenie nowej grupy zasobów Ten krok jest opcjonalny, jeśli używasz istniejącej grupy zasobów.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Utwórz konto magazynu i kontener na platformie Azure, aby przechowywać plik pakietu (cspkg lub .zip) i plik konfiguracji (cscfg) dla wdrożenia usług Cloud Services (rozszerzona pomoc techniczna). Musisz użyć unikatowej nazwy konta magazynu. Ten krok jest opcjonalny, jeśli używasz istniejącego konta magazynu.

    $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 
    

Wdrażanie usług Cloud Services (wsparcie dodatkowe)

Aby wdrożyć usługi Cloud Services (rozszerzona obsługa), użyj dowolnej z następujących opcji poleceń cmdlet programu PowerShell:

  • Szybkie tworzenie wdrożenia przy użyciu konta magazynu

    • Ten parametr ustawia dane wejściowe pliku pakietu (cspkg lub .zip), pliku konfiguracji (cscfg) i pliku definicji (csdef) dla wdrożenia jako danych wejściowych z kontem magazynu.
    • Polecenie cmdlet tworzy profil roli usług Cloud Services (rozszerzona obsługa), profil sieciowy i profil systemu operacyjnego z minimalnymi danymi wejściowymi.
    • Aby wprowadzić certyfikat, należy określić nazwę magazynu kluczy. Odciski palca certyfikatu w magazynie kluczy są weryfikowane względem certyfikatów określonych w pliku konfiguracji (cscfg) dla wdrożenia.
  • Szybkie tworzenie wdrożenia przy użyciu identyfikatora URI sygnatury dostępu współdzielonego

    • Ten parametr ustawia dane wejściowe identyfikatora URI sygnatury dostępu współdzielonego (SAS) pliku pakietu (cspkg lub .zip) ze ścieżkami lokalnymi do pliku konfiguracji (cscfg) i pliku definicji (csdef). Żadne dane wejściowe konta magazynu nie są wymagane.
    • Polecenie cmdlet tworzy profil roli usługi w chmurze, profil sieciowy i minimalny wejściowy profil systemu operacyjnego.
    • Aby wprowadzić certyfikat, należy określić nazwę magazynu kluczy. Odciski palca certyfikatu w magazynie kluczy są weryfikowane względem certyfikatów określonych w pliku konfiguracji (cscfg) dla wdrożenia.
  • Tworzenie wdrożenia przy użyciu profilu roli, profilu systemu operacyjnego, profilu sieciowego i profilu rozszerzenia z identyfikatorami URI sygnatury dostępu współdzielonego

    • Ten parametr ustawia dane wejściowe identyfikatory URI sygnatury dostępu współdzielonego pliku (cspkg lub .zip) i pliku konfiguracji (cscfg).
    • Należy określić obiekty profilu: profil roli, profil sieciowy, profil systemu operacyjnego i profil rozszerzenia. Profile muszą być zgodne z wartościami ustawionymi w pliku konfiguracji (cscfg) i pliku definicji (csdef).

Szybkie tworzenie wdrożenia przy użyciu konta magazynu

Utwórz wdrożenie usług Cloud Services (wsparcie dodatkowe) przy użyciu pliku pakietu (cspkg lub .zip), pliku konfiguracji (cscfg) i plików definicji (csdef):

$cspkgFilePath = "<Path to .cspkg file>"
$cscfgFilePath = "<Path to .cscfg file>"
$csdefFilePath = "<Path to .csdef file>"
      
# Create a Cloud Services (extended support) deployment   
New-AzCloudService
-Name "ContosoCS" `
-ResourceGroupName "ContosOrg" `
-Location "EastUS" `
-ConfigurationFile $cscfgFilePath `
-DefinitionFile $csdefFilePath `
-PackageFile $cspkgFilePath `
-StorageAccount $storageAccount `
[-KeyVaultName <string>]

Szybkie tworzenie wdrożenia przy użyciu identyfikatora URI sygnatury dostępu współdzielonego

  1. Przekaż plik pakietu (cspkg lub .zip) dla wdrożenia na konto magazynu:

    $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. Utwórz wdrożenie usług Cloud Services (wsparcie dodatkowe) przy użyciu pliku sas sygnatury dostępu współdzielonego pliku (cspkg lub .zip), pliku konfiguracji (cscfg) i definicji pliku (csdef):

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

Tworzenie wdrożenia przy użyciu obiektów profilu i identyfikatorów URI sygnatur dostępu współdzielonego

  1. Przekaż plik konfiguracji usług Cloud Services (rozszerzona pomoc techniczna) (cscfg) na konto magazynu:

    $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. Przekaż plik pakietu Cloud Services (rozszerzona pomoc techniczna) (cspkg lub .zip) na konto magazynu:

    $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. Utwórz sieć wirtualną i podsieć. Ten krok jest opcjonalny, jeśli używasz istniejącej sieci i podsieci. W tym przykładzie użyto jednej sieci wirtualnej i podsieci dla ról usług Cloud Services (rozszerzonej pomocy technicznej) (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. Utwórz publiczny adres IP i ustaw wartość etykiety DNS dla publicznego adresu IP. Usługi Cloud Services (wsparcie dodatkowe) obsługują tylko publiczny adres IP jednostki SKU w warstwie Podstawowa. Publiczne adresy IP jednostki SKU w warstwie Standardowa nie działają z usługami Cloud Services (rozszerzona obsługa).

    Jeśli używasz statycznego adresu IP, musisz odwołać się do niego jako zastrzeżony adres IP w pliku konfiguracji (cscfg) dla wdrożenia.

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Utwórz obiekt profilu sieciowego, a następnie skojarz publiczny adres IP z frontonem modułu równoważenia obciążenia. Platforma Azure automatycznie tworzy zasób klasycznego modułu równoważenia obciążenia jednostki SKU w tej samej subskrypcji co zasób usług Cloud Services (rozszerzona pomoc techniczna). Moduł równoważenia obciążenia jest zasobem tylko do odczytu w usłudze Azure Resource Manager. Zasoby można aktualizować tylko za pomocą pliku konfiguracji usługi Cloud Services (rozszerzonej pomocy technicznej) (cscfg) i pliku wdrożenia (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. Tworzenie magazynu kluczy. Magazyn kluczy przechowuje certyfikaty skojarzone z rolami usług Cloud Services (rozszerzona obsługa). Magazyn kluczy musi znajdować się w tym samym regionie i subskrypcji co wdrożenie usług w chmurze (wsparcie dodatkowe) i mieć unikatową nazwę. Aby uzyskać więcej informacji, zobacz Używanie certyfikatów z usługami Cloud Services (rozszerzona pomoc techniczna).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Zaktualizuj zasady dostępu do magazynu kluczy i przyznaj uprawnienia certyfikatu do konta użytkownika:

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

    Alternatywnie ustaw zasady dostępu przy użyciu ObjectId wartości . Aby uzyskać ObjectId wartość, uruchom polecenie Get-AzADUser:

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. Poniższy przykład dodaje certyfikat z podpisem własnym do magazynu kluczy. Odcisk palca certyfikatu należy dodać za pomocą pliku konfiguracji (cscfg) dla ról usług Cloud Services (rozszerzona obsługa).

    $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. Utwórz obiekt profilu systemu operacyjnego w pamięci. Profil systemu operacyjnego określa certyfikaty skojarzone z rolami usług Cloud Services (rozszerzona obsługa), czyli certyfikatem utworzonym w poprzednim 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. Utwórz profil roli w pamięci. Profil roli definiuje właściwości specyficzne dla jednostki SKU roli, takie jak nazwa, pojemność i warstwa. W tym przykładzie zdefiniowano dwie role: frontendRole i backendRole. Informacje o profilu roli muszą być zgodne z konfiguracją roli zdefiniowaną w pliku konfiguracji wdrożenia (cscfg) i pliku definicji (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. (Opcjonalnie) Utwórz obiekt profilu rozszerzenia w pamięci, aby dodać go do wdrożenia usług Cloud Services (rozszerzonej pomocy technicznej). W tym przykładzie dodano rozszerzenie protokołu RDP (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)} 
    

    Plik konfiguracji (cscfg) powinien zawierać tylko PublicConfig tagi i powinien zawierać przestrzeń nazw, jak pokazano w poniższym przykładzie:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Opcjonalnie) W tabeli skrótów programu PowerShell można zdefiniować tagi, które mają zostać dodane do wdrożenia:

    $tag=@{"Owner" = "Contoso"} 
    
  13. Utwórz wdrożenie usług Cloud Services (wsparcie dodatkowe) przy użyciu zdefiniowanych obiektów profilu i identyfikatorów URI sygnatur dostępu współdzielonego:

    $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