W środowisku z wieloma administratorami systemu widzę kilka zalet dodawania plików konfiguracyjnych serwera do systemu kontroli wersji. Najbardziej godne uwagi są możliwość śledzenia zmian, kto je wprowadził, i oczywiście możliwość przywrócenia znanych konfiguracji.
Interesują mnie głównie rozwiązania Unix / Linux, ale byłbym również ciekawy implementacji Windows.
linux
version-control
Dave K.
źródło
źródło
Odpowiedzi:
Od jakiegoś czasu testowałem to w domu (~ 3 hosty), próbując różnych scms (RCS, Subversion, git). Konfiguracja, która teraz działa dla mnie idealnie, to git z
setgitperms
hakiem.Rzeczy, które należy wziąć pod uwagę:
Obsługa uprawnień do plików i własności
svn
aby to zrobić , musisz mieć opakowaniesetgitperms
hak obsługuje to w przejrzysty sposób (wymaga jednak dość nowej wersji git z obsługąpost-checkout
haków)Ponadto, jeśli nie chcesz mieć wszystkich
/etc
pod kontrolą wersji, ale tylko pliki, które faktycznie zmodyfikowałeś (jak ja), potrzebujesz scm, który obsługuje ten rodzaj użycia.*
” w.gitignore
pliku najwyższego poziomu i dodaj tylko te pliki, których chcesz używaćgit add --force
Wreszcie, istnieją pewne problematyczne katalogi pod
/etc
którym pakiety mogą spaść fragmenty konfiguracyjnych, które są następnie odczytywane przez jakiegoś programu lub demona (/etc/cron.d
,/etc/modprobe.d
, itd.). Niektóre z tych programów są wystarczająco inteligentne, aby ignorować pliki RCS (np. Cron), inne nie (np. Modprobe). To samo dotyczy.svn
katalogów. Ponownie duży plus dla git (tworzy tylko jeden.git
katalog najwyższego poziomu ).źródło
Zrobiłem to nieformalnie za pomocą git, ale jest też projekt etckeeper , który jest bardziej kompletnym i szczegółowym wdrożeniem.
źródło
Inną opcją jest użycie narzędzia do automatycznej konfiguracji serwera, takiego jak Puppet lub Cfengine, do skryptu konfiguracji serwera w języku deklaratywnym.
Jest to dodatkowa praca w interfejsie, ale użycie narzędzia takiego jak Puppet pozwala automatycznie odbudować i skonfigurować serwer przy bardzo niewielkiej interwencji człowieka.
źródło
Eksperymentowałem z etckeeperem, który wydaje się działać całkiem dobrze. Nie wymagam scentralizowanego serwera, co może być ważne w niektórych sytuacjach. Możesz użyć kilku różnych backendów DVCS, dzięki czemu możesz wybrać ten, który znasz najbardziej. Wydaje mi się, że działa bardzo dobrze, ale jeszcze nie próbowałem uzyskać innych technologii, w których pracuję, aby zacząć z niego korzystać.
źródło
Ostatnio patrzyłem na szefa kuchni . Nie tylko zachowuje konfiguracje szablonów (.erb) w kontroli wersji, ale umożliwia wykonywanie działań (takich jak ponowne uruchomienie usługi po przesłaniu konfiguracji do węzła). Szef kuchni pomaga w zarządzaniu pakietami, dzięki czemu możesz zweryfikować zależności z dowolnym węzłem, z którym się komunikujesz (tj. Musi mieć zainstalowany pakiet sudo). Wygląda na to, że szef kuchni jest łatwo rozszerzalny w Ruby, więc jeśli masz jakieś niestandardowe procesy, możesz po prostu napisać skrypt w dostarczonych ramach.
Ale nadal tego nie próbowałem i musisz zainstalować Ruby na kliencie i serwerze z odpowiednimi klejnotami (to naprawdę nie jest takie trudne). Ogólnie zarządzanie wieloma serwerami jednocześnie wygląda naprawdę łatwo.
źródło
Jestem w trakcie wdrażania Puppet w całej naszej infrastrukturze i bardzo sprzyja utrzymywaniu danych w kontroli wersji.
Wolę Mercurial, ponieważ jest to tylko zbiór plików z niektórymi metadanymi przechowywanymi w ukrytych katalogach (łatwy w zarządzaniu, łatwy do zrozumienia, łatwy w użyciu).
Moje pliki Puppet znajdują się w katalogu / usr / local / etc / puppet / (FreeBSD 7.1). Wystarczyło dodać do niej Mercurial:
Wszystkie zmiany są zatwierdzane za pomocą prostego „zatwierdzenia hg”. Jeśli zmiana coś węża, mogę przywrócić każdy serwer do określonej wersji pliku (powiedzmy sudoers) za pomocą jednego polecenia.
Świetne wprowadzenie do Mercurial
źródło
Korzystam z Subversion na zarządzanych przeze mnie serwerach. Działa w porządku. Skonfigurowałem również instancję Trac , więc mamy widok osi czasu, system biletowy, przeglądanie itp.
Używając dowiązań symbolicznych, crona i subversion, skonfigurowałem również automatyczną dystrybucję konfiguracji opartą na repozytorium subversion, gdzie każdy serwer Linux aktualizuje repozytorium za
svn update
pomocą skryptów (np. Skryptów zapory ogniowej).źródło
Oto prawdziwy przykład użycia: Używany Subversion do zarządzania plikami konfiguracyjnymi na 4 różnych serwerach. Polecam użycie kontroli wersji dla plików konfiguracyjnych z tego samego powodu, dla którego użyjesz ich z kodem - jest to kopia zapasowa i przycisk cofania w jednym. Gdybym zarządzał znacznie większą liczbą serwerów i były one znacznie bliższe konfiguracji, użyłbym czegoś takiego jak Puppet, jak podano szczegółowo w odpowiedzi Berbericha.
Chodzi o to, że możesz mieć jedno repozytorium, w którym możesz wyewidencjonować określone foldery na serwerach (np. / Var / named /), więc mam zarówno historię, jak i kopię zapasową plików konfiguracyjnych (kopia jest premią, jeśli popełnisz błąd korzystania z aplikacji do konfiguracji GUI, która wyciera ręcznie edytowane dodatki kaszel Server Admin w Mac OS X Server kaszel ). Następnie można łatwo przetestować go na serwerze testowym, a następnie zaktualizować serwer produkcyjny o pliki, które działają bez ręcznego kopiowania plików.
źródło
Kilka lat temu stworzyłem projekt, aby zrobić dokładnie to: Savon
Używa subversion do przechowywania plików i ma kilka dodatkowych funkcji, takich jak śledzenie własności, uprawnień i kontekst SELinux. Umożliwia także logiczne dzielenie zmian w systemie plików na warstwy, dzięki czemu można na przykład śledzić zmiany, które powinny osobno dotyczyć wszystkich serwerów sieciowych.
źródło
Subversion jest bardzo łatwe w konfiguracji i obsłudze, a zasobów jest wiele:
Podstawowe instrukcje
Książka SVN
Przegląd zarządzania dokumentami
źródło
Większość naszych zmian jest zarządzana za pomocą naszego systemu pomocy technicznej, nawet w przypadku rutynowych czynności konserwacyjnych. Powoli przenoszymy naszą dokumentację na wiki na własny użytek i to, co publikujemy użytkownikom końcowym. Publikowanie zmian w konfiguracji i dyskusja za nimi, miło jest mieć otwarty w naszym intranecie.
źródło
Przez wiele lat korzystałem z rcs do plików, które zacząłem modyfikować, ale kilka lat temu zacząłem kontrolować cały plik / etc pod kontrolą git. Wymaga trochę pracy, aby sprawdzić pliki w ziarnistych ilościach (czasami uciekam się do ogromnego sprawdzania „różnych aktualizacji”) i napisałem kilka skryptów, które by w tym pomogły, ale wspomniany etckeeper wydaje się bardzo interesujący, spróbuję natychmiast.
źródło