더북(TheBook)

작업 되돌리기

매니페스트 파일 /etc/puppet/manifests/site.pp를 vi로 열어서 테스트 서버 노드에 이름만으로도 수상해 보이는 danger_module 모듈을 추가합니다.

node 'vm01.linuxmaster.com' {
   file {'/tmp/testserver':
         content => "This is a test server.\n",
   }
   include sshd
   include danger_module
}

한 가지 상황을 가정해봅시다. puppet apply 명령을 실행해서 적용해보니 danger_module 때문에 문제가 발생해서, danger_module을 포함시키기 전 상태로 되돌리고 싶다고 해봅시다. 파일을 수정했기 때문에 작업 디렉터리에는 manifests/site.pp 파일이 수정된 상태로 남아 있는 상황입니다.

shinjaehun@losttemple:/etc/puppet$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
# modified:   manifests/site.pp
#
no changes added to commit (use "git add" and/or "git commit -a")

힌트는 git status 결과에 나와 있습니다. 작업 디렉터리에서 해당 파일의 변경 내용을 취소하려면 git checkout -- [파일] 명령을 실행합니다. git status로 확인해보면 작업 디렉터리가 깨끗이 비어있는, 수정 이전으로 되돌아간 상태를 확인할 수 있습니다. 더 정확하게 얘기하자면 작업 디렉터리 변경 내용은 취소되고, 준비 영역의 변경 내용은 유지되며, 저장소 파일은 그대로 유지됩니다.

shinjaehun@losttemple:/etc/puppet$ sudo git checkout -- manifests/site.pp
shinjaehun@losttemple:/etc/puppet$ git status 
# On branch master
nothing to commit (working directory clean)
이렇게 하세요!

되돌려야 할 파일이 하나 이상일 때는 다음과 같이 ‘git checkout -- .’ 명령을 사용하면 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.