Share via


Cloud Services implementeren (uitgebreide ondersteuning) met behulp van Azure PowerShell

In dit artikel leest u hoe u de Azure PowerShell-module Az.CloudService gebruikt om een Azure Cloud Services-implementatie (uitgebreide ondersteuning) te maken met meerdere rollen (WebRole en WorkerRole).

Vereisten

Voer de volgende stappen uit als vereisten voor het maken van uw implementatie met behulp van Azure PowerShell.

  1. Controleer de implementatievereisten voor Cloud Services (uitgebreide ondersteuning) en maak de vereiste resources.

  2. Installeer de Az.CloudService PowerShell-module:

    Install-Module -Name Az.CloudService 
    
  3. Een nieuwe resourcegroep maken. Deze stap is optioneel als u een bestaande resourcegroep gebruikt.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Maak een opslagaccount en container in Azure om het pakketbestand (.cspkg of .zip) en configuratiebestand (.cscfg) op te slaan voor de cloudservicesimplementatie (uitgebreide ondersteuning). U moet een unieke naam gebruiken voor de naam van het opslagaccount. Deze stap is optioneel als u een bestaand opslagaccount gebruikt.

    $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 
    

Cloud Services implementeren (uitgebreide ondersteuning)

Als u Cloud Services (uitgebreide ondersteuning) wilt implementeren, gebruikt u een van de volgende Opties voor PowerShell-cmdlets:

  • Een implementatie snel maken met behulp van een opslagaccount

    • Met deze parameterset wordt het pakketbestand (.cspkg of .zip), het configuratiebestand (.cscfg) en het definitiebestand (.csdef) voor de implementatie als invoer voor het opslagaccount gebruikt.
    • De cmdlet maakt met minimale invoer het rolprofiel voor Cloud Services (uitgebreide ondersteuning), het netwerkprofiel en het besturingssysteemprofiel.
    • Als u een certificaat wilt invoeren, moet u een sleutelkluisnaam opgeven. De vingerafdruk van het certificaat in de sleutelkluis wordt gevalideerd op basis van de certificaten die u opgeeft in het configuratiebestand (.cscfg) voor de implementatie.
  • Een implementatie snel maken met behulp van een handtekening-URI voor gedeelde toegang

    • Met deze parameterset wordt de SAS-URI (Shared Access Signature) van het pakketbestand (.cspkg of .zip) ingevoerd met de lokale paden naar het configuratiebestand (.cscfg) bestand en definitiebestand (.csdef). Er is geen invoer van het opslagaccount vereist.
    • De cmdlet maakt het cloudservicerolprofiel, het netwerkprofiel en het besturingssysteemprofiel minimale invoer.
    • Als u een certificaat wilt invoeren, moet u een sleutelkluisnaam opgeven. De vingerafdruk van het certificaat in de sleutelkluis wordt gevalideerd op basis van de certificaten die u opgeeft in het configuratiebestand (.cscfg) voor de implementatie.
  • Een implementatie maken met behulp van een rolprofiel, besturingssysteemprofiel, netwerkprofiel en extensieprofiel met handtekening-URI's voor gedeelde toegang

    • Met deze parameterset worden de SAS-URI's van het pakketbestand (.cspkg of .zip) en configuratiebestand (.cscfg) ingeslagen.
    • U moet profielobjecten opgeven: rolprofiel, netwerkprofiel, besturingssysteemprofiel en extensieprofiel. De profielen moeten overeenkomen met de waarden die u hebt ingesteld in het configuratiebestand en definitiebestand (.csdef).

Een implementatie snel maken met behulp van een opslagaccount

Maak een cloudservicesimplementatie (uitgebreide ondersteuning) met behulp van het pakketbestand (.cspkg of .zip), configuratiebestand (.cscfg) en definitiebestanden (.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>]

Een implementatie snel maken met behulp van een SAS-URI

  1. Upload het pakketbestand (.cspkg of .zip) voor de implementatie naar het opslagaccount:

    $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. Maak de implementatie van Cloud Services (uitgebreide ondersteuning) met behulp van het pakketbestand (.cspkg of .zip), configuratiebestand (.cscfg)- en definitiebestand (.csdef)-URI:

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

