A especificação Open Virtualization Format (OVF) é um padrão que está sendo desenvolvido na associação Distributed Management Task Force (DMTF) para promover um formato aberto, seguro, com portabilidade, eficiente e extensível para empacotar e distribuir software para ser executado em máquinas virtuais.
DMTF é uma associação sem fins lucrativos de membros do segmento de mercado dedicada à promover gerenciamento corporativo e de sistema e interoperabilidade. Os membros e os não membros podem reproduzir especificações e documentos DMTF para usos consistentes com esse propósito, desde que uma atribuição correta seja fornecida.
A IBM vê muito potencial no desenvolvimento do padrão OVF, principalmente desde que suporta a capacidade de criar um ambiente aberto que define os meios padrão para representar e distribuir conteúdo de máquina virtual/dispositivo virtual. A IBM está ativa na formação da especificação padrão. Para promover ainda mais a adoção de pacotes baseados em OVF, desenvolvemos ferramentas para auxiliar aqueles interessados em representar máquinas virtuais/dispositivos virtuais em formato distribuível OVF.
Neste artigo, descrevemos o padrão e demonstramos o Open Virtualization Format Toolkit.
O Lugar do OVF no Ciclo de Vida do Dispositivo Virtual
Conforme indicado na Seção 1.4 do White Paper do Open Virtualization Format (consulte a seção Recursos posteriormente neste artigo para obter um link), o ciclo de vida do software para dispositivos virtuais segue este padrão:
- Desenvolver
- Empacotar e distribuir
- Implementar
- Gerenciar
- Obsoletar
Após a fase de desenvolvimento (Etapa 1), serviços (uma ou mais VMs e os metadados de configuração e implementação necessários) são empacotados no formato OVF (Etapa 2). Os componentes empacotados podem ser bits de terceiros. Na fase de implementação (Etapa 3), o pacote OVF é instalado. As fases de gerenciamento e obsolescência (Etapa 4 e 5) são específicas para a natureza do conteúdo no pacote OVF e para os produtos de virtualização específicos que estão sendo usados.
O OVF 1.0 aborda as fases de empacotar, distribuir e implementar.
Três elementos chave definidos pelo padrão OVF:
- O pacote OVF
- O descritor OVF
- O arquivo do ambiente OVF
Vamos discuti-los em detalhes.
Em seu núcleo, um pacote OVF é um pacote de distribuição que consiste no seguinte:
- Um arquivo descritor OVF (.ovf). Ele é comumente referido como envelope OVF e é em grande parte o assunto desse suporte a ferramentas. O arquivo descritor OVF define o conteúdo e requisitos do dispositivo virtual empacotado em suporte a uma implementação bem-sucedida e consistente desse pacote. O arquivo descritor OVF segue um formato XML.
- Zero a um arquivo de manifesto OVF (.mf). O arquivo de manifesto contém as compilações SHA-1 dos arquivos individuais no pacote OVF. O propósito do manifesto é fornecer integridade de dados do pacote.
- Zero a um arquivo de certificação OVF (.cert). Um pacote OVF pode ser assinado assinando-se o arquivo de manifesto. A assinatura da compilação é armazenada em um arquivo .cert juntamente com o certificado X.509 codificado por base64. O propósito do certificado é assegurar autenticidade do pacote.
- Zero a muitos arquivos de imagem de disco. Esses arquivos representam os discos virtuais que suportam as imagens virtuais definidas ou dispositivo. De forma mais geral, o pacote inclui artefatos necessários para o dispositivo, incluindo discos virtuais, recursos de linguagem localizados e outros artefatos.
O descritor do envelope descreve todos os metadados para as máquinas virtuais (incluindo hardware virtual) que formam esse pacote OVF.
O envelope consiste nas seguintes partes:
- Uma indicação de versão definida pelo URI do espaço de nome XML.
- Uma lista de referências de arquivos para todos os arquivos externos que fazem parte desse pacote OVF definido pelo elemento References e seus elementos filhos File. São arquivos de disco virtual típicos, imagens ISO e recursos de internacionalização.
- Metadados no nível do dispositivo definidos pelos elementos section, detalhando coisas como redes e discos virtuais.
- Uma descrição do conteúdo do dispositivo, que é uma única máquina virtual (elemento VirtualSystem ) ou uma coleta de diversas máquinas virtuais (elemento VirtualSystemCollection).
- Uma especificação de pacotes de recursos de mensagens para zero ou mais códigos de idiomas definidos por um elemento Strings para cada código do idioma.
A Figura 1 mostra a construção da parte de um envelope OVF.
Figura 1. Parte de uma Construção de Envelope OVF

