실습 Ansible - 개발 디버깅
페이지 정보
본문
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의 모듈을 효과적으로 개발하고 배포 환경에서 예상하지 못한 오류를 사전에 파악할 수 있습니다.
관련링크
- 이전글Ansible - 모듈 형식 및 문서 24.11.15
- 다음글Ansible와 Python 24.11.01
댓글목록
등록된 댓글이 없습니다.