Armazenar e compartilhar imagens em uma Galeria de Computação do Azure

Aplica-se a: ✔️ VMs do Linux ✔️ VMs do Windows ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjuntos de dimensionamento uniformes

Uma imagem é cópia de uma VM completa (incluindo todos os discos de dados anexados) ou apenas do disco do sistema operacional, dependendo de como ela é criada. Quando você cria uma VM a partir da imagem, uma cópia dos VHDs na imagem é usada para criar os discos da nova VM. A imagem permanece no armazenamento e pode ser usada repetidamente para criar VMs.

Se você tem um grande número de imagens que precisa manter e gostaria de disponibilizá-las em toda a empresa, é possível usar a Galeria de Computação do Azure como um repositório.

Quando você usa uma galeria para armazenar imagens, vários tipos de recursos são criados:

Recurso Descrição
Origem da imagem Este é um recurso que pode ser usado para criar uma versão da imagem em uma galeria. Uma origem de imagem pode ser uma VM do Azure existente generalizada ou especializada, uma imagem gerenciada, um instantâneo, uma VHD ou uma versão de imagem em outra galeria.
Galeria Uma galeria é um repositório para gerenciar e compartilhar imagens, mas você controla quem tem acesso, como o Azure Marketplace.
Definição da imagem As definições de imagem são criadas dentro de uma galeria e elas transportam informações sobre a imagem e os requisitos para usá-la na criação de VMs. Isso inclui se a imagem é Windows ou Linux, notas sobre a versão e requisitos mínimos e máximos de memória. É uma definição de um tipo de imagem.
Versão da imagem Uma versão da imagem é usada para criar uma VM ao usar uma galeria. Você pode ter diversas versões de uma imagem conforme necessário para seu ambiente. Como uma imagem gerenciada, quando você usa uma versão da imagem para criar uma VM, a versão da imagem é usada para criar novos discos para a VM. Versões de imagem podem ser usadas várias vezes.

Gráfico mostrando como você pode ter várias versões de uma imagem na sua galeria

Definições da imagem

As definições de imagem são um agrupamento lógico de versões de uma imagem. A definição de imagem retém informações sobre o motivo pelo qual a imagem foi criada e contém metadados de imagem como, para qual sistema operacional é, recursos aos quais dá suporte e outras informações sobre como usar a imagem. Uma definição de imagem é como um plano de todos os detalhes sobre a criação de uma imagem específica. Você não implanta uma VM por meio de uma definição de imagem, mas por meio das versões de imagem criadas com base na definição.

Há três parâmetros para cada definição de imagem que são usados em combinação: Editor, Oferta e SKU. Eles são usados para localizar uma definição de imagem específica. Você pode ter definições de imagem que compartilham um ou dois, mas não todos os três valores. Por exemplo, aqui estão três definições de imagem e seus valores:

Definição de imagem Publisher Oferta Sku
myImage1 Contoso Finanças Back-end
myImage2 Contoso Finanças Front-end
myImage3 Testando Finanças Front-end

Todos os três têm conjuntos exclusivos de valores. O formato é semelhante a como você pode especificar atualmente o editor, a oferta e o SKU para imagens do Azure Marketplace no Azure PowerShell para obter a versão mais recente de uma imagem do Marketplace. Cada definição de imagem deve ter um conjunto exclusivo desses valores.

Os seguintes parâmetros determinam quais tipos de versões de imagem eles podem conter:

  • Estado do sistema operacional – Você pode definir o estado do sistema operacional para especializado ou generalizado. Esse campo é obrigatório.
  • Sistema operacional – Pode ser Windows ou Linux. Esse campo é obrigatório.
  • Geração do Hyper-V – especifique se a imagem foi criada com base em um VHD do Hyper-V de geração 1 ou geração 2. O padrão é a geração 1.

