서버 구성 파일에 개정 제어를 사용할 수있는 솔루션은 무엇입니까? [닫은] 개정 제어 시스템에 추가하면 몇 가지 이점이

시스템 관리자가 여러 명인 환경에서 서버 구성 파일을 개정 제어 시스템에 추가하면 몇 가지 이점이 있습니다. 가장 주목할만한 점은 변경 사항을 추적하고 변경 한 사람은 물론 알려진 작업 구성으로 롤백 할 수 있다는 것입니다.

저는 주로 유닉스 / 리눅스 솔루션에 관심이 있지만 Windows 구현에 대해서도 궁금합니다.



답변

나는 다른 scms (RCS, Subversion, git)를 시도하면서 집에서 (~ 3 개의 호스트) 이것을 테스트했습니다. 지금 나에게 완벽하게 작동하는 설정은 setgitperms후크 가있는 자식입니다 .

고려해야 할 사항 :

파일 권한 및 소유권 처리

  • RCS : 기본적으로이 작업을 수행
  • Subversion : 마지막으로 시도해 보았습니다. svn이 작업을 수행하려면 래퍼 가 필요했습니다.
  • git : setgitperms후크는 이것을 투명하게 처리 합니다 ( 훅을 지원하는 최신 버전의 git이 필요합니다 post-checkout)

또한 모든 /etc버전 관리를 원하지 않고 실제로 수정 한 파일 만 (나처럼) 원하는 경우 이러한 종류의 사용을 지원하는 scm이 필요합니다.

  • RCS : 어쨌든 단일 파일에서만 작동합니다.
  • Subversion : 나는 이것이 까다로운 것으로 나타났습니다.
  • git : no probem, *최상위 .gitignore파일 에 ” “를 넣고 사용하려는 파일 만 추가하십시오.git add --force

마지막으로, 아래의 몇 가지 문제가 디렉토리가 /etc다음 몇 가지 프로그램이나 데몬 (읽습니다 패키지 구성 조각을 드롭 할 수있는 /etc/cron.d,
/etc/modprobe.d등). 이러한 프로그램 중 일부는 RCS 파일 (예 : cron)을 무시할 정도로 똑똑하고 일부는 (예 : modprobe) 와 똑같은 .svn
디렉토리. 다시 git의 큰 장점은 하나의 최상위 .git
디렉토리 만 만듭니다 .


답변

나는 git으로 비공식적으로 해왔지만 더 완성되고 자세한 구현 인 etckeeper 프로젝트 도 있습니다 .


답변

또 다른 옵션은 Puppet 또는 Cfengine 과 같은 자동화 된 서버 구성 도구를 사용하여 선언적 언어로 서버 구성을 스크립팅하는 것입니다.

프런트 엔드에서는 추가 작업이 필요하지만 Puppet과 같은 유틸리티를 사용하면 사람이 거의 개입하지 않아도 서버를 자동으로 재구성하고 구성 할 수 있습니다.


답변

나는 꽤 잘 작동하는 것 같은 etckeeper 를 실험 해왔다 . 중앙 집중식 서버가 필요하지 않으므로 상황에 따라 중요 할 수 있습니다. 여러 다른 DVCS 백엔드를 사용할 수 있으므로 가장 친숙한 것을 선택할 수 있습니다. 그것은 나를 위해 잘 작동하는 것 같지만, 나는 그것을 사용하기 위해 아직 다른 기술을 사용하려고 시도하지 않았습니다.


답변

나는 요즘 요리사를 보고있다 . 뿐만 아니라 그것을 유지 않습니다 templatable 버전 제어 (.erb) CONFIGS을하지만, (같은 당신이 작업을 수행 할 수 있도록 하는 서비스를 다시 시작 하면 노드에 CONFIGS을 업로드 후). Chef는 패키지 관리를 도와 주므로 인터페이스하는 모든 노드 (예 : sudo 패키지가 설치되어 있어야 함)와의 종속성확인할 수 있습니다 . Chef는 Ruby에서 쉽게 확장 할 수있는 것 같습니다. 사용자 정의 프로세스가있는 경우 제공된 프레임 워크 내에서 스크립트를 작성할 수 있습니다.

그러나 여전히 시도하지 않았으며 적절한 보석으로 클라이언트와 서버에 Ruby를 설치해야합니다 (정말 어렵지는 않습니다). 전체적으로 한 번에 많은 서버를 관리하기가 정말 쉽습니다.


답변

우리 인프라 전체에 Puppet을 구현하는 과정에 있으며 데이터를 버전 관리로 유지하는 데 매우 도움이됩니다.

Mercurial은 숨겨진 디렉토리에 저장된 일부 메타 데이터가있는 파일 모음이므로 관리하기 쉽고 이해하기 쉽고 사용하기 쉽습니다.

내 Puppet 파일은 / usr / local / etc / puppet / (FreeBSD 7.1)에 있습니다. Mercurial을 추가하는 데 필요한 모든 것 :

> cd /usr/local/etc/puppet
> hg init

모든 변경 사항은 간단한 “hg commit”으로 커밋됩니다. 변경으로 인해 문제가 발생하면 단일 명령으로 모든 단일 서버를 주어진 파일 버전 (예 : sudoers)으로 롤백 할 수 있습니다.

머큐리얼 소개


답변

내가 관리하는 서버에서 Subversion을 사용하고 있습니다. 잘 작동합니다. Trac 인스턴스 도 설정
했으므로 타임 라인보기, 티켓 시스템, 브라우징 등이 있습니다.

symlinks, cron 및 subversion 사용 또한 모든 Linux 서버 svn update가 스크립트 (예 : 방화벽 스크립트)를 사용하여 저장소를 업데이트하는 subversion 저장소를 기반으로 자동화 된 구성 분배를 설정했습니다 .