▪️ Шаблон конфига
configs/app.conf.tpl
server_name=${HOST};
listen=${PORT};
env=${ENV};
max_clients=${MAX_CLIENTS};
▪️ Задаём переменные
export HOST=bashtex.com
export PORT=8080
export ENV=prod
export MAX_CLIENTS=500
▪️ Массовая генерация конфигов
mkdir -p out
for tpl in configs/*.tpl; do
envsubst < "$tpl" > "out/$(basename "${tpl%.tpl}")"
done
На выходе:
out/app.conf
out/other.conf
...
▪️ Dry-run перед применением
envsubst < configs/app.conf.tpl | diff -u /etc/app/app.conf -
▪️ Применение с бэкапом
for f in out/*.conf; do
sudo cp -a "/etc/app/$(basename "$f")"{,.bak}
sudo cp "$f" /etc/app/
done
▪️ Использование:
массовая смена портов/доменов
автогенерация конфигов при деплое
одинаковые шаблоны на разных хостах
BashTex 📱 #bash #utils