Ansible - 개발 디버깅 > Ansible 자료실

본문 바로가기
사이트 내 전체검색

Ansible 자료실

실습 Ansible - 개발 디버깅

페이지 정보

profile_image
작성자 snow
댓글 0건 조회 129회 작성일 24-11-08 17:04

본문


1. Ansible 개발자를 위한 디버깅 모듈 안내

이 게시글에서는 Ansible 개발자 디버깅 모듈에 대한 문서를 살펴보고, 예시만 안내드리는 글입니다.


1.1. 로컬 환경에서 모듈 디버깅

Ansible 모듈을 로컬에서 디버깅하기 위해선 특정 모듈 실행 중 중단점을 설정하고, 모듈이 실행되는 동안 문제를 파악할 수 있습니다.


1.1.1. 중단점 설정하기

모듈 코드에 아래와 같은 중단점 코드를 삽입하여 디버깅을 시작할 수 있습니다:

```python

import pdb; pdb.set_trace()

```

위 명령을 통해 모듈 실행 중 특정 위치에서 실행이 중단되며, 이후 터미널에서 디버깅을 진행할 수 있습니다.


1.1.2. 로컬 머신에서 모듈 실행하기

다음 명령을 통해 디버깅할 모듈을 실행합니다:

```bash

python -m pdb ./my_new_test_module.py ./args.json

```

이 명령은 로컬에서 지정된 모듈을 실행하고 인자로 JSON 파일을 전달하여 모듈 동작을 확인할 수 있습니다.


1.1.3. 예제 실행

예제를 통해 로컬 디버깅 방법을 확인할 수 있습니다.

```bash

echo '{"msg": "hello"}' | python ./my_new_test_module.py

```

위 명령을 실행하면 "msg"라는 인자를 포함한 모듈이 실행되며, 인자의 출력을 통해 모듈의 정상 동작 여부를 확인할 수 있습니다.


1.2. 원격 환경에서 모듈 디버깅

원격 환경에서 Ansible 모듈을 디버깅하기 위해서는 몇 가지 설정과 작업이 필요합니다. 아래 과정을 통해 원격 머신에서 실행되는 모듈을 효과적으로 디버깅할 수 있습니다.


1.2.1. ANSIBLE_KEEP_REMOTE_FILES 환경 변수 설정

다음과 같이 환경 변수를 설정하여 Ansible이 모듈을 원격 머신에 전송한 후에도 해당 파일을 삭제하지 않도록 할 수 있습니다:

```bash

export ANSIBLE_KEEP_REMOTE_FILES=1

```

이 변수는 Ansible 실행 시 사용된 임시 파일을 보존하여, 모듈 디버깅을 위해 파일을 다시 확인할 수 있게 해줍니다.


1.2.2. Playbook 실행 및 모듈 위치 확인

다음 명령을 통해 원격 모듈을 실행하고, 모듈 파일 위치를 확인할 수 있습니다:

```bash

ansible-playbook -i inventory playbook.yml -vvvv

```

위 명령의 -vvvv 옵션은 Ansible 실행 로그를 자세히 출력하며, 이때 모듈이 저장된 원격 디렉토리를 확인할 수 있습니다. 보통 `~/.ansible/tmp/ansible-tmp-...` 형태의 경로로 저장됩니다.


1.2.3. 원격 서버 접속 및 모듈 파일 추출

확인된 경로로 SSH를 통해 접속 후, Ansible이 전송한 파일을 다음과 같이 추출합니다:

```bash

python AnsiballZ_my_test_module.py explode

```

위 명령을 실행하면 `./debug-dir` 디렉토리로 모듈이 확장되며, 여기서 필요한 코드를 분석할 수 있습니다.


1.2.4. 추출된 모듈 실행

다음 명령을 통해 추출된 모듈을 직접 실행하고 디버깅을 진행할 수 있습니다:

```bash

cd debug-dir

chmod 755 __main__.py

./__main__.py args

```

이 명령은 모듈을 실행하며, 실제 원격 환경에서 모듈의 동작을 테스트하고 수정할 수 있는 유용한 방법입니다.


1.3. AnsibleModule 기반 모듈 디버깅

AnsibleModule을 사용한 모듈은 디버깅이 다소 복잡할 수 있습니다. 이를 해결하기 위해 Ansible에서는 특정 도구와 메서드를 제공하여, 모듈이 포함된 파일을 분리하고 분석할 수 있도록 돕습니다.


1.3.1. 파일 분리 및 디버깅 세션 시작

ANSIBLE_KEEP_REMOTE_FILES 환경 변수를 설정하여 파일을 보존하고, Ansible이 생성한 파일을 다음과 같이 분석할 수 있습니다:

```bash

ansible localhost -m ping -a 'data=debugging_session' -vvv

```

위 명령을 실행하면, Ansible은 로컬에서 임시 파일을 생성하고 해당 파일 경로를 출력합니다. 해당 파일을 통해 모듈 코드와 전달된 인자를 확인할 수 있습니다.


1.3.2. 모듈 코드 분석

확인된 임시 파일의 경로에서 모듈 코드를 분석합니다. 아래 명령을 통해 파일을 분리하여 각각의 모듈 파일을 확인할 수 있습니다:

```bash

python /home/badger/.ansible/tmp/ansible-tmp-1461434734.35-235318071810595/ping explode

```

이 명령을 실행하면 `debug_dir` 디렉토리에 ansible_module_ping.py와 args 파일이 생성됩니다. 각각의 파일을 분석하고, 모듈의 기능을 확인할 수 있습니다.


1.3.3. 모듈 실행 및 인자 수정

분리된 파일을 실행하여 모듈이 정상 동작하는지 확인할 수 있습니다. 인자 파일을 수정하거나 코드에 변화를 준 후, 다음 명령을 통해 실행합니다:

```bash

python /home/badger/.ansible/tmp/ansible-tmp-1461434734.35-235318071810595/ping execute

```

이 명령은 수정된 파일을 기반으로 모듈을 실행하며, args 파일을 통해 전달된 인자와 함께 모듈 동작을 확인할 수 있습니다.


1.4. 주의 사항

Ansible 디버깅 중 excommunicate 명령을 통해 모듈을 실행할 수도 있습니다. 이 경우 원래의 Ansible 실행 방식과 달라질 수 있으며, 모든 모듈에서 동일한 결과를 보장하지 않으므로 주의가 필요합니다.

위의 과정은 Ansible 모듈을 디버깅하며 원격 환경에서의 설정 및 오류 수정에 유용합니다. 이를 통해 Ansible의 모듈을 효과적으로 개발하고 배포 환경에서 예상하지 못한 오류를 사전에 파악할 수 있습니다.

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : (주)리눅스데이타시스템
대표이사 : 정정모
본사 : 강남구 봉은사로 114길 40 홍선빌딩 2층
- tel : 02-6207-1160
대전지사 : 유성구 노은로174 도원프라자 5층
- tel : 042-331-1161

접속자집계

오늘
651
어제
1,408
최대
3,935
전체
1,152,365
Copyright © www.linuxdata.org All rights reserved.