O envelope OVF é criado e usado nas fases empacotar e distribuir do ciclo de vida do dispositivo virtual.
O ambiente OVF é um documento XML que é gerado por uma plataforma de implementação OVF na hora em que um pacote OVF está sendo implementado e, por sua vez, disponibilizado para software guest nos sistemas virtuais implementados. A intenção do documento de ambiente OVF é fornecer as informações de variável de propriedade do software guest do sistema virtual (de um pacote OVF implementado) que podem ser usadas para "customizar" o(s) sistema(s) virtual(ais) guest. Autores dos descritores do pacote OVF (o envelope OVF) indica quais propriedades customizadas irão requerer entrada de variável. Durante a atividade de implementação de um pacote OVF, a plataforma de implementação coleta os valores a serem associados às chaves de propriedades customizadas e constrói o documento de ambiente OVF.
O ambiente OVF é usado na fase de implementação do ciclo de vida do dispositivo virtual.
Destaques do Open Virtualization Format Toolkit
O Open Virtualization Format Toolkit fornece um conjunto de plug-ins do Eclipse, assim como a API Java™ padrão, para ajudá-lo a criar pacotes de dispositivos virtuais no formato baseado em novos padrões, o Open Virtualization Format. O OVF Toolkit ajuda a empacotar e distribuir o dispositivo virtual de acordo com o padrão OVF.
Esse kit de ferramentas fornece um editor de fácil utilização que executa as tarefas de criação dos descritores de pacotes requeridos, assegurando a conformidade para os requisitos sintáticos e semânticos do padrão. Também fornece recursos para exportar os arquivos do pacote nos dois formatos permitidos pelo padrão OVF: como um único arquivo TAR no formato Open Virtual Appliance ou como um conjunto de arquivos.
Em suporte a esse novo recurso de edição, esse pacote oferece o conjunto de plug-ins do Eclipse necessários para estender seu ambiente de desenvolvimento existente.
As seções a seguir destacam os diversos aspectos e cenários de uso da ferramenta de composição OVF.
Cobertura e Validação da Especificação
A especificação OVF fornece um esquema que detalha a semântica de um documento da instância XML do envelope OVF, assim como a especificação gravada que detalha semântica que se estende além do que é expressado no esquema. O OVF Toolkit fornece suporte que irá gerar documentos da instância compatível com OVF e pacotes de distribuição que aderem ao esquema OVF, assim como à especificação gravada. Os itens de cobertura incluem:
- Aderência de cardinalidade para dados de elementos, assim como para atributos necessários
- Integridade referencial para relacionamentos de elementos
- Integridade do tipo de dado
- Integridade da enumeração de campo para tipos limitados
- Suporte para semântica da especificação gravada, além da sintaxe do esquema
A especificação OVF inclui a capacidade de descrever nos documentos da instância XML de envelope definições de conteúdo da única máquina virtual, assim como definições de conteúdo de diversas máquinas virtuais. A ferramenta de composição OVF fornece suporte para criar, editar e empacotar um desses tipos de documentos da instância juntamente com seus arquivos de suporte.
Autoria de um Novo Envelope OVF
Em muitos casos, pode ser desejável criar um envelope OVF desde o início. Conforme mencionado anteriormente, um dos artefatos do Eclipse presente na ferramenta de composição é um novo editor que fornece apenas esse recurso. Essencialmente, um novo arquivo é criado em sua área de trabalho do Eclipse assim como qualquer arquivo seria em um Eclipse IDE. O que há de novo é o tipo do arquivo: é chamado de um Modelo Envelope.
As etapas para criar um novo envelope OVF são:
- Criar um novo projeto (ou usar um projeto existente) para conter os arquivos de envelope OVF se um ainda não existir.
Figura 2. Preparar ou Criar um Projeto para Conter os Arquivos de Envelope OVF

