При выполнении плейбука ниже:
- name: GetProcessList with sysnr
community.sap_libs.sap_control_exec:
hostname: all
sysnr: "00"
function: GetProcessList
Я получаю следующую ошибку:
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ModuleNotFoundError: No module named 'suds'
fatal: [hostname]: FAILED! => changed=false
msg: Failed to import the required Python library (suds) on hostname's Python /usr/bin/python3. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter
После выполнения с опцией -vvvv я получаю следующую информацию:
The full traceback is:
Traceback (most recent call last):
File "/tmp/ansible_community.sap_libs.sap_control_exec_payload_da6n801n/ansible_community.sap_libs.sap_control_exec_payload.zip/ansible_collections/community/sap_libs/plugins/modules/sap_control_exec.py", line 264, in <module>
ModuleNotFoundError: No module named 'suds'
fatal: [hostname]: FAILED! => changed=false
invocation:
module_args:
force: false
function: GetProcessList
hostname: hostname
parameter: null
password: null
port: null
sysnr: '"00"'
username: null
msg: Failed to import the required Python library (suds) on hostname's Python /usr/bin/python3. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter
Я попытался установить suds с помощью pip install suds-py3
, но, похоже, это не решило проблему. Итак, я немного озадачен. Нужно ли устанавливать дополнительные модули?
Любая помощь будет оценена. Возможно, я упускаю что-то очевидное.
Спасибо!
Проблема, скорее всего, вызвана тем, что библиотека установлена на хосте ansible-контроллера (где вы выполняете ansible), а не на хосте, который вы настраиваете (указан в инвентаре и hosts:
игры).
Рекомендую включить что-то вроде этого
- name: Fallback in case of errors in pip version detection
block:
- name: Get pip version
command: '{{ ansible_python_interpreter | default("python3") }} -m pip --version'
register: pip_version
# stdout: pip 24.0 from /home/myuser/.local/lib/python3.11/site-packages/pip (python 3.11)
- name: Extract pip version from the stdout
set_fact:
pip_version: '{{ pip_version.stdout | regex_search("pip ([0-9.]+)") | split(" ") | last }}'
rescue:
- name: Assume a recent pip version
set_fact:
pip_version: 21.3
- name: Suds library is installed
pip:
name: suds-py3
extra_args: '{{ "--break-system-packages" if pip_version is version("21.3", "> = ") else "" }}'
перед вашей задачей, чтобы убедиться, что необходимая библиотека всегда установлена.
Более того, таким образом он обязательно будет установлен для используемого в данный момент Python Ansible (см. ansible_python_interpreter)