-
Ansible 디버그(Debug)와 디버거(Debugger)Ansible 2021. 8. 29. 19:58
ansible을 사용하면서 수행 내역들이 보이지 않아 프로그램이 잘 실행되었는지
알 수 없어 직접 노드로 접속해서 수행된 내용이 잘 적용 됐는지 일일이 확인했다.
하지만 이러한 과정은 디버그와 디버거를 통해 쉽게 처리할 수 있다.
그런데 디버그와 디버거란 무엇일까?
디버그와 디버거는 언뜻보면 같은 의미 같지만 실제로 의미과 용도가 다르다.
< 디버그(Debug)란? >
프로그램의 정확성이나 논리적인 오류를 찾아내는 테스트 과정으로
작업 수행 이후에 내용 확인을 목적으로 한다.쉽게 말하면 playbook 이후에 결과를 확인하는 것이다.
< 디버거(Debugger)란? >다른 대상 프로그램을 테스트하고 디버그하는데 쓰이는 프로그램으로
프로젝트 중간에 발생한 에러를 수정하는 작업을 한다.
하지만 둘의 차이가 분명하게 와닿지 않는다. 직접 확인해보자.
다음은 노드가 mount되어 있는지 확인하는 ansible playbook이다.
1. 디버그
< mount_check.yml >
--- - name: Check mounting status for linux hosts: centOS:ubuntu gather_facts: no tasks: - name: linux nfs clients shell: mount | grep nfs_shared register: output # output이라는 register에 결과를 저장한다. - debug: var=output.stdout_lines # var에 output을 저장함으로써 작업이 끝난 후 보여준다.
ansible-playbook을 실행한다.
ansible-playbook mount_check.yml -k
ansible playbook 실행 후, output에 저장된 자세한 내용들을 볼 수 있다.
2. 디버거
< mount_check.yml >
--- - name: Check mounting status for linux hosts: centOS:ubuntu strategy: debug # 이 부분이 디버거를 위한 부분이다. gather_facts: no tasks: - name: linux nfs clients shell: moun | grep nfs_shared # 의도적으로 오타를 내어 moun으로 작성 register: output - debug: var=output.stdout_liness
ansible-playbook을 실행한다.
ansible-playbook mount_check.yml -k
오타를 내었으니 정상적으로 실행될리가 없다.
playbook을 취소하고 playbook을 재작성한 후, task를 실행할 수도 있지만
디버거 기능을 이용하여 이어서 작업해보자.
p task.args를 입력하면 params에 어느 부분에서 에러가 발생했는지 알 수 있다.
다음과 같이 _raw_params를 수정해준다.
이후 수정된 내용을 p task.args를 통해 재확인한다.
수정을 마무리했으면 redo를 통해 작업을 계속한다.
이 과정을 모든 노드에서 실행해준다.
디버거를 거쳐서 모든 노드에 mount 내용을 정상적으로 체크했다.
반응형'Ansible' 카테고리의 다른 글
Ansible: 디렉토리 구조와 커맨드 정리(feat. Vagrant) (0) 2021.09.18 Vagrant를 이용한 Minikube 환경 구성 (0) 2021.09.04 Ansible를 이용한 nfs 서버와 클라이언트 구성 (feat. CentOS) (0) 2021.08.26 Ansible를 이용한 Timezone 설정 (feat. CentOS) (0) 2021.08.26 Ansible를 이용한 nginx 설치 및 삭제 (feat. CentOS) (0) 2021.08.26