it-swarm-korea.com

서버 구성 파일에 개정 제어를 사용할 수있는 솔루션은 무엇입니까?

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

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

85
Dave K

나는 지금 집에서 (~ 3 호스트) 이것을 다른 scms (RCS, Subversion, git)를 시도해 보았습니다. 지금 나에게 완벽하게 작동하는 설정은 setgitperms 훅이있는 자식입니다.

고려해야 할 사항 :

파일 권한 및 소유권 처리

  • RCS : 기본적으로이 작업을 수행
  • Subversion : 마지막으로 시도한 결과 svn 주위에 래퍼가 필요했습니다.
  • git : setgitperms 훅은 이것을 투명하게 처리합니다 (post-checkout 훅을 지원하는 최신 버전의 git이 필요합니다)

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

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

마지막으로, /etc 아래에 패키지가 구성 스 니펫을 삭제 한 다음 일부 프로그램이나 데몬 (/etc/cron.d, /etc/modprobe.d 등)에서 읽을 수있는 문제가있는 디렉토리가 있습니다. 이러한 프로그램 중 일부는 RCS 파일 (예 : cron)을 무시할만큼 똑똑하고 일부는 (예 : modprobe) .svn 디렉토리도 마찬가지입니다. git에 큰 장점을 더한다 (하나의 최상위 .git 디렉토리 만 생성).

52
8jean

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

28
pjz

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

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

23
berberich

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

10
Zoredache

나는 최근에 Chef를 조사해 왔습니다. 버전 제어에서 templatable (.erb) 구성을 유지할뿐만 아니라 구성을 노드에 업로드 한 후 서비스 다시 시작 와 같은 작업을 수행 할 수 있습니다. Chef는 패키지 관리를 도와 주므로 인터페이스가있는 노드 (즉, Sudo 패키지가 설치되어 있어야 함)에서 종속성 확인 을 수행 할 수 있습니다. Chef는 Ruby에서 쉽게 확장 할 수있는 것 같습니다. 사용자 정의 프로세스가있는 경우 제공된 프레임 워크 내에서 스크립트를 작성할 수 있습니다.

그러나 여전히 시도하지 않았으며 클라이언트와 서버에 적절한 gem을 설치하여 Ruby)를 설치해야합니다 (실제로 그렇게 어렵지는 않습니다). 한번.

6
bluehavana

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

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

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

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

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

머큐리얼 소개

3
sh-beta

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

심볼릭 링크, cron 및 Subversion을 사용하여 또한 모든 Linux 서버가 svn update 스크립트 포함 (예 : 방화벽 스크립트).

3
Martin C.

실제 사용 사례는 다음과 같습니다. Subversion을 사용하여 4 개의 다른 서버에서 구성 파일을 관리합니다. 코드와 함께 사용하는 것과 같은 이유로 구성 파일에 버전 제어를 사용하는 것이 좋습니다. 백업과 실행 취소 버튼이 모두 있습니다. 훨씬 많은 양의 서버를 관리하고 구성 측면에서 훨씬 더 가깝다면 Berberich의 답변에 설명 된 것처럼 Puppet과 같은 것을 사용하고 있습니다.

아이디어는 서버의 특정 폴더 (예 :/var/named /)를 체크 아웃 할 수있는 하나의 저장소를 가질 수 있으므로 구성 파일의 기록과 백업이 있습니다 (실수하면 백업이 보너스입니다) 손으로 편집 한 추가 사항을 지우는 GUI 구성 응용 프로그램 사용 cough Mac OS X Server의 서버 관리자 cough). 그런 다음 테스트 서버에서 쉽게 테스트하고 파일을 수동으로 복사하지 않고도 작동하는 파일로 프로덕션 서버를 업데이트 할 수 있습니다.

2
Chealion

정확히 몇 년 전에 프로젝트를 만들었습니다. Savon

Subversion을 사용하여 파일을 저장하고 소유권, 권한 및 SELinux 컨텍스트 추적과 같은 몇 가지 추가 기능이 있습니다. 또한 파일 시스템 변경 사항을 계층 적으로 논리적으로 분할 할 수 있으므로 모든 웹 서버에 개별적으로 가야하는 변경 사항을 추적 할 수 있습니다.

1

Subversion은 설정 및 사용이 매우 쉽고 많은 리소스가 있습니다.

기본 사용법

SVN Book

문서 관리 개요

0
Jimmie R. Houts

대부분의 변경 사항은 일상적인 유지 관리 유형의 경우에도 헬프 데스크 시스템으로 관리됩니다. 우리는 문서를 우리 자신의 용도로 사용하기 위해 위키로 천천히 옮기고 최종 사용자에게 게시 한 내용을 다루고 있습니다. 구성 변경 사항과 그에 대한 토론을 게시하면 인트라넷에서 열 수 있습니다.

0
Waldo

몇 년 동안 수정을 시작한 파일에 rc를 사용했지만 몇 년 전 전체/etc를 git 제어하에두기 시작했습니다. 파일을 세분화 된 대량으로 체크인하려면 약간의 작업이 필요합니다 (때로는 거대한 "다양한 업데이트"체크인에 의존합니다).

0
hlovdal