소개
Ansible 은 시스템 관리자 및 개발자가 구성 관리, 애플리케이션 배포, 오케스트레이션과 같은 복잡한 작업을 단순화하기 위해 사용하는 강력한 자동화 도구입니다. 그러나 Ansible 을 사용할 때 'No module named 'ansible'' 오류가 발생할 수 있으며, 이로 인해 도구를 효과적으로 사용할 수 없게 됩니다.
이 Lab 에서는 이 일반적인 오류를 이해하고, 문제 해결하고, 해결하는 과정을 안내합니다. 이 튜토리얼을 마치면 제대로 작동하는 Ansible 환경을 갖게 되며, 앞으로 이 문제를 방지하는 방법을 이해하게 될 것입니다.
'No module named 'ansible'' 오류 진단
'No module named 'ansible'' 오류는 Python 이 검색 경로에서 Ansible 모듈을 찾을 수 없을 때 발생합니다. 무슨 일이 일어나고 있는지, 그리고 문제를 진단하는 방법을 알아보겠습니다.
Python 모듈 임포트 이해
Ansible 명령을 실행하면 Python 은 Ansible 모듈을 임포트하려고 시도합니다. Python 이 이 모듈을 찾을 수 없으면 다음과 같은 오류가 발생합니다.
ImportError: No module named 'ansible'
이 오류는 다음 이유로 발생합니다.
- Ansible 이 설치되지 않음
- Ansible 이 설치되었지만 현재 Python 환경에 없음
- 서로 다른 Python 버전 간의 충돌
현재 설치 상태 확인
시스템에 Ansible 이 설치되어 있는지 확인해 보겠습니다.
ansible --version
Ansible 이 설치되어 있지 않으면 다음과 같은 오류가 표시됩니다.
Command 'ansible' not found, but can be installed with:
sudo apt install ansible
또한 어떤 Python 버전을 사용하고 있는지 확인해 보겠습니다.
python3 --version
다음과 유사한 출력을 볼 수 있습니다.
Python 3.10.12
이제 Ansible 모듈이 Python 환경에 있는지 확인합니다.
python3 -c "import ansible; print('Ansible is installed')"
문제 해결을 위해 살펴보고 있는 오류 메시지가 표시되면 다음과 같습니다.
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named 'ansible'
이는 Python 이 Ansible 모듈을 찾을 수 없음을 확인합니다.
패키지 상태 확인
설치된 패키지 목록에 Ansible 패키지가 있는지 확인해 보겠습니다.
pip3 list | grep ansible
아무것도 반환되지 않으면 pip 를 통해 Ansible 이 설치되지 않았음을 의미합니다. 시스템 패키지 관리자를 통해 설치되었는지도 확인해 보겠습니다.
dpkg -l | grep ansible
이제 문제를 진단했으므로 다음 단계에서 Ansible 을 올바르게 설치하는 방법을 진행할 수 있습니다.
Ansible 올바르게 설치하기
이제 문제를 진단했으므로 Ansible 을 올바르게 설치해 보겠습니다. 시스템 패키지 관리자를 사용하는 방법과 pip 를 사용하는 두 가지 방법을 살펴보겠습니다.
방법 1: APT 를 통해 Ansible 설치 (초보자에게 권장)
Ubuntu 에 Ansible 을 설치하는 가장 쉬운 방법은 APT 패키지 관리자를 사용하는 것입니다.
- 먼저, 패키지 목록을 업데이트합니다.
sudo apt update
- Ansible 을 설치합니다.
sudo apt install -y ansible
이 명령은 Ansible 과 모든 종속성을 설치합니다. 설치가 완료된 후 Ansible 이 올바르게 설치되었는지 확인합니다.
ansible --version
다음과 유사한 출력을 볼 수 있습니다.
ansible [core 2.12.0]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
jinja version = 3.0.3
libyaml = True
이는 Ansible 이 설치되었음을 확인하고 Python 버전 및 모듈 위치와 같은 중요한 세부 정보를 보여줍니다.
방법 2: PIP 를 통해 Ansible 설치
특정 버전의 Ansible 이 필요하거나 가상 환경 내에 설치하려는 경우 pip 를 사용할 수 있습니다.
pip3 install ansible
설치를 확인합니다.
ansible --version
오류가 해결되었는지 테스트
이제 Ansible 이 설치되었으므로 Ansible 모듈을 직접 임포트하여 오류가 해결되었는지 확인해 보겠습니다.
python3 -c "import ansible; print('Ansible is installed successfully')"
다음과 같은 출력을 볼 수 있습니다.
Ansible is installed successfully
이는 Python 이 이제 Ansible 모듈을 찾아서 임포트할 수 있음을 나타내며, 원래 오류를 해결합니다.
Ansible 이 설치된 위치 이해
Ansible 이 설치된 위치를 더 잘 이해하려면 다음을 실행합니다.
which ansible
이는 Ansible 실행 파일의 경로를 표시하며, 일반적으로 다음과 같습니다.
/usr/bin/ansible
그리고 Python 모듈이 있는 위치를 보려면 다음을 실행합니다.
python3 -c "import ansible; print(ansible.__file__)"
이는 다음과 유사한 내용을 표시합니다.
/usr/lib/python3/dist-packages/ansible/__init__.py
이제 Ansible 을 성공적으로 설치했으므로 모든 것이 제대로 작동하는지 확인하기 위해 기본 구성을 만드는 것으로 넘어가겠습니다.
기본 Ansible 구성 만들기
이제 Ansible 이 올바르게 설치되었으므로 모든 것이 제대로 작동하는지 확인하기 위해 기본 구성을 만들어 보겠습니다. 간단한 인벤토리 파일과 Ansible 설치를 테스트하기 위한 플레이북을 만들 것입니다.
인벤토리 파일 만들기
인벤토리 파일은 Ansible 에 관리할 호스트를 알려줍니다. 테스트를 위해 localhost 를 대상으로 하는 간단한 인벤토리 파일을 만들겠습니다.
- 프로젝트 디렉토리로 이동합니다.
cd ~/project
- Ansible 파일을 위한 새 디렉토리를 만듭니다.
mkdir ansible-test
cd ansible-test
- 인벤토리 파일을 만듭니다.
echo "localhost ansible_connection=local" > inventory
이 인벤토리 파일은 로컬 연결 (SSH 없이) 을 사용하여 로컬 머신을 관리하려는 것을 지정합니다.
간단한 플레이북 만들기
이제 Ansible 설치를 테스트하기 위한 간단한 플레이북을 만들어 보겠습니다.
test-playbook.yml이라는 파일을 만듭니다.
touch test-playbook.yml
- 편집기에서 파일을 열고 다음 내용을 추가합니다.
---
- name: Test Ansible Installation
hosts: localhost
gather_facts: no
tasks:
- name: Print a message
debug:
msg: "Ansible is working correctly!"
- name: Get Python version
command: python3 --version
register: python_version
- name: Display Python version
debug:
var: python_version.stdout
이 플레이북에는 세 가지 작업이 포함되어 있습니다.
- Ansible 이 작동하는지 확인하기 위해 메시지를 인쇄합니다.
- Python 버전을 가져오기 위해 명령을 실행합니다.
- Python 버전을 표시합니다.
플레이북 실행
이제 플레이북을 실행하여 Ansible 설치를 테스트해 보겠습니다.
ansible-playbook -i inventory test-playbook.yml
다음과 유사한 출력을 볼 수 있습니다.
PLAY [Test Ansible Installation] *******************************
TASK [Print a message] *****************************************
ok: [localhost] => {
"msg": "Ansible is working correctly!"
}
TASK [Get Python version] **************************************
changed: [localhost]
TASK [Display Python version] **********************************
ok: [localhost] => {
"python_version.stdout": "Python 3.10.12"
}
PLAY RECAP ****************************************************
localhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
이는 다음을 확인합니다.
- Ansible 이 올바르게 작동합니다.
- 'No module named ansible' 오류가 해결되었습니다.
- Ansible 플레이북을 성공적으로 실행할 수 있습니다.
Ansible 구성 이해
Ansible 은 구성 파일을 사용하여 동작을 결정합니다. Ansible 이 구성을 찾는 위치를 살펴보겠습니다.
ansible-config dump --only-changed
이는 기본값과 다른 구성 설정을 보여줍니다.
유효한 구성을 보려면 다음을 실행합니다.
ansible --version
이는 구성 파일의 위치, 모듈 검색 경로 및 기타 중요한 세부 정보를 보여줍니다.
축하합니다! 다음을 성공적으로 수행했습니다.
- 'No module named ansible' 오류 진단
- Ansible 을 올바르게 설치
- 기본 Ansible 플레이북을 만들고 실행
이는 오류가 해결되었고 Ansible 환경이 제대로 작동함을 확인합니다.
요약
이 랩에서는 Ansible 을 사용할 때 흔히 발생하는 문제인 'No module named 'ansible'' 오류를 진단하고 해결하는 방법을 배웠습니다. 다음 기술을 습득했습니다.
- Python 모듈 임포트가 Ansible 과 어떻게 작동하는지 이해
- Ansible 설치 문제 진단
- 다양한 방법을 사용하여 Ansible 을 올바르게 설치
- 기본 Ansible 구성 만들기
- 간단한 플레이북으로 Ansible 환경 확인
이러한 기술은 더 복잡한 자동화 시나리오에서 Ansible 을 사용하는 데 탄탄한 기반을 제공합니다. Ansible 이 제대로 작동하려면 올바른 Python 환경을 유지하는 것이 중요하며, 이제 일반적인 설치 문제를 해결하고 해결하는 데 필요한 지식을 갖추게 되었습니다.
향후 유사한 모듈 관련 오류가 발생하면 동일한 진단 접근 방식을 적용하여 근본 원인을 효율적으로 식별하고 해결할 수 있습니다.


