Мы приняли решение использовать HP, где я работаю на основанные на Intel системы и шасси IBM для Unix. Это - действительно весь вопрос того, в чем Вы нуждаетесь, что Ваш бюджет, и как Ваши отношения с различными поставщиками. Часто поставщики времен, с которыми Вы работаете часто, могут давать Вам очень агрессивную оценку.
Поддержка также играет огромную роль, насколько хороший это и какого количества она стоит?
Для Windows мы сделали очень тяжелый анализ различных блейд-предложений, и для VMware конкретно я скажу, что HP является Вашим лучшим выбором прямо сейчас.
Во-первых, используйте установку etckeeper, настроенный для мерзавца в/etc/etckeeper/etckeeper.conf. Следуйте методу установки etckeeper для своего дистрибутива или из источника.
Скоро, у Вас будет/etc/.git
Теперь на на Вашем сервере, удостоверьтесь, что у Вас есть (безопасный) repo для продвижения к...
# ssh faruser@farhost
# mkdir somedir cd somedir && git init && chmod 700 .git
# exit
Теперь на начальном хосте, продвиньте свой локальный repo к серверу через ssh:
# cd /etc && git push faruser@farhost:somedir
Somedir может, конечно, быть относительным в этом случае (в соответствии с ssh конвенцией)
Сделайте это любое время, которое Вы вносите изменением, которое влияет на / и т.д. (и snarfed в/etc/.git etckeeper), и у Вас будет и локальный и repos вне машины для Вашей машины.
Или настроенные ssh без пароля и делают рычаг в/etc/etckeeper/commit.d/, таким образом, это происходит автоволшебно, если машина всегда подключается.
Дело не в этом. Если Вы хотите распределить конфигурацию широко, Вы открываете другой репозиторий в дополнение к локальному repo каждой машины и имеете каждый избирательный подход машины от нее по мере необходимости. То, что это делает, позволяют каждой машине отклоняться (ответвление, действительно) и сохранять управление версиями.
Вы действительно не хотите делать etckeeper Вашей резервной политикой. В то время как наличие копии Ваших файлов конфигурации было бы хорошо, едва достаточно квалифицировать как план аварийного восстановления.
Внимание на наличие реальных резервных копий Вашей системы вместо этого. Самым простым мог быть cronjob для питания tarball для записи на ленту..., о, право. Никто больше не использует ленты. Хорошо, cronjob к rsync все Ваши файлы к специализированному NAS. Для большего количества устойчивых решений для резервного копирования смотрите на Amanda и Бакулюмы.
И для случая академиков, я смог продвинуть свой etckeeper repo до GitHub точно так же, как любой другой мерзавец repo.
Как сделать это автоматически, полная история:
Создайте файл /etc/etckeeper/commit.d/60-push (не забудьте нажать chmod + x) на клиентах .
#!/bin/sh
git push central_server:/var/git/client_name.git master
central_server определяется в конфигурации ssh, см. Ниже. /var/git/client_name.git - это каталог на центральном сервере, содержащий репозиторий git.
~ / .ssh / config от root (!) должен содержать что-то вроде этого:
host central_server
Hostname 192.168.0.1
User etckeeper #a user on the central server
IdentityFile ~/.ssh/custom_key # key is in authorized_keys in
#etcpeeper@central_server:~/.ssh/authorized_keys
Затем вам нужно запустить репозиторий git на центральном_сервере
mkdir /var/git/client_name.git
su etckeeper
cd /var/git/client_name.git
git --bare init
Протестируйте его с незначительным редактированием в / etc, а затем выполните фиксацию etckeeper "тестовое нажатие".
Можно добавить конфигурацию удаленной ветви, чтобы сопоставить главную ветвь репозитория etckeeper с каждого сервера с ветвью в удаленном репозитории. Для этого вы можете выполнить следующие команды на каждом сервере:
cd /etc
git branch -m master $HOSTNAME
git remote add origin git@git.example.com:path/to/single/repo.git
git push -u origin master:$HOSTNAME
После этой настройки последующие git push
отправят изменения из каждой главной ветки сервера в выделенную ветку сервера в центральном репозитории.
Хотя у ветвей не будет общей начальной точки, это позволяет легко сравнивать один и тот же файл из двух разных веток, представляющих два разных сервера, запустив:
git diff origin/server1 origin/server2 -- file
Это можно комбинировать с автоматической настройкой, предложенной jojoo .