- Criar um novo arquivo de Modelo Envelope no projeto usando a ação de menu Arquivo/Novo/Outro.
Figura 3. Criar Novo Arquivo de Modelo Envelope

- Neste ponto, haverá um envelope OVF estrutural aberto no novo editor. Lembre-se de que a maioria dos metadados OVF deve ser incluída após a criação de um novo arquivo.
Figura 4. Incluir Metadados de OVF no Envelope Estrutural

- Inclua o conteúdo adicional no envelope OVF, realçando um elemento no editor; clique com o botão direito do mouse e selecione Novo Filho ou Novo Irmão, dependendo do conteúdo a ser incluído.
Figura 5. Incluir Novos Filhos ou Irmãos (Conteúdo Adicional) no Envelope

- Todos os comandos de edição típicos funcionam conforme esperado, incluindo cortar, copiar e colar. Além disso, uma visualização que você deve querer ter aberta é a visualização Propriedades. Abra essa visualização através do menu de contexto para um objeto OVF ou a ação de menu Janela/Mostrar Visualização/Propriedades. A visualização Propriedades fornece os nomes dos atributos e seus valores correspondentes para o elemento selecionado no editor de árvore. Essa visualização é o local onde é possível alterar valores de dados para o atributo selecionado. Na Figura 6, um novo elemento File foi incluído sob a seção Referências; quando selecionado, seus atributos correspondentes ficam visíveis e podem ser alterados na visualização Propriedades.
Figura 6. Observando a partir da Visualização Propriedades

Isso é tudo para a criação de um novo envelope OVF. Ao salvar o arquivo que está editando, o envelope é serializado no formato OVF padrão e, se desejado, pode ser aberto no editor de envelope OVF ou em qualquer outro editor capaz de visualizar arquivos XML (se desejar inspecionar a representação XML do envelope).
Figura 7. Agora É Possível Inspecionar a Representação em um Editor

A Figura 8 mostra o envelope no editor de envelope.
Figura 8. O Envelope no Editor de Envelope

A Figura 9 mostra o envelope em um editor de texto padrão, exibindo o XML serializado.
Figura 9. O Envelope como XML Serializado

Importar/Editar um Descritor de VM Proprietário
Reconhecemos que muitas máquinas virtuais baseadas em x86 existem e são hospedadas por um dos produtos hypervisor VMware. Em casos como esse, será desejável para você criar os metadados do envelope OVF e o pacote de distribuição OVF que representam essas máquinas virtuais construídas anteriormente.
Para facilitar um pouco mais esse cenário de composição, é possível usar um novo recurso Importar que foi desenvolvido (para ser mais específico, Importar Arquivo de Configuração VMX do VMware). Usando esse novo recurso de importação, é possível ter os metadados base do envelope OVF gerados a partir do arquivo de dados de configuração da VM, que podem, então, ser sujeitados a mudanças de edição adicionais, dependendo do pacote OVF final desejado. De maneira semelhante ao cenário Compondo Novo, você estará criando um envelope OVF como um novo arquivo em um projeto baseado na área de trabalho. As figuras a seguir ilustram as etapas básicas para executar esse tipo de importação.
Primeiro selecione Arquivo/Importar nas opções do menu principal:
Figura 10. Selecione Arquivo/Importar

Em seguida, o arquivo de configuração VMX para "importar" juntamente com a designação do local do destino na área de trabalho onde você gostaria que o envelope OVF gerado fosse colocado:
Figura 11. Selecione o Arquivo de Configuração de Importação VMX

Após pressionar Concluir o processamento de importação analisará o arquivo de configuração VMX e gerará a estrutura de envelope OVF apropriado. Além dos metadados OVF, um link de arquivo será criado no projeto da área de trabalho para cada arquivo VMDK (disco virtual) no suporte de geração de pacote OVF, fornecendo um cenário de geração "roundtrip" integral. A Figura 12 exibe o editor de envelope aberto para o envelope OVF gerado.
Figura 12. Editor de Envelope Aberto para o Envelope OVF