As definições de imagem contêm metadados para a imagem para permitir o agrupamento de imagens que dão suporte aos mesmos recursos, plano, estado do sistema operacional, tipo de sistema operacional e outros. A seguir estão outros parâmetros que podem ser configurados na definição de imagem para que você possa acompanhar os seus recursos com mais facilidade:

  • Descrição – Use a descrição para fornecer informações mais detalhadas sobre por que a definição da imagem existe. Por exemplo, você pode ter uma definição de imagem para o seu servidor front-end que tem o aplicativo pré-instalado.

  • EULA – Pode ser usado para apontar para um contrato de licença de usuário final específico para a definição de imagem.

  • Política de Privacidade e Notas sobre a versão – Armazene notas sobre a versão e declarações de privacidade no armazenamento do Azure e forneça um URI para acessá-las como parte da definição da imagem.

  • Data de fim da vida útil – estabeleça uma data padrão após a qual a imagem não deve ser usada, para todas as versões de imagem na definição de imagem. As datas de fim da vida útil são informativas; os usuários ainda poderão criar VMs a partir de imagens e versões com a data de fim da vida útil vencida.

  • Tag – Você pode adicionar tags ao criar a definição de imagem. Para obter mais informações sobre tags, consulte Usando tags para organizar os seus recursos

  • Recomendações de memória e de vCPU mínimas e máximas – Se sua imagem tiver recomendações de memória e de vCPU, você poderá anexar essas informações à definição de imagem.

  • Tipos de disco não permitidos – Você pode fornecer informações sobre as necessidades de armazenamento da sua VM. Por exemplo, se a imagem não for adequada para discos HDD Standard, você os adicionará à lista de não permitidos.

  • Informações do plano de compra para imagens do Marketplace – -PurchasePlanPublisher, -PurchasePlanName e -PurchasePlanProduct. Para obter mais informações sobre o plano de compra, confira Localizar imagens no Azure Marketplace e Fornecer informações do plano de compra do Azure Marketplace ao criar imagens.

  • Arquitetura

  • Os recursos permitem que você especifique recursos adicionais e SecurityType(s) compatíveis com a imagem, com base no tipo de galeria:

    Recursos Valores aceitos Definição Com suporte em
    IsHibernateSupported Verdadeiro, Falso Crie VMs com suporte para hibernação. Privado, direto compartilhado, comunidade
    IsAcceleratedNetworkSupported Verdadeiro, Falso Criar VMs com rede acelerada habilitada. Quando definido como True na definição de imagem, não há suporte para a captura de VMs que não dão suporte à rede acelerada. Privado, direto compartilhado, comunidade
    DiskControllerType ["SCSI", "NVMe"], ["SCSI"] Defina isso para usar o tipo de disco SCSI ou NVMe. VMs NVMe e discos só podem ser capturados em definições de imagem marcadas para dar suporte ao NVMe. Privado, direto compartilhado, comunidade

    Ao especificar um SecurityType usando o parâmetro features, ele limita os recursos de segurança que estão habilitados na VM. Alguns tipos são limitados, com base no tipo de galeria em que estão armazenados:

    SecurityType Definição Com suporte em
    ConfidentialVMSupported É uma imagem Gen2 genérica que não contém blob VMGS. A VM Gen2 ou a VM Confidencial podem ser criadas com base nesse tipo de imagem Privado, Direto compartilhado, Comunidade
    VM confidencial Somente VMs confidenciais podem ser criadas com base nesse tipo de imagem Privado
    TrustedLaunchSupported É uma imagem Gen2 genérica que não contém o blob do VMGS. A VM Gen2 ou a VM TrustedLaunch podem ser criadas com base nesse tipo de imagem. Privado, direto compartilhado, comunidade
    TrustedLaunch Somente a VM TrustedLaunch pode ser criada com base nesse tipo de imagem Privado
    TrustedLaunchAndConfidentialVmSupported É uma imagem Gen2 genérica que não contém o blob do VMGS. A VM Gen2, a VM TrustedLaunch ou uma ConfidentialVM podem ser criadas com base nesse tipo de imagem. Privado, direto compartilhado, comunidade

    Para obter mais informações, confira os exemplos da CLI para adicionar recursos de definição de imagem e SecurityType ou os exemplos do PowerShell.

    **O ConfidentialVM tem suporte apenas nas regiões em que está disponível. Você pode encontrar as regiões com suporte aqui.

Versões da imagem

Uma versão da imagem é usada para criar uma VM. Você pode ter diversas versões de uma imagem conforme necessário para seu ambiente. Quando você usa uma versão da imagem para criar uma VM, a versão da imagem é usada para criar novos discos para a VM. Versões de imagem podem ser usadas várias vezes.

