Compartilhar via


Implantar Serviços de Nuvem (suporte estendido) usando o Azure PowerShell

Este artigo mostra como usar o módulo Az.CloudService do Azure PowerShell para criar uma implantação dos Serviços de Nuvem do Azure (suporte estendido) que têm várias funções (WebRole e WorkerRole).

Pré-requisitos

Conclua as etapas a seguir como pré-requisitos para criar sua implantação usando o Azure PowerShell.

  1. Examine os pré-requisitos de implantação dos Serviços de Nuvem (suporte estendido) e crie os recursos associados.

  2. Instale o módulo Az.CloudService do PowerShell:

    Install-Module -Name Az.CloudService 
    
  3. Crie um novo grupo de recursos. Essa etapa é opcional se você estiver usando um grupo de recursos existente.

    New-AzResourceGroup -ResourceGroupName “ContosOrg” -Location “East US” 
    
  4. Crie uma conta de armazenamento e um contêiner no Azure para armazenar o arquivo do pacote (.cspkg ou .zip) e o arquivo de configuração (.cscfg) da implantação dos Serviços de Nuvem (suporte estendido). Você deve usar um nome exclusivo para a conta de armazenamento. Essa etapa é opcional se você estiver usando uma conta de armazenamento existente.

    $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 
    

Implantar Serviços de Nuvem (suporte estendido)

Para implantar os Serviços de Nuvem (suporte estendido), use qualquer uma das seguintes opções de cmdlet do PowerShell:

  • Criação rápida de uma implantação usando uma conta de armazenamento

    • Esse conjunto de parâmetros insere o arquivo de pacote (.cspkg ou .zip), o arquivo de configuração (.cscfg) e o arquivo de definição (.csdef) da implantação como entradas com a conta de armazenamento.
    • O cmdlet cria o perfil de rede, o perfil de sistema operacional e o perfil de função dos Serviços de Nuvem (suporte estendido) com entrada mínima.
    • Para inserir um certificado, você deve especificar um nome de cofre de chaves. As impressões digitais de certificado no cofre de chaves são validadas com certificados que você especifica no arquivo de configuração (.cscfg) da implantação.
  • Criação rápida de uma implantação usando um URI de assinatura de acesso compartilhado

    • Esse conjunto de parâmetros insere o URI da SAS (Assinatura de Acesso Compartilhado) do arquivo de pacote (.cspkg ou .zip) com os caminhos locais para o arquivo de configuração (.cscfg) e o arquivo de definição (.csdef). Nenhuma entrada da conta de armazenamento é necessária.
    • O cmdlet cria a entrada mínima do perfil de rede, do perfil de sistema operacional e do perfil de função do serviço de nuvem.
    • Para inserir um certificado, você deve especificar um nome de cofre de chaves. As impressões digitais de certificado no cofre de chaves são validadas com certificados que você especifica no arquivo de configuração (.cscfg) da implantação.
  • Criar uma implantação usando um perfil de função, perfil do sistema operacional, perfil de rede e perfil de extensão com URIs de assinatura de acesso compartilhado

    • Esse conjunto de parâmetros insere os URIs da SAS do arquivo do pacote (.cspkg ou .zip) e o arquivo de configuração (.cscfg).
    • Você deve especificar objetos de perfil: perfil de função, perfil de rede, perfil do sistema operacional e perfil de extensão. Os perfis de função devem corresponder aos valores que você definiu no arquivo de configuração (.cscfg) e no arquivo de definição (.csdef).

Criação rápida de uma implantação usando uma conta de armazenamento

Crie uma implantação dos Serviços de Nuvem (suporte estendido) usando o arquivo de pacote (.cspkg ou .zip), o arquivo de configuração (.cscfg) e os arquivos de definição (.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>]

Criação rápida de uma implantação usando um URI de SAS

  1. Carregue o arquivo de pacote (.cspkg ou .zip) da implantação na conta de armazenamento:

    $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. Crie a implantação dos Serviços de Nuvem (suporte estendido) usando o URI da SAS do arquivo de pacote (.cspkg ou .zip), o arquivo de configuração (.cscfg) e os arquivos de definição (.csdef):

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

