Поддержка Python 3
Ansible 2.5 и выше работают с Python 3. До версии 2.5 использование Python 3 считалось техническим предварительным просмотром. В данном разделе рассматривается, как настроить узел управления и управляемые машины для использования Python 3.
См. Требования к узлу управления и Требования к управляемым узлам для получения информации о поддерживаемых версиях.
На стороне узла управления
Самый простой способ запуска /usr/bin/ansible под Python 3 — установить его с помощью pip версии Python3. Это позволит по умолчанию запускать /usr/bin/ansible с Python3:
$ pip3 install ansible $ ansible --version | grep "python version" python version = 3.10.5 (main, Jun 9 2022, 00:00:00) [GCC 12.1.1 20220507 (Red Hat 12.1.1-1)] (/usr/bin/python)
Если вы используете Ansible ветку разработки из репозитория и хотите использовать Python 3 со своим локальным кодом, запустите свою команду через python3. Например:
$ source ./hacking/env-setup $ python3 $(which ansible) localhost -m ping $ python3 $(which ansible-playbook) sample-playbook.yml
Примечание
Пакеты отдельных дистрибутивов Linux могут быть упакованы для Python2 или Python3. При запуске из пакетов дистрибутива вы сможете использовать Ansible только с той версией Python, для которой он был установлен. Иногда дистрибутивы предоставляют возможность установки для нескольких версий Python (через отдельный пакет или через некоторые команды, выполняемые после установки). Вам необходимо проверить у своего дистрибутива, применима ли эта возможность в вашем случае.
Использование Python 3 на управляемых машинах с командами и playbook
- Ansible автоматически обнаружит и будет использовать Python 3 на многих платформах, поставляемых с ним. Для явной настройки интерпретатора Python 3 установите переменную инвентаризации
ansible_python_interpreterна уровне группы или узла в расположение интерпретатора Python 3, например /usr/bin/python3. Путь к интерпретатору по умолчанию также может быть задан вansible.cfg.
См. также
Обнаружение интерпретатора для получения дополнительной информации.
# Example inventory that makes an alias for localhost that uses Python3 localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3 # Example of setting a group of hosts to use Python3 [py3_hosts] ubuntu16 fedora27 [py3_hosts:vars] ansible_python_interpreter=/usr/bin/python3
См. также
Как создать инвентарь для получения дополнительной информации.
- Запустите свою команду или playbook:
$ ansible localhost-py3 -m ping $ ansible-playbook sample-playbook.yml
Обратите внимание, что вы также можете использовать опцию командной строки -e для ручного задания интерпретатора Python при запуске команды. Это может быть полезно, если вы хотите проверить наличие ошибок в определенном модуле или playbook под Python 3. Например:
$ ansible localhost -m ping -e 'ansible_python_interpreter=/usr/bin/python3' $ ansible-playbook sample-playbook.yml -e 'ansible_python_interpreter=/usr/bin/python3'
Что делать, если обнаружена несовместимость
Мы потратили несколько релизов на устранение ошибок и добавление новых тестов, чтобы основной функционал Ansible работал как под Python 2, так и под Python 3. Однако ошибки могут все еще существовать в особых случаях, и многие модули, поставляемые с Ansible, поддерживаются сообществом, и не все из них могут быть портированы.
Если вы обнаружите ошибку при работе под Python 3, вы можете отправить отчет об ошибке в проекте Ansible на GitHub. Убедитесь, что вы упомянули Python3 в отчете об ошибке, чтобы соответствующие люди обратили на него внимание.
Если вы хотите исправить код и отправить запрос на вытягивание (pull request) на GitHub, вы можете обратиться к Ansible и Python 3 за информацией о том, как мы устраняем распространённые проблемы совместимости Python3 в кодовой базе Ansible.
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/reference_appendices/python_3_support.html