Вопрос или проблема
Постоянно возникает ошибка импорта библиотеки Python ansible-pylibssh на Red Hat при попытке запустить простой плейбук для Cisco.
Не удалось импортировать требуемую библиотеку Python (ansible-pylibssh) в Python /usr/bin/python3.12 на devc-ansible-01. Пожалуйста, ознакомьтесь с документацией модуля и установите его в соответствующее место. Если требуемая библиотека установлена, но Ansible использует неправильный интерпретатор Python, пожалуйста, обратитесь к документации по ansible_python_interpreter.
Вот мой плейбук:
---
- name: показать версию
hosts: маршрутизаторы
gather_facts: false
connection: network_cli
vars:
ansible_network_os: ios
tasks:
- name: выполнить команду show version
ios_command:
commands:
- sh ip interface brief
В моем файле ansible.cfg указано:
`interpreter_python = /usr/bin/python3.
ansible_python_interpreter: /usr/bin/python3
host_key_checking = False
`
Вот вывод команды ansible –version:
ansible --version ansible [core 2.16.3] конфигурационный файл = /etc/ansible/ansible.cfg настроенный путь поиска модулей = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] местоположение модуля Python ansible = /usr/lib/python3.12/site-packages/ansible местоположение коллекций ansible = /home/user/.ansible/collections:/usr/share/ansible/collections местоположение исполняемого файла = /usr/bin/ansible
А вот вывод команды pip3 show ansible-pylibssh:
[ansible-01 playbooks]$ pip3 show ansible-pylibssh
Имя: ansible-pylibssh
Версия: 1.2.0.post4
Резюме: Привязки Python для клиента libssh, специфичные для использования с Ansible
Домашняя страница: https://github.com/ansible/pylibssh
Автор: Ansible, Inc.
Email автора: info+github/ansible/[email protected]
Лицензия: LGPLv2+
Положение: /home/user/.local/lib/python3.11/site-packages
Требуется:
Необходимые для:
Я не знаю, почему это не работает.
Я установил пакеты, о которых ругается машина, и даже добавил интерпретатор, но плейбук все равно не срабатывает.
Ответ или решение
Для решения проблемы с импортом библиотеки ansible-pylibssh
на Red Hat при запуске вашего плейбука, выполните следующие шаги:
-
Проверьте версию Python: Убедитесь, что библиотека
ansible-pylibssh
установлена для той версии Python, которую использует Ansible. Судя по вашему выводу, Ansible работает с Python 3.12, а библиотека установлена в Python 3.11. Это может вызывать конфликты.Для этого вы можете проверить используемую версию Python следующей командой:
python3 --version
-
Установите библиотеку
ansible-pylibssh
для правильной версии Python: Чтобы установить библиотеку для Python 3.12, используйте следующую команду:pip3 install ansible-pylibssh
Убедитесь, что вы используете
pip3
, который соответствует версии Python 3.12. Это можно проверить, выполнив команду:/usr/bin/python3.12 -m pip install ansible-pylibssh
-
Проверьте файл
ansible.cfg
: Убедитесь, что ваш файлansible.cfg
правильно настроен. Попробуйте добавить параметрinterpreter_python
в секции[defaults]
:[defaults] interpreter_python = /usr/bin/python3.12 host_key_checking = False
-
Проверьте переменную
ansible_python_interpreter
: Вы можете задать интерпретатор Python непосредственно в вашем плейбуке, добавив переменную. Например:- name: show version hosts: routers gather_facts: false connection: network_cli vars: ansible_network_os: ios ansible_python_interpreter: /usr/bin/python3.12
-
Проверьте права доступа: Убедитесь, что пользователь, от имени которого вы запускаете Ansible, имеет необходимые права доступа для использования Python и установленных библиотек.
-
Перезапустите Ansible: После выполнения всех шагов, попробуйте снова запустить ваш плейбук:
ansible-playbook ваш_плейбук.yml
После выполнения этих шагов ваша проблема с импортом библиотеки ansible-pylibssh
должна быть решена. Если ошибка все еще возникает, проверьте вывод команд на наличие других возможных проблем или зависимостей.