Criar uma implantação usando objetos de perfil e URIs da SAS

  1. Carregue o arquivo de configuração (.cscfg) dos Serviços de Nuvem (suporte estendido) na conta de armazenamento:

    $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. Carregue o arquivo de pacote (.cspkg ou .zip) dos Serviços de Nuvem (suporte estendido) na conta de armazenamento:

    $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. Criar uma rede virtual e uma sub-rede. Essa etapa é opcional se você estiver usando uma rede e uma sub-rede existentes. Este exemplo usa apenas uma rede virtual e sub-rede para as duas funções (WebRole e WorkerRole) dos Serviços de Nuvem (suporte estendido).

    $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. Crie um endereço IP público e defina um valor do rótulo DNS para o endereço IP público. Os Serviços de Nuvem (suporte estendido) só dão suporte a endereços IP públicos do SKU Básico. Os endereços IP públicos de SKU Standard não funcionam com os Serviços de Nuvem (suporte estendido).

    Se você usar um endereço IP estático, deverá referenciá-lo como um endereço IP reservado no arquivo de configuração (.cscfg) da implantação.

    $publicIp = New-AzPublicIpAddress -Name “ContosIp” -ResourceGroupName “ContosOrg” -Location “East US” -AllocationMethod Dynamic -IpAddressVersion IPv4 -DomainNameLabel “contosoappdns” -Sku Basic 
    
  5. Crie um objeto de perfil de rede e associe o endereço IP público ao front-end do balanceador de carga. A plataforma Azure cria automaticamente um recurso de balanceador de carga de SKU Clássico na mesma assinatura que o recurso dos Serviços de Nuvem (suporte estendido). O balanceador de carga é um recurso somente leitura do Azure Resource Manager. Você pode atualizar os recursos somente por meio do arquivo de configuração (.cscfg) e do arquivo de implantação (.csdef) dos Serviços de Nuvem (suporte estendido).

    $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. Crie um cofre de chaves. O cofre de chaves armazena certificados associados às funções dos Serviços de Nuvem (suporte estendido). O cofre de chaves deve estar na mesma região e assinatura que a implantação dos Serviços de Nuvem (suporte estendido) e ter um nome exclusivo. Para obter mais informações, confira Usar certificados com os Serviços de Nuvem (suporte estendido).

    New-AzKeyVault -Name "ContosKeyVault” -ResourceGroupName “ContosOrg” -Location “East US” 
    
  7. Atualize a política de acesso ao cofre de chaves e conceda à sua conta de usuário permissões de certificado:

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

    Como alternativa, defina a política de acesso usando o valor ObjectId. Para obter o valor ObjectId, execute Get-AzADUser:

    Set-AzKeyVaultAccessPolicy -VaultName 'ContosKeyVault' -ResourceGroupName 'ContosOrg' -ObjectId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -PermissionsToCertificates create,get,list,delete 
    
  8. O exemplo a seguir adiciona um certificado autoassinado a um cofre de chaves. Você deve adicionar a impressão digital do certificado através do arquivo de configuração (.cscfg) de funções dos Serviços de Nuvem (suporte estendido).

    $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. Crie um objeto na memória do perfil de sistema operacional. Um perfil do sistema operacional especifica os certificados associados a funções dos Serviços de Nuvem (suporte estendido), que é o certificado que você criou na etapa anterior.

    $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. Crie um objeto na memória do perfil de função. Um perfil de função define as propriedades específicas do SKU de uma função, como nome, capacidade e camada de serviço. Neste exemplo, duas funções são definidas: frontendRole e backendRole. As informações do perfil de função devem corresponder à configuração de função definida no arquivo de configuração (.cscfg) e no arquivo de definição (.csdef) da implantação.

    $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. (Opcional) Crie um objeto na memória do perfil de extensão a ser adicionado à sua implantação dos Serviços de Nuvem (suporte estendido). Este exemplo adiciona uma extensão do protocolo 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)} 
    

    O arquivo de configuração (.cscfg) deve ter apenas marcas PublicConfig e deve conter um namespace, conforme mostrado no exemplo a seguir:

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        ...............
    </PublicConfig>
    
  12. (Opcional) Em uma tabela de hash do PowerShell, você pode definir marcas a serem adicionadas à sua implantação:

    $tag=@{"Owner" = "Contoso"} 
    
  13. Crie a implantação dos Serviços de Nuvem (suporte estendido) usando os objetos de perfil e os URIs da SAS que você definiu:

    $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