As propriedades de uma versão de imagem são:

  • Número da versão. Isso é usado como o nome da versão da imagem. Ele está sempre no formato: MajorVersion.MinorVersion.Patch. Quando você especifica o uso do mais recente ao criar uma VM, a imagem mais recente é escolhida com base na MajorVersion mais alta, depois em MinorVersion e em Patch.
  • Fonte. A origem pode ser uma VM, um disco gerenciado, um instantâneo, uma imagem gerenciada ou outra versão da imagem.
  • Data de fim da vida útil. Indicar a data de fim da vida útil para a versão da imagem. As datas de fim da vida útil são informativas; os usuários ainda poderão criar VMs a partir de versões com a data de fim da vida útil vencida.

Imagens generalizadas e especializadas

A Galeria de Computação do Azure dá suporte a dois status de sistema operacional. Normalmente, as imagens exigem que a VM usada para criar a imagem tenha sido generalizada antes de fazer a imagem. Generalizar é um processo que remove informações específicas do computador e do usuário da VM. Para o Linux, você pode usar waagent -deprovision ou os parâmetros de -deprovision+user. Para o Windows, a ferramenta Sysprep é usada.

As VMs especializadas não passaram por um processo para remover informações e contas específicas do computador. Além disso, as VMs criadas de imagens especializadas não têm um osProfile associado a elas. Isso significa que imagens especializadas terão algumas limitações, além de alguns benefícios.

  • As VMs e os conjuntos de dimensionamento criados de imagens especializadas podem ser colocados em funcionamento mais rapidamente. Como elas são criadas de uma origem que já passou pela primeira inicialização, as VMs criadas dessas imagens são inicializadas mais rapidamente.
  • As contas que poderiam ser usadas para fazer logon na VM também podem ser usadas em qualquer VM criada usando a imagem especializada que é criada usando essa VM.
  • As VMs terão o Nome do computador da VM da qual a imagem foi obtida. Você deve alterar o nome do computador para evitar colisões.
  • O osProfile é como algumas informações confidenciais são passadas para a VM, usando secrets. Isso pode causar problemas ao usar o KeyVault, o WinRM e outras funcionalidades que usam secrets no osProfile. Em alguns casos, você pode usar as MSIs (identidades de serviço gerenciadas) para contornar essas limitações.

Observação

As imagens de VM generalizadas e especializadas contêm um disco do sistema operacional e todos os discos anexados, se houver.

Atualização de recursos

Depois de criados, você pode fazer algumas alterações nos recursos da galeria. Elas são limitadas a:

Galeria de Computação do Azure:

  • Descrição

definição da imagem:

  • vCPUs recomendadas
  • Memória recomendada
  • Descrição
  • Data de fim da vida útil
  • ReleaseNotes

Versão da imagem:

  • Contagem de réplicas regionais
  • Regiões de destino
  • Excluir do mais recente
  • Data de fim da vida útil

Compartilhamento

Há três maneiras principais de compartilhar imagens em uma Galeria de Computação do Azure, dependendo de com quem você deseja compartilhar:

Compartilhamento com: Pessoas Grupos Entidade de Serviço Todos os usuários em uma assinatura (ou) um locatário específico Publicamente com todos os usuários do Azure
Compartilhamento RBAC Sim Sim Sim Não No
RBAC + galeria compartilhada direta Sim Sim Sim Sim No
RBAC + galeria da comunidade Sim Sim Sim Não Sim

Permissões de RBAC necessárias para criar uma imagem da ACG:

As imagens ACG podem ser criadas por usuários de várias fontes, incluindo máquinas virtuais, discos/instantâneos e discos rígidos virtuais (VHDs). A seção descreve as várias permissões de usuário necessárias para criar uma imagem na Galeria de Computação do Azure. As identificações sem as permissões necessárias não poderão criar imagens ACG.

Tipo de origem Permissões Necessárias
Máquina virtual Gravar
Disco/instantâneo Gravar
VHD Gravação (listKeys)
Imagem Gerenciada Ler
Imagem da galeria Ler

Confira nossa documentação para obter mais informações sobre funções internas do Azure para conceder permissões RBAC

Replicação superficial

