Как избежать ошибки в ansible user при добавлении пользователя: устаревший «imp»

#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»).

Я оставляю вопрос в надежде, что он будет полезен для других, работающих с тем же сообщением об ошибке.