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 могу этого добиться? Спасибо.
Ответ #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
- Или, если вы хотите установить путь глобально, вам нужно отредактировать свой файл `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
Ответ #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
Ответ #4
Ответ на вопрос: Ansible: как изменить версию Python
Добавление некоторых моментов, которые вы 9X_py3k могли пропустить из-за комментариев выше:
- В исходном сообщении ansible был установлен под учетной записью root, в которой во многих других средах вы не будете использовать root. В этом случае вам нужно выполнить sudo su, а затем установить ansible с помощью pip3, в противном случае он будет установлен для вашей учетной записи только в: ~ / .local / bin
- В новой версии pip рекомендуется использовать python3 -m pip install xxx, чем напрямую выполнять pip3 install xxx
-
1
-
20
-
5
-
2
-
3
-
2
-
2
-
4
-
1
-
1
-
1
-
14
-
4
-
1
-
4
-
4
-
4
-
8
-
2
-
3
-
20
-
3
-
4
-
4
-
7
-
1
-
2
-
4
-
2
-
1
-
1
-
3
-
10
-
6
-
4
-
4
-
3
-
4
-
6
-
5
-
3
-
2
-
1
-
5
-
8
-
1
-
2
-
5
-
1
-
4