If you are starting from scratch there are two ways to go:
1.) Start with the Cloud images available here:
Spin up a VM in openstack, make your needed modifications, then create an image of that VM.
2.) Start fresh with the Debian ISO and use hashicorp packer to preseed a VM with the qemu plugin. This will allow you to script out creation of the image, allow for post processing of the vm through SSH and then you can pass the output image through qemu-img to convert it to the image format you need to upload to Openstack Glance.
Once here you can spin up a VM in Openstack and use cloud-init to do any final customizations you need.
I use #2 in my day-to-day work, to keep images up to date for my stakeholders. It allows you to script everything out without having to do anything manually.
*If you have to do anything more than once, script it.*
-Brian