Как устранить предупреждение при запуске Ansible: [WARNING]: Пропуск плагина, так как он кажется недействительным?

Вопрос или проблема

Когда я запускаю команду ansible, вот так:

ansible -i host all -m ping

Я получаю такие предупреждения:

[WARNING]: Skipping plugin (/usr/lib/python2.7/dist-packages/ansible/plugins/callback/foreman.py) as it seems to be invalid: from_buffer() cannot return the address of the raw string within a str or unicode or bytearray object
[WARNING]: Skipping plugin (/usr/lib/python2.7/dist-packages/ansible/plugins/callback/grafana_annotations.py) as it seems to be invalid: from_buffer() cannot return the address of the raw string within a str or unicode or bytearray object
[WARNING]: Skipping plugin (/usr/lib/python2.7/dist-packages/ansible/plugins/callback/hipchat.py) as it seems to be invalid: from_buffer() cannot return the address of the raw string within a str or unicode or bytearray object
[WARNING]: Skipping plugin (/usr/lib/python2.7/dist-packages/ansible/plugins/callback/nrdp.py) as it seems to be invalid: from_buffer() cannot return the address of the raw string within a str or unicode or bytearray object
[WARNING]: Skipping plugin (/usr/lib/python2.7/dist-packages/ansible/plugins/callback/slack.py) as it seems to be invalid: from_buffer() cannot return the address of the raw string within a str or unicode or bytearray object
[WARNING]: Skipping plugin (/usr/lib/python2.7/dist-packages/ansible/plugins/callback/splunk.py) as it seems to be invalid: from_buffer() cannot return the address of the raw string within a str or unicode or bytearray object
[WARNING]: Skipping plugin (/usr/lib/python2.7/dist-packages/ansible/plugins/callback/sumologic.py) as it seems to be invalid: from_buffer() cannot return the address of the raw string within a str or unicode or bytearray object

Почему это происходит и как я могу убрать это предупреждение?

Параметры сервера:
ansible version – 2.9
OS version – Ubuntu 16.04

Похоже на устаревание Python 2.

ansible --version

если вы видите

python version = 2.x.x (…)

Вы должны изменить среду выполнения Ansible на Python 3.

Смена среды выполнения Ansible довольно сложна, безопаснее обновить ОС до версии, которая поддерживает только Python 3. Но это также может быть сложно, если вам нужно использовать какое-либо другое программное обеспечение, зависящее от Python 2.

Ответ или решение

Почему появляются предупреждения Ansible и как их устранить?

Теория

Когда вы запускаете команду Ansible и видите предупреждение об "устаревших" или "недействительных" плагинах, это может быть связано с несколькими факторами. Чаще всего причина кроется в несовместимости версий — Ansible, Python или самого плагина. Вы используете Ansible версии 2.9 в связке с Ubuntu 16.04, где по умолчанию используется Python 2.7. Исходя из вашего описания проблемы и сообщений об ошибках, можно заключить, что эта проблема связана именно с устаревшей версией Python 2, которая больше не поддерживается и имеет ограниченные возможности работы с современными библиотеками и структурами данных.

В сообщениях об ошибках указывается, что Ansible пытается загрузить плагины из директории с Python 2.7, но не может правильно интерпретировать данные из объектов типа строка (str), юникод (unicode) или bytearray. Это указывает на несовместимость алгоритмов обработки данных между Python 2 и современными требованиями Ansible.

Пример

Ansible версии 2.9 получил важные улучшения, но все еще поддерживает работу с Python 2.7. Однако в более поздних версиях Ansible основные изменения происходят вокруг Python 3, так как поддержка Python 2 официально завершилась. Это значит, что новые функции и плагины могут использовать возможности Python 3, которые недоступны на Python 2.

Предположим, что у вас остается необходимость использовать старую версию Ubuntu с Python 2.7. В этом случае могут возникнуть трудности с обеспечением полной функциональности всех плагинов Ansible, особенно при интеграции с современными системами мониторинга и отчетности, такими как Grafana или Slack.

Применение

Для устранения данной проблемы требуется выполнить несколько шагов, включая обновление окружения и адаптацию конфигурации Ansible. Вот рекомендации, которые помогут вам справиться с этим:

  1. Переход на Python 3:

    • В первую очередь, рекомендуется обновить версию Python до 3.6 и выше. Ansible версии 2.9 и новее работают с Python 3 без проблем, и это позволит избежать проблем совместимости. Вы можете установить новую версию Python и указать Ansible использовать именно её.
    • Установите Python 3: sudo apt-get install python3.
    • Определите версию Python по умолчанию: update-alternatives --install /usr/bin/python python /usr/bin/python3 1.
  2. Обновление Ansible:

    • Обновите Ansible до последней стабильной версии, которая по умолчанию будет работать с Python 3: pip3 install ansible --upgrade.
  3. Переконфигурация Ansible:

    • Проверьте файл настроек Ansible ansible.cfg, чтобы убедиться, что указана правильная версия интерпретатора Python:
      [defaults]
      interpreter_python = /usr/bin/python3
    • Удалите или обновите любую связанную библиотеку или плагин, если они зависят от Python 2.
  4. Проверка и тестирование:

    • После выполнения вышеперечисленных шагов проверьте работу Ansible и его плагинов. Запустите пару тестовых задач, чтобы убедиться, что не возникает никаких ошибок или предупреждений.
  5. Планирование дальнейших обновлений:

    • Рассмотрите возможность обновления вашего сервера до более новой версии Ubuntu, которая предлагает официальную поддержку Python 3, как более долгосрочное решение. Это значительно упростит управление зависимостями и снижает риски взрыва технического долга.

Следуя этим предписаниям, вы сможете устранить предупреждения, которые мешали нормальной работе Ansible на вашей системе, и обеспечить более стабильную и надежную работу всех автоматизированных процессов, связанных с инструментами управления конфигурациями.

Оцените материал
Добавить комментарий

Капча загружается...