Spec-Zone.ru › Ansible

Поддержка Python 3

Ansible 2.5 и более поздние версии работают с Python 3. До версии 2.5 использование Python 3 считалось предварительной технической версией. В этом разделе рассказывается, как настроить управляющий узел и управляемые машины для использования Python 3.

Информацию о поддерживаемых версиях см. в разделах Требования к управляющему узлу и Требования к управляемым узлам.

На управляющем узле

Проще всего запустить /usr/bin/ansible под Python 3, установив его с помощью версии pip для Python 3. Тогда /usr/bin/ansible будет запускаться с Python 3 по умолчанию:

$ 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 из ветки devel, клонированной из репозитория, и хотите использовать Python 3 с локальной копией исходного кода, запускайте команду через python3. Например:

$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml

Примечание

Пакеты отдельных дистрибутивов Linux могут быть собраны для Python 2 или Python 3. При запуске из пакетов дистрибутива вы сможете использовать Ansible только с той версией Python, для которой он был установлен. Иногда дистрибутивы позволяют устанавливать пакеты для нескольких версий Python (через отдельный пакет или команды, выполняемые после установки). Проверьте, применимо ли это в вашем случае, в документации вашего дистрибутива.

Использование Python 3 на управляемых машинах с помощью команд и плейбуков

  • 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

См. также

Дополнительные сведения см. в разделе Как создать инвентарь.

  • Запустите команду или плейбук:
$ 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. Обязательно упомяните в отчёте Python 3, чтобы его рассмотрели нужные специалисты.

Если вы хотите исправить код и отправить запрос на включение изменений на GitHub, ознакомьтесь с разделом Ansible и Python 3, где описано, как мы устраняем распространённые проблемы совместимости с Python 3 в кодовой базе Ansible.

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/reference_appendices/python_3_support.html

Spec-Zone.ru

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