답변:
나는 다른 scms (RCS, Subversion, git)를 시도하면서 집에서 (~ 3 개의 호스트) 이것을 테스트했습니다. 지금 나에게 완벽하게 작동하는 설정은 setgitperms
후크 가있는 자식입니다 .
고려해야 할 사항 :
파일 권한 및 소유권 처리
svn
이 작업을 수행하려면 래퍼 가 필요했습니다.setgitperms
후크는 이것을 투명하게 처리 합니다 ( 훅을 지원하는 최신 버전의 git이 필요합니다 post-checkout
)또한 모든 /etc
버전 관리를 원하지 않고 실제로 수정 한 파일 만 (나처럼) 원하는 경우 이러한 종류의 사용을 지원하는 scm이 필요합니다.
*
최상위 .gitignore
파일 에 " "를 넣고 사용하려는 파일 만 추가하십시오.git add --force
마지막으로, 아래의 몇 가지 문제가 디렉토리가 /etc
다음 몇 가지 프로그램이나 데몬 (읽습니다 패키지 구성 조각을 드롭 할 수있는 /etc/cron.d
,
/etc/modprobe.d
등). 이러한 프로그램 중 일부는 RCS 파일 (예 : cron)을 무시할 정도로 똑똑하고 일부는 (예 : modprobe) 와 똑같은 .svn
디렉토리. 다시 git의 큰 장점은 하나의 최상위 .git
디렉토리 만 만듭니다 .
또 다른 옵션은 Puppet 또는 Cfengine 과 같은 자동화 된 서버 구성 도구를 사용하여 선언적 언어로 서버 구성을 스크립팅하는 것입니다.
프런트 엔드에서는 추가 작업이 필요하지만 Puppet과 같은 유틸리티를 사용하면 사람이 거의 개입하지 않아도 서버를 자동으로 재구성하고 구성 할 수 있습니다.
나는 요즘 요리사를 보고있다 . 뿐만 아니라 그것을 유지 않습니다 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을 사용하여 4 개의 다른 서버에서 구성 파일을 관리합니다. 코드와 함께 사용하는 것과 같은 이유로 구성 파일에 버전 제어를 사용하는 것이 좋습니다. 백업과 실행 취소 버튼이 모두 있습니다. 훨씬 많은 양의 서버를 관리하고 구성 측면에서 훨씬 더 가깝다면 Berberich의 답변에 자세히 설명 된 것처럼 Puppet과 같은 것을 사용하고 있습니다.
아이디어는 서버의 특정 폴더 (예 : / var / named /)를 체크 아웃 할 수있는 하나의 저장소를 가질 수 있으므로 구성 파일의 기록과 백업이 있습니다 (실수하면 백업이 보너스입니다) 손 편집 추가 물티슈 GUI를 구성 응용 프로그램 사용의 기침 맥 OS X 서버에서 서버 관리 기침 ). 그런 다음 테스트 서버에서 쉽게 테스트하고 파일을 수동으로 복사하지 않고도 작동하는 파일로 프로덕션 서버를 업데이트 할 수 있습니다.
정확히 몇 년 전에 프로젝트를 만들었습니다. Savon
Subversion을 사용하여 파일을 저장하고 소유권, 권한 및 SELinux 컨텍스트 추적과 같은 몇 가지 추가 기능이 있습니다. 또한 파일 시스템 변경 사항을 계층 적으로 논리적으로 분할 할 수 있으므로 모든 웹 서버에 개별적으로 가야하는 변경 사항을 추적 할 수 있습니다.