#ansible
#ansible
Вопрос:
Я добавляю пользователей в роль, которая работала до нескольких дней без проблем. Сегодня он завершается с DeprecationWarning: the imp module is deprecated
ошибкой. Я предполагаю, что проблема была вызвана переходом на использование python3 ( ansible_python_interpreter: "/usr/bin/python3"
что мне пришлось сделать, чтобы избежать предупреждения о загрузке модуля apt …).
Задача:
- name: Add the user xxx with uid xx and add to sudo
user:
name: xx
comment: xx xx xx
uid: xx
shell: /bin/bash
groups: sudo
generate_ssh_key: yes
password: $6$U/xxx
Могу ли я что-нибудь изменить в задаче, чтобы избежать проблемы?
Есть ли способ избежать предупреждения? Я использовал arg: warning: false
в другом контексте, но не вижу, как его использовать здесь.
[19:44:50] createUsers : Add the user frankadmin with uid 1000 and add to sudo | seon | FAILED | 1.39s
{
- rc: 1
- msg: MODULE FAILURE
See stdout/stderr for the exact error
- module_stdout: /home/frankadmin/.ansible/tmp/ansible-tmp-1607971490.3432899-221136005152758/AnsiballZ_user.py:17: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
import imp
Traceback (most recent call last):
File "/tmp/ansible_user_payload_h5rh5z0f/ansible_user_payload.zip/ansible/module_utils/basic.py", line 279, in get_distribution
AttributeError: module 'platform' has no attribute '_supported_dists'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/frankadmin/.ansible/tmp/ansible-tmp-1607971490.3432899-221136005152758/AnsiballZ_user.py", line 113, in <module>
_ansiballz_main()
File "/home/frankadmin/.ansible/tmp/ansible-tmp-1607971490.3432899-221136005152758/AnsiballZ_user.py", line 105, in _ansiballz_main
invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
File "/home/frankadmin/.ansible/tmp/ansible-tmp-1607971490.3432899-221136005152758/AnsiballZ_user.py", line 48, in invoke_module
imp.load_module('__main__', mod, module, MOD_DESC)
File "/usr/lib/python3.8/imp.py", line 234, in load_module
return load_source(name, filename, file)
File "/usr/lib/python3.8/imp.py", line 169, in load_source
module = _exec(spec, sys.modules[name])
File "<frozen importlib._bootstrap>", line 604, in _exec
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/tmp/ansible_user_payload_h5rh5z0f/__main__.py", line 2611, in <module>
File "/tmp/ansible_user_payload_h5rh5z0f/__main__.py", line 2516, in main
File "/tmp/ansible_user_payload_h5rh5z0f/__main__.py", line 403, in __new__
File "/tmp/ansible_user_payload_h5rh5z0f/ansible_user_payload.zip/ansible/module_utils/basic.py", line 337, in load_platform_subclass
File "/tmp/ansible_user_payload_h5rh5z0f/ansible_user_payload.zip/ansible/module_utils/basic.py", line 289, in get_distribution
AttributeError: module 'platform' has no attribute 'dist'
- module_stderr: Shared connection to 10.0.0.70 closed.
- changed: False
Информация о моей версии контроллера:
ansible —версия ansible 2.7.7 конфигурационный файл = /etc/ansible/ansible.cfg путь поиска настроенного модуля = [‘/home/frank/.ansible/plugins/modules’, ‘/usr/ share/ansible/plugins/modules’] расположение модуля ansible python = /usr/ lib/python3/dist-packages/ansible расположение исполняемого файла = /usr/bin/ansible версия python = 3.7.3 (по умолчанию, июль 25 2020, 13:03:44) [ ССАГПЗ 8.3.0]
Ответ №1:
При редактировании вопроса я понял, что моя ansible
версия актуальна Debian buster
, но не совсем актуальна. Я установил версию 2.9.3 с 2.9.6 (из buster backports), которая решила основную проблему (устаревший «imp»).
Я оставляю вопрос в надежде, что он будет полезен для других, работающих с тем же сообщением об ошибке.