Ao criar uma versão de imagem, você pode definir o modo de replicação como superficial para desenvolvimento e teste. A replicação superficial ignora a cópia da imagem para que a versão da imagem fique pronta mais rapidamente. Mas isso também significa que você não pode implantar um grande número de VMs dessa versão de imagem. Isso é semelhante à maneira como as imagens gerenciadas mais antigas funcionavam.

A replicação superficial também pode ser útil se você tiver imagens grandes (até 32 TB) que não são implantadas com frequência. Como a imagem de origem não é copiada, discos maiores podem ser usados. Mas eles também não podem ser usados para implantar um grande número de VMs simultaneamente.

Para definir uma imagem para replicação superficial, use --replication-mode Shallow com a CLI do Azure.

Suporte a SDK

Os seguintes SDKs dão suporte à criação de Galerias de Computação do Azure:

Modelos

Você pode criar um recurso de Galeria de Computação do Azure usando modelos. Há vários modelos de início rápido disponíveis:

Perguntas frequentes

Para listar todos os recursos da Galeria de Computação do Azure entre assinaturas às quais você tem acesso no portal do Azure, siga as etapas abaixo:

  1. Abra o Portal do Azure.
  2. Role para baixo na página e selecione Todos os recursos.
  3. Selecione todas as assinaturas sob as quais você gostaria de listar todos os recursos.
  4. Procure recursos do tipo Galeria de Computação do Azure.

Para listar todos os recursos da Galeria de Computação do Azure entre as assinaturas para as quais você tem permissões, use o seguinte comando na CLI do Azure:

   az account list -otsv --query "[].id" | xargs -n 1 az sig list --subscription

Sim. Há três cenários com base nos tipos de imagens que você pode ter.

Cenário 1: se você tiver uma imagem gerenciada, poderá criar uma definição de imagem e a versão da imagem usando essa definição. Para obter mais informações, confira Criar uma definição de imagem e uma versão de imagem.

Cenário 2: Se você tiver uma imagem não gerenciada, poderá criar uma imagem gerenciada com base nela e, em seguida, criar uma definição de imagem e a versão da imagem com base nela.

Cenário 3: Se você tiver um VHD no seu sistema de arquivos local, precisará carregar o VHD para uma imagem gerenciada e, em seguida, criar uma definição da imagem e uma versão da imagem com base nela.

Posso criar uma versão da imagem de um disco especializado?

Sim, pode criar uma VM em uma imagem especializada.

Não, não é possível mover o recurso de imagem da galeria para uma assinatura diferente. Você pode replicar as versões da imagem na galeria para outras regiões ou copiar uma imagem de outra galeria.

Posso replicar as minhas versões de imagem entre nuvens, como o Azure operado pela 21Vianet, Azure Alemanha e Nuvem do Azure Governamental?

Não, você não pode replicar as versões de imagem entre nuvens.

Posso replicar minhas versões de imagem entre assinaturas?

Não, você não pode replicar as versões de imagem entre regiões em uma assinatura e usá-las em outras assinaturas por meio de RBAC.

Posso compartilhar versões de imagem entre locatários do Microsoft Entra?

Sim, você pode usar o RBAC para compartilhar com indivíduos entre os locatários. Mas, para compartilhar em escala, consulte "Compartilhar imagens da galeria entre locatários do Azure" usando o PowerShell ou a CLI.

Quanto tempo leva para replicar as versões de imagem entre todas as regiões de destino?

O tempo de replicação de versão de imagem depende inteiramente do tamanho da imagem e do número de regiões para as quais ela está sendo replicada. No entanto, como melhor prática, é recomendável manter a imagem pequena e as regiões de origem e destino perto para obter melhores resultados. Você pode verificar o status da replicação usando o sinalizador -ReplicationStatus.

Qual é a diferença entre região de origem e região de destino?

Região de origem é a região em que sua versão da imagem será criada e regiões de destino são as regiões em que uma cópia da sua versão da imagem será armazenada. Para cada versão de imagem, você pode ter apenas uma região de origem. Além disso, passe o local da região de origem como uma das regiões de destino ao criar uma versão da imagem.

Como faço para especificar a região de origem ao criar a versão da imagem?

