Spec-Zone.ru › Ansible 2.6

Поддержка 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 на управляемых машинах с командами и плейбуками

  • Установите параметр конфигурации 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 для получения информации о том, как мы исправляем распространённые проблемы совместимости с Python 3 в кодовой базе 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.6/reference_appendices/python_3_support.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API