Een implementatie maken met behulp van profielobjecten en SAS-URI's

  1. Upload het configuratiebestand (.cscfg) van cloudservices (uitgebreide ondersteuning) naar het opslagaccount:

    $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 uw Cloud Services-pakket (uitgebreide ondersteuning) (.cspkg of .zip) naar het opslagaccount:

    $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. Maak een virtueel netwerk en subnet. Deze stap is optioneel als u een bestaand netwerk en subnet gebruikt. In dit voorbeeld worden één virtueel netwerk en subnet gebruikt voor zowel Cloud Services-rollen (uitgebreide ondersteuning) (WebRole en 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. Maak een openbaar IP-adres en stel een DNS-labelwaarde in voor het openbare IP-adres. Cloud Services (uitgebreide ondersteuning) ondersteunt alleen een openbaar IP-adres van de Basic-SKU . Openbare IP-adressen van de standard-SKU werken niet met Cloud Services (uitgebreide ondersteuning).

    Als u een statisch IP-adres gebruikt, moet u ernaar verwijzen als een gereserveerd IP-adres in het configuratiebestand (.cscfg) voor de implementatie.

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Maak een netwerkprofielobject en koppel vervolgens het openbare IP-adres aan de front-end van de load balancer. Het Azure-platform maakt automatisch een klassieke SKU-load balancer-resource in hetzelfde abonnement als de Cloud Services-resource (uitgebreide ondersteuning). De load balancer is een alleen-lezen resource in Azure Resource Manager. U kunt resources alleen bijwerken via het configuratiebestand en implementatiebestand (.csdef) van Cloud Services (uitgebreide ondersteuning).

    $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. Een sleutelkluis maken. In de sleutelkluis worden certificaten opgeslagen die zijn gekoppeld aan Cloud Services-rollen (uitgebreide ondersteuning). De sleutelkluis moet zich in dezelfde regio en hetzelfde abonnement bevinden als de implementatie van Cloud Services (uitgebreide ondersteuning) en een unieke naam hebben. Zie Certificaten gebruiken met Cloud Services (uitgebreide ondersteuning) voor meer informatie.

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Werk het toegangsbeleid voor de sleutelkluis bij en ververleent certificaatmachtigingen aan uw gebruikersaccount:

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

    U kunt ook het toegangsbeleid instellen met behulp van de ObjectId waarde. Voer het volgende uit Get-AzADUserom de ObjectId waarde op te halen:

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. In het volgende voorbeeld wordt een zelfondertekend certificaat toegevoegd aan een sleutelkluis. U moet de vingerafdruk van het certificaat toevoegen via het configuratiebestand (.cscfg) voor Cloud Services-rollen (uitgebreide ondersteuning).

    $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. Maak een besturingssysteemprofiel in het geheugenobject. Een besturingssysteemprofiel geeft de certificaten op die zijn gekoppeld aan Cloud Services-rollen (uitgebreide ondersteuning). Dit is het certificaat dat u in de vorige stap hebt gemaakt.

    $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. Maak een rolprofiel in het geheugenobject. Een rolprofiel definieert de SKU-specifieke eigenschappen van een rol, zoals naam, capaciteit en laag. In dit voorbeeld zijn twee rollen gedefinieerd: frontendRole en backendRole. Informatie over het rolprofiel moet overeenkomen met de rolconfiguratie die is gedefinieerd in het bestand en definitiebestand (.cscfg) van de implementatieconfiguratie (.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. (Optioneel) Maak een extensieprofielobject in het geheugen om toe te voegen aan uw Cloud Services-implementatie (uitgebreide ondersteuning). In dit voorbeeld wordt een RDP-extensie (Remote Desktop Protocol) toegevoegd:

    $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)} 
    

    Het configuratiebestand (.cscfg) mag alleen PublicConfig tags bevatten en mag een naamruimte bevatten, zoals wordt weergegeven in het volgende voorbeeld:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Optioneel) In een PowerShell-hashtabel kunt u tags definiëren die u aan uw implementatie wilt toevoegen:

    $tag=@{"Owner" = "Contoso"} 
    
  13. Maak de implementatie van Cloud Services (uitgebreide ondersteuning) met behulp van de profielobjecten en SAS-URI's die u hebt gedefinieerd:

    $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