Wdrażanie usługi w chmurze (wsparcie dodatkowe) przy użyciu Azure PowerShell
W tym artykule pokazano, jak za pomocą modułu Az.CloudService
programu PowerShell wdrożyć Cloud Services (rozszerzoną pomoc techniczną) na platformie Azure, która ma wiele ról (WebRole i WorkerRole).
Wymagania wstępne
Zapoznaj się z wymaganiami wstępnymi dotyczącymi wdrażania dla Cloud Services (wsparcie dodatkowe) i utwórz skojarzone zasoby.
Zainstaluj moduł Az.CloudService programu PowerShell.
Install-Module -Name Az.CloudService
Tworzenie nowej grupy zasobów Ten krok jest opcjonalny w przypadku korzystania z istniejącej grupy zasobów.
New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US”
Utwórz konto magazynu i kontener, które będzie używane do przechowywania plików pakietu usługi w chmurze (cspkg) i konfiguracji usługi (cscfg). Wymagana jest unikatowa nazwa konta magazynu. Ten krok jest opcjonalny w przypadku korzystania z 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 Cloud Services (wsparcie dodatkowe)
Użyj dowolnego z następujących poleceń cmdlet programu PowerShell, aby wdrożyć Cloud Services (rozszerzona obsługa):
Szybkie tworzenie usługi w chmurze przy użyciu konta magazynu
- Ten parametr ustawia dane wejściowe plików cscfg, cspkg i csdef jako dane wejściowe wraz z kontem magazynu.
- Profil roli usługi w chmurze, profil sieciowy i profil systemu operacyjnego są tworzone przez polecenie cmdlet z minimalnymi danymi wejściowymi od użytkownika.
- W przypadku danych wejściowych certyfikatu należy określić nazwę magazynu kluczy. Odciski palca certyfikatu w magazynie kluczy są weryfikowane względem tych określonych w pliku cscfg.
Szybkie tworzenie usługi w chmurze przy użyciu identyfikatora URI sygnatury dostępu współdzielonego
- Ten parametr ustawia dane wejściowe identyfikatora URI sygnatury dostępu współdzielonego pliku cspkg wraz ze ścieżkami lokalnymi plików csdef i cscfg. Brak wymaganych danych wejściowych konta magazynu.
- Profil roli usługi w chmurze, profil sieciowy i profil systemu operacyjnego są tworzone przez polecenie cmdlet z minimalnymi danymi wejściowymi od użytkownika.
- W przypadku danych wejściowych certyfikatu należy określić nazwę magazynu kluczy. Odciski palca certyfikatu w magazynie kluczy są weryfikowane względem tych określonych w pliku cscfg.
-
- Ten parametr ustawia dane wejściowe identyfikatory URI sygnatur dostępu współdzielonego plików cscfg i cspkg.
- Rola, sieć, system operacyjny i profil rozszerzenia muszą być określone przez użytkownika i muszą być zgodne z wartościami w plikach .cscfg i .csdef.
Szybkie tworzenie usługi w chmurze przy użyciu konta magazynu
Utwórz wdrożenie usługi w chmurze przy użyciu plików cscfg, csdef i 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>]
Szybkie tworzenie usługi w chmurze przy użyciu identyfikatora URI sygnatury dostępu współdzielonego
Przekaż pakiet usługi w chmurze (cspkg) do konta 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>"
Utwórz wdrożenie usługi w chmurze przy użyciu identyfikatora URI sygnatury dostępu współdzielonego cscfg, csdef i cspkg.
New-AzCloudService -Name "ContosoCS" ` -ResourceGroupName "ContosOrg" ` -Location "EastUS" ` -ConfigurationFile $cspkgFilePath ` -DefinitionFile $csdefFilePath ` -PackageURL $cspkgUrl ` [-KeyVaultName <string>]
Tworzenie usługi w chmurze przy użyciu identyfikatorów URI sygnatur dostępu współdzielonego & obiektów profilu
Przekaż konfigurację usługi w chmurze (cscfg) do konta 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
Przekaż pakiet usługi w chmurze (cspkg) do konta 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
Utwórz sieć wirtualną i podsieć. Ten krok jest opcjonalny w przypadku korzystania z istniejącej sieci i podsieci. W tym przykładzie użyto pojedynczej sieci wirtualnej i podsieci dla ról usługi w chmurze (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
Utwórz publiczny adres IP i ustaw właściwość etykiety DNS publicznego adresu IP. Cloud Services (wsparcie dodatkowe) obsługuje tylko publiczne adresy IP jednostki SKU w warstwie Podstawowa. Publiczne adresy IP jednostki SKU w warstwie Standardowa nie działają z Cloud Services. Jeśli używasz statycznego adresu IP, musisz odwołać się do niego jako zastrzeżony adres IP w pliku konfiguracji usługi (cscfg).
$publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic
Utwórz obiekt profilu sieciowego i skojarz publiczny adres IP z frontonem modułu równoważenia obciążenia. Platforma Azure automatycznie tworzy zasób modułu równoważenia obciążenia jednostki SKU "classic" w tej samej subskrypcji co zasób usługi w chmurze. Zasób modułu równoważenia obciążenia jest zasobem tylko do odczytu w usłudze Azure Resource Manager. Wszystkie aktualizacje zasobu są obsługiwane tylko za pośrednictwem plików wdrażania usługi w chmurze (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}
Tworzenie usługi Key Vault. Ta Key Vault będzie używana do przechowywania certyfikatów skojarzonych z rolami usługi w chmurze (rozszerzona obsługa). Key Vault musi znajdować się w tym samym regionie i subskrypcji co usługa w chmurze i mieć unikatową nazwę. Aby uzyskać więcej informacji, zobacz Używanie certyfikatów z usługą Azure Cloud Services (wsparcie dodatkowe).
New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US”
Zaktualizuj zasady dostępu Key Vault 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 za pomocą identyfikatora ObjectId (który można uzyskać, uruchamiając polecenie
Get-AzADUser
).Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete
W tym przykładzie dodamy certyfikat z podpisem własnym do Key Vault. Odcisk palca certyfikatu należy dodać do pliku Cloud Service Configuration (cscfg) na potrzeby wdrożenia w rolach usługi w chmurze.
$Policy = New-AzKeyVaultCertificatePolicy -SecretContentType "application/x-pkcs12" -SubjectName "CN=contoso.com" -IssuerName "Self" -ValidityInMonths 6 -ReuseKeyOnRenewal Add-AzKeyVaultCertificate -VaultName "ContosKeyVault" -Name "ContosCert" -CertificatePolicy $Policy
Utwórz obiekt profilu systemu operacyjnego w pamięci. Profil systemu operacyjnego określa certyfikaty, które są skojarzone z rolami usługi w chmurze. Będzie to ten sam certyfikat utworzony 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)}
Utwórz obiekt w pamięci profilu roli. Profil roli definiuje właściwości specyficzne dla jednostki SKU roli, takie jak nazwa, pojemność i warstwa. W tym przykładzie zdefiniowaliśmy dwie role: frontendRole i backendRole. Informacje o profilu roli powinny być zgodne z konfiguracją roli zdefiniowaną w pliku konfiguracji (cscfg) i pliku definicji usługi (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)}
(Opcjonalnie) Utwórz obiekt profilu rozszerzenia w pamięci, który chcesz dodać do usługi w chmurze. W tym przykładzie dodamy rozszerzenie 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)}
Plik ConfigFile powinien mieć tylko tagi PublicConfig i powinien zawierać przestrzeń nazw w następujący sposób:
<?xml version="1.0" encoding="utf-8"?> <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"> ............... </PublicConfig>
(Opcjonalnie) Zdefiniuj tagi jako tabelę skrótów programu PowerShell, którą chcesz dodać do usługi w chmurze.
$tag=@{"Owner" = "Contoso"}
Tworzenie wdrożenia usługi w chmurze przy użyciu adresów URL sygnatur dostępu współdzielonego & obiektów profilu.
$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
Następne kroki
- Zapoznaj się z często zadawanymi pytaniami dotyczącymi Cloud Services (wsparcie dodatkowe).
- Wdrażanie usługi w chmurze (wsparcie dodatkowe) przy użyciu Azure Portal, programu PowerShell, szablonu lub programu Visual Studio.
- Odwiedź repozytorium przykładów dla Cloud Services (wsparcie dodatkowe).