Puppet манифесты можно запускать без сервера, это может быть вариантом.
chef тоже можно запускать локально, это может быть вариантом.
ansible плэйбуки можно запускать с локалхоста по ссш до сервера, это может быть вариантом.
Докер может быть ещё одним вариантом.
bash скрипты могут быть вариантом.
Сохраненные конфиги в гите со структурой каталогов и маленьким скриптиком могут быть вариантом.
gitlab-ci может быть вариантом.
С остальными не работал - не могу сказать.
Выбирайте что сердцу мило)
Я бы именно для вашего варианта рекомендовал бы больше всего ansible+gitlab-ci. В пайплайнах ci описать варианты что ставить, редактируем hosts, делаем пуш и в пайплайнах просто нажимаем кнопку что надо с этим сделать. И получаем полный вывод результата в читабельном виде, в реальном времени (если надо можно цепочку тестов делать например). Гитлаб воркер ставится на машину с ансиблом. Да и сразу версионирование получите и историю.