Ansible

Ansible 사용시 유용한 디버그 기능

Joon0464 2021. 7. 20. 12:38

 

[응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant) 대시보드 - 인프런 | 강의 (inflearn.com)

 

[응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant) - 인프런 | 강의

센트OS 이외에 얼마나 다양한 시스템에 엔서블이 사용될 수 있는지 배워봅시다. 앤서블을 리눅스 이외에 윈도우 및 네트워크 시스템과 같은 여러가지 시스템에 대해서 다양한 목적으로 사용하

www.inflearn.com

디버그와 디버거기능 추가

디버그와 디버거를 사용하면 playbook내의 오류를 보다 쉽게 찾아내고 수정하여 빠르게 고칠 수 있다는 장점이 있다.

- name: Check monitoring status for linux
  hosts: CentOS:Ubuntu
  gather_facts: no

  tasks:
    - name: linux NFS client
      shell: mount | grep nfs_shared
      register: output
    - debug:
        var: output.stdout_lines

- name: Check mounting status for windows
  hosts: Win
  strategy: debug
  gather_facts: no

  tasks:
    - name: Windows NFS client
      win_command: mount
      register: output
    - debug:
        var: output.stdout_lines

이전에 작성했던 nfs.yml에 위의 디버그 내용을 추가한다.

리눅스에서의 shell 모듈과 윈도우에서의 win_command로 mount 명령어를 사용하여 테스트를 진행하는 코드이다.

shell과 win_command에 의해 mount 명령어가 실행되고 해당 결과를 저장하는 공간을 설정하고 저장하는 역할을 register 모듈을 통해 하게된다.

register는 계산값, 결과값에 대한 임시보관이다.

해당 register를 debug 모듈에서 var에 집어넣는다. 그러면 debug 모듈에서 해당 값을 출력한다. 여기서 stdout_lines는 결과값중 하나를 말한다.

또한 "strategy: debug" 가 설정되어 있으면 해당 플레이북에서 오류 발생시 디버거 모드로 전환하게 된다.

디버그 테스트

anp nfs.yml -k

수정된 nfs.yml 플레이북을 실행한다.

플레이북을 실행하면 디버그가 정상적으로 작동하여 결과가 출력된다.

 

디버거 기능 사용해보기

 

일부러 오류를 내보기 위해서 win_command 부분의 mount 명령어를 위와 같이 수정한다.

anp nfs.yml -k

수정된 nfs.yml 플레이북을 다시 실행한다.

문제가 발생하여 디버거 모드로 전환된다.

p task.args를 입력하면 아래부분에 어디서 오류가 발생했는지 출력된다.

task.args 명령어를 사용하여 오류가 발생한 부분을 mount로 수정하고 p task.args로 다시 확인하면 해당 부분이 mount로 변경된 것을 볼 수 있다.

redo를 입력하면 오류가 발생했던 지점부터 플레이북을 실행하게 된다.

즉 다시 처음부터 플레이북을 실행하지 않아도 되므로 더 빠르게 진행이 가능하다.