ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 내용을 정상적으로 체크했다. 

    반응형

    댓글

Designed by Tistory.