Feature Request: Add keep_volume option to preserve boot volume artifacts in OpenStack builder
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 52/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- go
- Domínio
- cloud, infrastructure
Direção de pesquisa
Comece rastreando o tratamento de use_blockstorage_volume pelo OpenStack builder e o caminho de cleanup que exclui o volume criado. Revise a documentação do Packer plugin e os casos de keep_volume solicitados; em seguida, verifique se o cleanup padrão permanece inalterado, se os volumes retidos sobrevivem a builds bem-sucedidos e se as instâncias de compute continuam sendo excluídas.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Community Note
Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request.
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request.
If you are interested in working on this issue or have submitted a pull request, please leave a comment.
Description
When use_blockstorage_volume = true, Packer always deletes the created volume during cleanup. There is no way to retain it.
I use Platform9 Managed OpenStack, which supports creating VMs directly from volumes, not just from images. This is a common pattern in environments where volumes are preferred over images for provisioning, because it enables storage locality, faster cloning, and immutable golden volume workflows.
The problem is that Packer does all the hard work, it creates a volume, boots a VM from it, and runs provisioners, but then DELETES the VOLUME at the end. The only artifact it can produce today is a Glance image. If you want a retained volume as your build output, Packer gives you no option.
The workaround right now is to use Terraform or Ansible after a Packer run to re-create the volume from the image. That is an unnecessary extra step. Packer already creates the volume internally ( because we use use_blockstorage_volume =true), but it just always destroys as part of its cleanup process.
I would like to request an optional keep_volume flag (default false) so the volume Packer creates is preserved after a successful build. Existing behavior stays completely unchanged when the flag is not set.
Current behavior (use_blockstorage_volume = true, skip_create_image = false):
get source image --> create volume --> provision VM --> cleanup deletes volume --> Glance image created
Requested behavior (use_blockstorage_volume = true, skip_create_image = true, keep_volume = true):
get source image --> create volume --> provision VM --> cleanup skips volume deletion --> volume retained (no image created)
Requested behavior (use_blockstorage_volume = true, keep_volume = true, skip_create_image = false):
get source image --> create volume --> provision VM --> cleanup skips volume deletion --> volume retained + Glance image created
I have implemented this in a fork and it works correctly. Happy to open a PR.
Use Case(s)
Use Case(s)
- Golden volume workflows : Build and harden a boot volume once. Keep it as a reusable template source for VM creation.
- VM provisioning from volume clones: Clone VMs from preserved golden volumes instead of re-importing images. Keeps storage locality within the same volume type.
- Immutable artifact lifecycle : Produce versioned, retained build artifacts. Avoid mutating existing template volumes in place.
- Operational safety: Prevent accidental loss of the build output that today's default cleanup causes. Retain the volume for inspection and controlled rollout.
Potential configuration
packer {
required_plugins {
openstack = {
source = "github.com/hashicorp/openstack"
version = ">= 1.1.3"
}
}
}
source "openstack" "golden_volume" {
source_image = "<source-image-id>"
flavor = "<flavor-name>"
image_name = "golden-linux-2026-04-13"
use_blockstorage_volume = true
volume_size = 100
volume_name = "golden-linux-volume-2026-04-13"
volume_type = "<myvolumetype>"
skip_create_image = true # skip Glance image, volume is the target artifact
keep_volume = true # retain created volume after build
}
keep_volume = false (default): existing cleanup behavior, no breaking change
keep_volume = true: created volume is retained, compute instance is still deleted
Potential References
OpenStack Cinder docs: https://docs.openstack.org/cinder/latest/
Packer plugin docs: https://developer.hashicorp.com/packer/docs/plugins
OpenStack plugin repo: https://github.com/hashicorp/packer-plugin-openstack
- Linguagem predominante
- Go
- Estrelas
- 29
- Forks
- 27
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de hashicorp/packer-plugin-openstack
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Error initializing block storage client with Openstack 2026.1Talvez já em andamento @elelaysh assumiu há 75 dias. Abertabug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
hashicorp/packer-plugin-openstack#162 · 1 comentário ·
-
Packer 1.12.0-alpha1 testingAberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
-
Response Error: No image found with ID .... code 404 Not Found title Not Found (Floating problem )Abertabug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
hashicorp/packer-plugin-openstack#130 · 1 comentário ·
-
enhancement good first issue
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
hashicorp/packer-plugin-openstack#116 · 2 comentários ·
Todas as issues de hashicorp/packer-plugin-openstack
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
prime-radiant-inc/evener#5901 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 69/100
-
kind/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
kyma-project/serverless#2769 ·
Mantenedores costumam responder em até 1 dia
-
Update the mise toolsAbertaready-for-agent
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
hexlet-basics/hexlet-basics#962 ·
Mantenedores costumam responder em até 1 dia
-
imapproxy closeForMaintenance grace timer calls clientConn.Close() before closeMaintenanceTransportTalvez já em andamento @dejanstrbac assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
Mantenedores costumam responder em até 1 dia