Есть масса способов, от git репозитория и простейшего скрипта который всё пошагово установит/стянет/скопирует настройки/запустит, или системы управления конфигурациями(ansible, например) для той же цели, до docker контейнеров.
Создание именно своего образа виртуалки имеет ту проблему, что не везде из него получится развернуть виртуалку. Решения описанные выше намного универсальнее.