Um dos principais objetivos da especificação OVF é definir um meio padrão de distribuição de pacote que é eficiente, seguro e tem portabilidade. Nessa extensão, a especificação define dois tipos primários de formatos de pacote:
- Empacotar como um único arquivo TAR (formato dispositivo virtual ou .ova aberto)
- Empacotar como um conjunto de arquivos (formato com diversos arquivos)
A ferramenta de composição OVF suporta esses dois formatos de distribuição através dos serviços do processamento Exportar. Exportar um pacote OVF como um conjunto de arquivos ou como um archive TAR .ova é essencialmente o mesmo processo na ferramenta de composição OVF; uma seleção de diálogo ao longo do caminho controla qual formato de pacote é desejado. Como uma referência a como pacotes OVF podem ser produzidos em suporte à distribuição, apresentamos o seguinte cenário.
Um pacote OVF pode ser representado como um conjunto de arquivos ou como um único arquivo usando o formato TAR. Se o pacote OVF tiver o formato de arquivo único, a extensão desse arquivo deve ser .ova (open virtual appliance ou application).
Para archives TAR OVF, os arquivos são criados na seguinte ordem dentro do archive:
- Arquivo descritor .ovf.
- Os arquivos restantes estão na mesma ordem que a listada na seção Referências. Observe que qualquer arquivo de pacote de recursos de cadeias de caracteres externo para internacionalização deve ser o primeiro na seção Referências.
- Arquivo de manifesto .mf (se o usuário optar por isso).
- Arquivo de certificado .cert (se o usuário optar por assinatura de pacote).
Se os arquivos de manifesto ou certificado estiverem presentes, são colocados no final do archive. Para implementação, a restrição de ordenação assegura ser possível extrair o descritor OVF de um arquivo TAR OVF sem varrer o archive inteiro. O formato TAR usado está em conformidade com o formato USTAR (Uniform Standard Tape Archive) conforme definido pelo grupo de padrões POSIX IEEE 1003.1.
Para exportar um pacote OVF da ferramenta de composição OVF, você seleciona o comando de menu de exportação de arquivo:
Figura 13. Exportar o Pacote OVF da Ferramenta de Composição

Em seguida, você seleciona e carrega o arquivo descritor OVF que define os metadados de envelope OVF e seus respectivos arquivos. Se tiver selecionado um arquivo .ovf antes de chamar o assistente de exportação, o assistente irá pré-carregá-lo para você.
Figura 14. Selecionar/Carregar Arquivo Descritor que Define Metadados de Envelope OVF

A próxima etapa vai indicar qual processamento você gostaria de executar para os arquivos contidos na seção Referências do envelope OVF. Há diversas coisas a ser consideradas neste ponto do processo de exportação:
- Os arquivos devem ser empacotados com o envelope e outros arquivos opcionais? (Isso é necessário para referências de arquivos locais, mas opcional para protocolos http ou https.)
- Quaisquer arquivos são pacotes configuráveis de conversão de recursos? (Precisam ser ordenados primeiro na lista de arquivos.)
- Deseja ter um arquivo de manifesto criado? (Isso fará com que as compilações de arquivos sejam calculadas.)
- Deseja calcular (ou recalcular) tamanhos de arquivos?
A Figura 15 ilustra o diálogo onde são indicadas suas opções de processamento de arquivo:
Figura 15. Indicar Opções de Processamento de Arquivo

Seguindo a etapa de processamento de arquivo, o diretório de destino é indicado para a exportação do OVF e se você deseja exportar um conjunto de arquivos ou um archive arquivo TAR .ova.
Figura 16. Indica o Diretório de Destino do Pacote

A etapa final (Figura 17) permite salvar quaisquer mudanças que possam ser relevantes para o envelope OVF com base em seleções de opções anteriores (atualizar tamanhos de arquivos). Após essa etapa, o pacote OVF exportado estará pronto para distribuição.
Figura 17. Salve e o Pacote OVF Exportado Estará Pronto para Distribuição

