De acordo com o guia :
- Partição de disco e sistema de arquivos
Ao criar a imagem, você precisa particioná-la e ter um sistema de arquivos que ocupe o tamanho original da imagem. E durante a inicialização da imagem, você precisa alterar a tabela de partição e redimensionar o sistema de arquivos de acordo com as especificações de sabor. - endereço MAC
Remova todas as informações de endereço MAC existentes. - servidor SSH
Verifique se você tem o servidor SSH instalado e em execução quando a imagem é inicializada, pois é a principal maneira de acessar a instância. Você também pode precisar injetar chaves SSH, já que a maioria das imagens da nuvem desativa o login SSH baseado em senha (esperado para o Cirros). - Desativar o firewall
Desative quaisquer regras de firewall, pois o OpenStack possui seu próprio conjunto de firewall (chamado de grupos de segurança) implementado usando o iptables. - Acesso a metadados do servidor Neutron
Se sua instância exigir qualquer dado fornecido pelo usuário, ela precisará acessá-lo por meio do serviço de metadados.
Acho que muitos dos requisitos são atendidos usando cloud-init . O guia até lista ferramentas que podem ajudá-lo na criação de imagens.