Partager via


Déployer Cloud Services (support étendu) à l’aide d’Azure PowerShell

Cet article explique comment utiliser le module Azure PowerShell Az.CloudService pour créer un déploiement Azure Cloud Services (support étendu) qui a plusieurs rôles (WebRole et WorkerRole).

Prérequis

Effectuez les étapes suivantes en guise de prérequis à la création de votre déploiement à l’aide d’Azure PowerShell.

  1. Consultez les prérequis du déploiement de Cloud Services (support étendu) et créez les ressources associées.

  2. Installez le module PowerShell Az.CloudService :

    Install-Module -Name Az.CloudService 
    
  3. Créez un groupe de ressources. Cette étape est facultative si vous utilisez un groupe de ressources existant.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Créez un compte de stockage et un conteneur dans Azure pour stocker le fichier de package (.cspkg ou .zip) et le fichier de configuration (.cscfg) pour le déploiement Cloud Services (support étendu). Vous devez utiliser un nom unique comme nom de compte de stockage. Cette étape est facultative si vous utilisez un compte de stockage existant.

    $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 
    

Déployer Azure Cloud Services (support étendu)

Pour déployer Cloud Services (support étendu), utilisez l’une des options de cmdlet PowerShell suivantes :

  • Créer rapidement un déploiement à l’aide d’un compte de stockage

    • Ce jeu de paramètres définit le fichier de package (.cspkg ou .zip), le fichier de configuration (.cscfg) et le fichier de définition (.csdef) pour le déploiement en tant qu’entrées avec le compte de stockage.
    • La cmdlet crée le profil de rôle Cloud Services (support étendu), le profil réseau et le profil de système d’exploitation avec une entrée minimale.
    • Pour entrer un certificat, vous devez spécifier un nom de coffre de clés. Les empreintes de certificat dans le coffre de clés sont validées par rapport aux certificats que vous spécifiez dans le fichier de configuration (.cscfg) pour le déploiement.
  • Créer rapidement un déploiement à l’aide d’un URI de signature d’accès partagé

    • Ce jeu de paramètres définit l’URI de signature d’accès partagé (SAS) du fichier de package (.cspkg ou .zip) avec les chemins d’accès locaux au fichier de configuration (.cscfg) et au fichier de définition (.csdef). Aucune entrée de compte de stockage n’est requise.
    • La cmdlet crée le profil de rôle de service cloud, le profil réseau et le profil de système d’exploitation avec une entrée minimale.
    • Pour entrer un certificat, vous devez spécifier un nom de coffre de clés. Les empreintes de certificat dans le coffre de clés sont validées par rapport aux certificats que vous spécifiez dans le fichier de configuration (.cscfg) pour le déploiement.
  • Créer un déploiement à l’aide d’un profil de rôle, d’un profil de système d’exploitation, d’un profil réseau et d’un profil d’extension avec des URI de signature d’accès partagé

    • Ce jeu de paramètres définit les URI SAS du fichier de package (.cspkg ou .zip) et du fichier de configuration (.cscfg).
    • Vous devez spécifier des objets de profil : profil de rôle, profil réseau, profil de système d’exploitation et profil d’extension. Les profils doivent correspondre aux valeurs que vous définissez dans le fichier de configuration (.cscfg) et le fichier de définition (.csdef).

Créer rapidement un déploiement à l’aide d’un compte de stockage

Créez un déploiement Cloud Services (support étendu) à l’aide du fichier de package (.cspkg ou .zip), du fichier de configuration (.cscfg) et du fichier de définition (.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>]

Créer rapidement un déploiement à l’aide d’un URI SAS

  1. Chargez le fichier de package (.cspkg ou .zip) pour le déploiement sur le compte de stockage.

    $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. Créez le déploiement Cloud Services (support étendu) à l’aide du fichier de package (.cspkg ou .zip), du fichier de configuration (.cscfg) et de l’URI SAS du fichier de définition (.csdef) :

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

Créer un déploiement à l’aide d’objets de profil et d’URI SAS

  1. Chargez votre fichier de configuration Cloud Services (support étendu) (.cscfg) sur le compte de stockage :

    $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. Chargez votre package Cloud Services (support étendu) (.cspkg ou .zip) sur le compte de stockage :

    $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. Créez un réseau virtuel et un sous-réseau. Cette étape est facultative si vous utilisez un réseau et un sous-réseau existants. Cet exemple utilise un seul réseau virtuel et un seul sous-réseau pour les deux rôles Cloud Services (support étendu) (WebRole et 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. Créez une adresse IP publique et définissez une valeur d’étiquette DNS pour l’adresse IP publique. Cloud Services (support étendu) prend uniquement en charge les adresses IP publiques de la référence SKU De base. Les adresses IP publiques de référence SKU Standard ne fonctionnent pas avec Cloud Services (support étendu).

    Si vous utilisez une adresse IP statique, vous devez la référencer en tant qu’adresse IP réservée dans le fichier de configuration (.cscfg) du déploiement.

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Créez un objet de profil réseau, puis associez l’adresse IP publique au front-end de l’équilibreur de charge. La plateforme Azure crée automatiquement une ressource d’équilibreur de charge de référence SKU Classique dans le même abonnement que la ressource Cloud Services (support étendu). L’équilibreur de charge est une ressource en lecture seule dans Azure Resource Manager. Vous pouvez mettre à jour les ressources uniquement via les fichiers de configuration (.cscfg) et de définition (.csdef) de Cloud Services (support étendu).

    $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. Créez un coffre de clés. Le coffre de clés sert à stocker les certificats associés aux rôles Cloud Services (support étendu). Le coffre de clés doit se trouver dans la même région et le même abonnement que le déploiement Cloud Services (support étendu), et avoir un nom unique. Pour plus d’informations, consultez Utilisation de certificats avec Cloud Services (support étendu).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Chargez la stratégie d’accès au coffre de clés et accordez des autorisations de certificat à votre compte d’utilisateur :

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

    En guise d’alternative, définissez la stratégie d’accès à l’aide de la valeur ObjectId. Pour obtenir la valeur ObjectId, exécutez Get-AzADUser :

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. L’exemple suivant ajoute un certificat auto-signé à un coffre de clés. Vous devez ajouter l’empreinte du certificat par le biais du fichier de configuration (.cscfg) pour les rôles Cloud Services (support étendu).

    $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. Créez un objet en mémoire de profil de système d’exploitation. Un profil de système d’exploitation spécifie le certificat associé aux rôles Cloud Services (support étendu), qui est le certificat que vous avez créé à l’étape précédente.

    $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. Créez un objet en mémoire de profil de rôle. Un profil de rôle définit les propriétés propres à la référence SKU d’un rôle, comme le nom, la capacité et le niveau. Dans cet exemple, deux rôles sont définis : frontendRole et backendRole. Les informations de profil de rôle doivent correspondre à la configuration de rôle définie dans le fichier de configuration (.cscfg) et de définition (.csdef) du déploiement de logiciels.

    $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. (Facultatif) Créez un objet en mémoire de profil d’extension à ajouter à votre déploiement Cloud Services (support étendu). Cet exemple ajoute une extension 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)} 
    

    Le fichier de configuration (.cscfg) doit comporter uniquement des balises PublicConfig, et doit contenir un espace de noms, comme illustré dans l’exemple suivant :

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Facultatif) Dans une table de hachage PowerShell, vous pouvez définir des étiquettes à ajouter à votre déploiement :

    $tag=@{"Owner" = "Contoso"} 
    
  13. Créez le déploiement Cloud Services (support étendu) à l’aide des objets de profil et des URI SAS que vous avez définis :

    $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