É possível salvar as configurações do assistente neste ponto. Se fizer isso, um arquivo com a extensão .ovfPackage será criado em sua área de trabalho. Posteriormente, é possível selecionar esse arquivo e iniciar o assistente de exportação com todas as configurações restauradas.
Neste artigo, descrevemos o padrão Open Virtualization Format, um formato aberto, seguro, com portabilidade, eficiente e extensível para ajudá-lo a empacotar e distribuir o software que deseja executar nas máquinas virtuais. Também:
- Discutimos a função de OVF no ciclo de arquivo do dispositivo virtual comum.
- Descrevemos os três elementos de suporte críticos do padrão—arquivo de pacote, descritor e de ambiente do OVF —e demonstramos o que eles fazem e como usá-los.
- Fornecemos um tour do Open Virtualization Format Toolkit, destacando recursos como cobertura e validação de especificação, autoria de envelopes OVF, importação e edição de descritores proprietários da VM e exportação de pacotes OVF.
Agora, tudo que resta é mergulhar na seção Recursos abaixo e continuar sua educação no Open Virtualization Format e no kit de ferramentas que suporta suas funções.
| Descrição | Nome | Tamanho | Método de download |
|---|---|---|---|
| The Open Virtualization Format Toolkit1 | OVFtoolkit_101m5.zip | 4.2MB | HTTP |
Informações sobre métodos de download
Nota
- Instruções de instalação: Requer o Eclipse 3.4 ou mais recente, juntamente com o
EMF Modeling Framework Runtime and Tools Feature Versão
2.4.1.
a. Faça download do arquivo archive zip em um diretório de sua escolha.
b. A partir de seu Eclipse IDE existente, vá para Ajuda > Atualizações de Software.
c. Vá para Incluir Site... > Archive... para apontar para o archive de atualização transferida por download.
c. Selecione o OVF Editor Standalone Feature e escolha Instalar.
Aprender
- Dê uma olhada em alguns dos documentos realmente importantes:
- O PDF Open Virtualization Format Specification 1.0.0 é o documento de referência principal para o padrão.
- O PDF white paper do OVF é a narrativa essencial para aqueles que desejam entender OVF.
- O esquema do descritor de envelope OVF descreve o esquema XML para descritores OVF.
- De forma semelhante, o esquema do ambiente OVF descreve o esquema XML para arquivos de ambiente OVF.
-
"Linux Virtual"
(developerWorks, dezembro de 2006) é um bom ponto de entrada para aprender sobre métodos de virtualização, arquiteturas e implementações.
-
"Descobrir a Máquina Virtual Kernel do Linux"
(developerWorks, abril de 2007) fornece detalhes adicionais sobre Linux e virtualização, incluindo sua arquitetura e vantagens.
- Considerando a abundância de tecnologias que se reúnem neste artigo, pode-se querer um atalho para a
zona de software livre do developerWorks
(principalmente a
seção do projeto Eclipse),
a
zona Java e a
zona XML.
Obter produtos e tecnologias
- Faça download do
Eclipse 3.4 se ainda não o tiver.
- Faça download de alguns
descritores de amostra OVF.
Discutir
- Um
fórum do Open Virtualization Format Toolkit
novo está aguardando suas questões no developerWorks.

Steve Schmidt é o engenheiro de software sênior trabalhando atualmente no time de Tecnologia e Design Avançado do IBM Software Group no Research Triangle Park, na Carolina do Norte. Trabalha com a IBM por mais de 27 anos e esteve envolvido em muitos aspectos de engenharia da computação, desde sistemas operacionais de mainframes até computadores pessoais e soluções industriais. Recentemente, tem se dedicado a tecnologias de virtualização e as grande possibilidades que possuem.

Gering Mike é um engenheiro de software sênior do time de Tecnologia e Design Avançado do IBM Software Group no Research Triangle Park, na Carolina do Norte. Trabalha como programador profissional há mais de 30 anos, acompanhando o desaparecimento de cartões ponto e da ascendência do computador pessoal. Seus atuais interesses incluem desenvolvimento impulsionado por modelagem e virtualização. Gosta de encontrar e fazer bons hacks, no sentido tradicional e benevolente da palavra.
