Ansible: как изменить версию Python

Пытаясь использовать GNS3 для отработки 9X_xubuntu скрипта ansible, есть экземпляр докера под 9X_ubuntu названием "Network Automation" со встроенным 9X_python3k ansible. Однако он по-прежнему использует 9X_xubuntu Python 2.7 в качестве интерпретатора:

root@Network-Automation:~# ansible --version
ansible 2.7.11
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]

Я понимаю, что 9X_ubuntu могу использовать команду ansible-playbook 9X_xubuntu --version -e 'ansible_python_interpreter 9X_python = / usr / bin / python3' для запуска playbook 9X_python-interpreter с Python версии 3, или я могу указать var 9X_python-3 в playbook:

- name: Common package
  hosts: all
  gather_facts: no
  vars:
    ansible_python_interpreter: /usr/bin/python3
  roles:
    - { role: python, tags: [ init, python, common, addusers] }
...
...

Однако я хотел бы иметь постоянный 9X_python-shell способ принудительно использовать Ansible 9X_ansible-playbook для использования версии Python3. Как я 9X_py3k могу этого добиться? Спасибо.

17
0
4
Общее количество ответов: 4

Ответ #1

Ответ на вопрос: Ansible: как изменить версию Python

Ссылаясь на официальную доступную документацию 9X_py3k -

Отдельные пакеты распространения Linux 9X_python могут быть упакованы для Python2 или Python3. При 9X_python3k запуске из пакетов дистрибутива вы сможете 9X_python-3.x использовать Ansible только с той версией 9X_python-interpreter Python, для которой он был установлен. Иногда 9X_python-3.x дистрибутивы предоставляют средства установки 9X_python3k для нескольких версий Python (через отдельный 9X_xubuntu пакет или через некоторые команды, которые 9X_python3 запускаются после установки). Вам нужно 9X_ubuntu будет проверить свой дистрибутив, чтобы 9X_python-shell узнать, применимо ли это в вашем случае.

Самый 9X_py простой способ запустить / usr / bin / ansible 9X_lubuntu под Python 3 - это установить его с версией 9X_python-3.x pip для Python3. Это приведет к тому, что 9X_pythonic / usr / bin / ansible по умолчанию будет 9X_python-shell работать с 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 9X_python3 Running From Source и хотите использовать 9X_pythonista Python 3 с проверкой исходного кода, запустите 9X_python-3.x свою команду через python3. Например:


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

11
1

  • Или, если вы хотите установить путь глобально, вам нужно отредактировать свой файл `ansible.cfg`. Для этого вам нужно изменить ключ `интерпретатор_pyth ...

Ответ #2

Ответ на вопрос: Ansible: как изменить версию Python

Почему бы не использовать каталог var в 9X_py своей роли ...

├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

в vars / main.yml просто добавь 9X_ansible ....

---                                                                                                                                                                        
# vars file for XXXX
  ansible_python_interpreter: /usr/bin/python3

9
0

Ответ #3

Ответ на вопрос: Ansible: как изменить версию Python

В https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html вы можете просто установить его в инвентаре 9X_pythonic для этого хоста или в своем файле конфигурации 9X_xubuntu для ansible (который также может быть отправлен 9X_python3k в том же каталоге, что и playbooks и / или 9X_lubuntu инвентарь):

Для управления поведением обнаружения:

  • для отдельных хостов и групп используйте инвентарную переменную ansible_python_interpreter.
  • глобально используйте ключ интерпретатора_python в разделе [defaults] файла ansible.cfg

1
0

Ответ #4

Ответ на вопрос: Ansible: как изменить версию Python

Добавление некоторых моментов, которые вы 9X_py3k могли пропустить из-за комментариев выше:

  • В исходном сообщении ansible был установлен под учетной записью root, в которой во многих других средах вы не будете использовать root. В этом случае вам нужно выполнить sudo su, а затем установить ansible с помощью pip3, в противном случае он будет установлен для вашей учетной записи только в: ~ / .local / bin
  • В новой версии pip рекомендуется использовать python3 -m pip install xxx, чем напрямую выполнять pip3 install xxx

1
0