Поддержка Python 3
В Ansible 2.5 и выше поддерживается Python 3. В версиях ниже 2.5 поддержка Python 3 считалась предварительной технологией. В данном разделе рассматривается, как настроить контроллер и управляемые машины для использования Python 3.
Примечание
Ansible поддерживает только версии Python 3.5 и выше.
На стороне контроллера
Самый простой способ запустить /usr/bin/ansible под Python 3 — установить его с помощью pip версии Python3. Это заставит по умолчанию /usr/bin/ansible работать с Python3:
$ pip3 install ansible $ ansible --version | grep "python version" python version = 3.6.2 (default, Sep 22 2017, 08:28:09) [GCC 7.2.1 20170915 (Red Hat 7.2.1-2)]
Если вы используете 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_interpreterна /usr/bin/python3. Параметр конфигурацииansible_python_interpreterобычно устанавливается как переменная инвентаризации, связанная с узлом или группой узлов:
# 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 в отчете об ошибке, чтобы соответствующие люди рассмотрели его.
Если вы хотите исправить код и отправить запрос на добавление в github, вы можете обратиться к Ansible и Python 3 для получения информации о том, как мы исправляем распространенные проблемы совместимости Python3 в кодовой базе Ansible.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/reference_appendices/python_3_support.html