Поддержка Python 3
В Ansible 2.5 и выше поддерживается Python 3. Ранее, до версии 2.5, поддержка Python 3 считалась техническим предварительным просмотром. В этой статье рассматривается настройка контроллера и управляемых машин для использования Python 3.
Примечание
Ansible поддерживает только версии Python 3.5 и выше.
На стороне контроллера
Самый простой способ запустить /usr/bin/ansible под Python 3 — установить его с помощью Python3 версии pip. Это заставит по умолчанию /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 на управляемых машинах с командами и плейбуками
- Установите параметр конфигурации
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
См. также
Работа с инвентаризацией для получения дополнительной информации.
- Выполните свою команду или плейбук:
$ ansible localhost-py3 -m ping $ ansible-playbook sample-playbook.yml
Обратите внимание, что вы также можете использовать опцию командной строки -e для ручного указания интерпретатора Python при запуске команды. Это может быть полезно, если вы хотите проверить, есть ли ошибки в определенном модуле или плейбуке под 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.5/reference_appendices/python_3_support.html