더북(TheBook)

초보 시스템 관리자의 일기 | 깃허브를 이용한 시스템 관리 협업

깃허브의 또 다른 장점은 여러 사용자 사이의 협업에 필요한 환경을 제공한다는 점이다. 시스템 관리 업무 또한 여러 시스템 관리자의 공동 작업을 필요로 한다. 깃허브를 이용해서 여러 시스템 관리자가 어떻게 서로를 방해하지 않고 함께 업무를 처리하는지 소개한다.

먼저 등장인물을 소개한다.

losttemple.linuxmaster.com을 사용하는 linuxmaster.com의 시스템 관리자. 깃허브 프로젝트 주소는 https://github.com/jaehun-shin으로 공동으로 관리하는 프로젝트의 원본 저장소 https://github.com/jaehun-shin/puppet_vm를 관리하고 있음.
vm01.linuxmaster.com을 사용하는 linuxmaster.com의 시스템 관리자. 깃허브 프로젝트 주소는 https://github.com/ShinJaehun. jaehun-shin 사용자가 관리하는 프로젝트를 돕고자 함

공동 작업자가 프로젝트를 포크하고 로컬 시스템에 파일을 내려받는 과정을 살펴보자.

ShinJaehun이 깃허브에 가입해서 로그인했다. 앞에서 jaehun-shin이 퍼펫 설정 파일을 저장한 저장소 jaehun-shin/puppet_vm에 접속한다.접속한  https://github.com/jaehun-shin/puppet_vm이 원본 저장소가 된다. 앞에서 설명했듯이 깃허브 프로젝트의 주소는 https://github.com/[사용자 이름]/[프로젝트 이름]이다. 오른쪽의 <Fork>를 클릭한다.

그림 11-21 프로젝트 포크하기

이렇게 하면 사용자의 저장소에 원본 저장소를 복제한 프로젝트( https://github.com/ShinJaehun/puppet_vm)가 생성된다. 오른쪽에 ‘HTTPs clone URL’의 버튼을 클릭해서 주소를 복사해둔다.

그림 11-22 복제한 프로젝트 주소 복사하기
ShinJaehun 사용자가 가상 게스트 vm01.linuxmaster.com에서 포크 fork(복제)한 저장소의 파일을 내려받는다. vm01을 시작해서 ssh로 접속한 다음 git을 설치하자.
administrator@vm01:~$ sudo apt-get update
administrator@vm01:~$ sudo apt-get install git
git clone [깃허브 저장소 주소]를 실행한다.복제한 저장소의 주소를 입력해서 파일을 받아오자.
administrator@vm01:~$ git clone https://github.com/ShinJaehun/puppet_vm.git
Cloning into 'puppet_vm'...
remote: Counting objects: 41, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 41 (delta 8), reused 41 (delta 8)
Unpacking objects: 100% (41/41), done.
puppet_vm이라는 디렉터리에 원격 저장소에서 받은 파일이 저장된다.
administrator@vm01:~$ cd puppet_vm/
administrator@vm01:~/puppet_vm$ ls
auth.conf environments fileserver.conf manifests modules puppet.conf
지금까지 내용을 그림으로 정리해보면 그림 11-23과 같다. 먼저 원본 저장소인 jaehun-shin/puppet_vm에서 프로젝트를 포크해서 ShinJaehun/puppet_vm을 생성했다. 포크한 원격 저장소의 프로젝트를 git clone 명령으로 로컬 시스템 vm01에 내려받았다.
그림 11-23 프로젝트 포크하고 로컬 시스템에 내려받기
다음은 원본 저장소에서 수정한 내용을 로컬 시스템에 반영하는 과정이다.

jaehun-shin 사용자가 호스트 losttemple에서 설정 파일을 수정하고 변경한 내용을 원격 저장소(원본 저장소)로 전송한다. 이 시스템의 원격 저장소 주소는 https://github.com/jaehun-shin/puppet_vm이다.

shinjaehun@losttemple:/etc/puppet$ git remote -v
origin https://github.com/jaehun-shin/puppet_vm.git (fetch)
origin https://github.com/jaehun-shin/puppet_vm.git (push)
Tip

깃 원격 저장소 주소를 등록하는 방법은 ‘깃허브에 사용자 등록하고 원격 저장소 생성하기’에서 소개한 바 있습니다.

매니페스트 파일 manifests/site.pp를 수정한다. 테스트 서버에 존재하던 file 리소스를 삭제했다.

node 'vm01.linuxmaster.com' {
   file {'/tmp/testserver':
        content => "This is a test server.\n",
   }
   include sshd
   include vim_upgrade
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.