Существует еще одна (излишняя?) Техника, которая может дополнять другие ответы.
Я использую puppet , который является инструментом для автоматической настройки машин. Я пишу свой марионеточный конфиг (хранится в системе управления версиями), а затем внедряю его на целевые машины Он предлагает функцию «шаблон», которая работает для любого файла.
Например, вы пишете файл .vimrc.erb так:
ENV_VAR=<%= varvalue %>
с "varvalue" в зависимости от целевой машины. С правильными декларациями марионеток ( "для машины xyz, поместите файл .vimrc в дом, сгенерированный из шаблона .vimrc.erb с varvalue = xyz" ), а затем разверните конфигурацию на целевой машине.
Он использует мощный шаблонный механизм "внедренного ruby", так что вы даже можете написать некоторый код ruby для генерации значений. Вы можете использовать его напрямую без марионетки: erb