Nevím, zda je to "systémové", ale u systémů, které se nikam nedistribuují a provozujeme si je sami (či já sám v případě domácích projektů), se mi vždycky osvědčilo verzovat i konfigy minimálně pro cílový stroj a před nasazením je deploy skriptem symlinkovat do finálních cest/názvý souborů.
Vygeneruje se app-cadidate, shodí aktuální verze app-current, přesune do app-previous, app-candidate se přesune (rychlý mv) do app-current, spustí, hodí se základní test, že to běží a když ten neprojde, shodí se, přesune se do app-failed-datum, vratí app-previous -> app-current a nastartuje. Tenhle deploy dělá skript, je to triviální, žádná věda. Nepoužíváme kontejnery, vše je v jednom adresáři.
app-failed-datum je pak čas prozkoumat, proč se deploy nepovedl. V app je samozřejmě soubor s informací o head commitu buildu.