Можно ли использовать etckeeper с одним общим git-репозиторием?
Я заметил, что несколько человек рекомендовали использовать etckeeper для применения контроля версий к моему каталогу /etc.
Мне кажется, что установка по умолчанию помещает репозиторий на тот же компьютер, что и /etc, которым вы пытаетесь управлять. Это прекрасно работает для контроля версий, но не дает дополнительного преимущества создания резервных копий файлов вне сервера или позволяет дублировать части /etc с одного исходного компьютера на другой.
Можно ли использовать один репозиторий git на компьютере с центральным администратором, чтобы etckeeper на каждом сервере сохранял свои данные в одном месте?
(Сейчас я делаю то же самое с svn и некоторыми пользовательскими скриптами для фиксации и возврата файлов, но я должен помнить, чтобы фиксировать их при внесении изменений.)
5 ответов
Сначала используйте install etckeeper, настроенный для git в /etc/etckeeper/etckeeper.conf. Используйте метод установки etckeeper для вашего дистрибутива или из исходного кода.
Скоро у вас будет /etc/.git
Теперь на вашем сервере, убедитесь, что у вас есть (безопасное) репо, чтобы нажать на...
# ssh faruser@farhost
# mkdir somedir cd somedir && git init && chmod 700 .git
# exit
Теперь на начальном хосте отправьте локальное хранилище на сервер через ssh:
# cd /etc && git push faruser@farhost:somedir
Somedir, конечно, может быть относительным в этом случае (в соответствии с соглашением SSH)
Делайте это каждый раз, когда вы вносите изменения, которые влияют на /etc (и записывается в /etc/.git etckeeper), и вы будете иметь как локальные, так и внешние машины для своей машины.
Или настройте ssh без пароля и подключите файл /etc/etckeeper/commit.d/, чтобы это происходило автоматически, если машина всегда подключена.
Можно добавить конфигурацию удаленной ветви, чтобы отобразить главную ветку репозитория 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.
Не в этом дело. Если вы хотите широко распространять конфигурацию, вы настраиваете другой репозиторий в дополнение к локальному репо каждой машины и при необходимости выбираете из нее каждую машину. Это позволяет каждой машине отклоняться (в действительности, ветвиться) и сохранять контроль версий.
Как это сделать автоматически, полная история:
Создайте файл /etc/etckeeper/commit.d/60-push (не забудьте chmod+x it) на клиентах.
#!/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 передаст "test push'ing".
Вы действительно не хотите делать etckeeper своей политикой резервного копирования. Хотя наличие копии ваших файлов конфигурации было бы неплохо, этого едва ли достаточно для того, чтобы считаться планом аварийного восстановления.
Вместо этого сфокусируйтесь на создании реальных резервных копий вашей системы. Упрощенным может быть cronjob для подачи тарбола на ленту... о, верно. Никто не использует ленты больше. Хорошо, черт побери, чтобы rsync все ваши файлы на выделенном NAS. Чтобы найти более надежные решения для резервного копирования, взгляните на Amanda и Bacula.
А в случае с академиками я смог перенести мой репозиторий etckeeper на github, как и любой другой репозиторий git.