Durante a criação de uma versão de imagem, você pode usar o argumento --location na CLI e o parâmetro -Location no PowerShell para especificar a região de origem. Verifique se a imagem gerenciada que você está usando como imagem base para criar a versão da imagem está no mesmo local em que você pretende criar a versão da imagem. Além disso, passe o local da região de origem como uma das regiões de destino ao criar uma versão da imagem.

Como faço para especificar o número de réplicas de versão da imagem a serem criadas em cada região?

Há duas maneiras de especificar o número de réplicas de versão da imagem a serem criadas em cada região:

  1. A contagem de réplica regionais que especifica o número de réplicas que você deseja criar por região.
  2. A contagem de réplicas comuns, que é a contagem padrão por região caso a contagem de réplicas regionais não seja especificada.

Para especificar a contagem de réplicas regionais, passe a localização junto com o número de réplicas que você deseja criar nessa região: "Centro-Sul dos EUA=2".

Se a contagem de réplicas regionais não for especificada com cada local, o número de réplicas padrão será a contagem de réplicas comuns que você especificou.

Para especificar a contagem de réplicas comuns na CLI do Azure, use o argumento --replica-count no comando az sig image-version create.

Sim, é possível. Porém, como uma melhor prática, incentivamos que você mantenha o grupo de recursos, a galeria, a definição da imagem e a versão da imagem na mesma localização.

Não há encargos para usar uma Galeria de Computação do Azure, exceto pelos encargos de armazenamento para armazenar as versões de imagem e os encargos de saída de rede para replicar as versões de imagem da região de origem para as regiões de destino.

Qual versão da API devo usar ao criar imagens?

Para trabalhar com galerias, definições de imagem e versões de imagem, é recomendável usar a API versão 01/06/2018. O ZRS (Armazenamento com Redundância de Zona) requer a versão de 01/03/2019 ou mais recente.

Qual versão da API devo usar para criar uma VM ou um Conjunto de Dimensionamento de Máquinas Virtuais da versão da imagem?

Para implantações de conjunto de dimensionamento de máquina virtual e VM usando uma versão de imagem, recomendamos usar a versão da API 2018-04-01 ou superior.

Sim, você pode atualizar a referência da imagem do conjunto de dimensionamento de uma imagem gerenciada para uma imagem da Galeria de Computação do Azure, desde que o tipo do OS, a geração do Hyper-V e o layout do disco de dados sejam correspondentes entre as imagens.

Como atualizar meu código para usar a nova propriedade e garantir que as permissões sejam concedidas com precisão durante a criação da imagem da VM?

Para o campo ID da Máquina Virtual, use o campo VirtualMachineId em GallerySource(GalleryImageVersionStorageProfile.GallerySource.VirtualMachineID). A nova propriedade requer a api-version 2023-07-03 ou a versão 1.4.0 (ou superior) do SDK do .NET

StorageProfile = new GalleryImageVersionStorageProfile()
            {
                GallerySource = new GalleryArtifactVersionFullSource()
                {
                    VirtualMachineId = new ResourceIdentifier(virtualMachineId),
                }
            },

Para o VHD como origem, use o campo StorageAccountID em GallerySource em OSDiskImage ou a Imagem do Disco de dados(GalleryImageVersionStorageProfile.OSDiskImage.GallerySource.StorageAccountId). A nova propriedade requer a api-version 2022-03-03

StorageProfile = new GalleryImageVersionStorageProfile()
            {
                OSDiskImage = new GalleryOSDiskImage()
                {
                    GallerySource = new GalleryDiskImageSource()
                    {
                        StorageAccountId = new ResourceIdentifier(storageAccountId),
                        Uri = new Uri(blobUri),
                    }
                }
            },

As VMs criadas a partir da imagem da Galeria de Computação do Azure não são afetadas devido aos discos persistentes. Contudo, a operação de expansão do conjunto de dimensionamento de máquinas virtuais (VMSS) falhará, pois ela depende da ID de referência da imagem fonte, que será perdida após a exclusão da imagem na Galeria de Computação do Azure.

Solucionar problemas

Se tiver problemas com a execução de operações nos recursos da galeria, consulte a lista de erros comuns no Guia de solução de problemas.

Além disso, você pode postar e marcar sua pergunta com azure-virtual-machines-images em Q&A.

Próximas etapas

Saiba como implantar imagens usando a Galeria de Computação do Azure.