Проблемы с изменением Ansible_Python_Interpreter - PullRequest
3 голосов
/ 20 июня 2020

Как я могу изменить свое значение ansible_python_interpreter в Ubuntu?

Я загрузил и установил Python 2.7.12 из tar, и теперь он работает по умолчанию за пределами Ansible

# which python
/usr/local/bin/python
#python --version
Python 2.7.12

Но когда я пытаюсь установить переменную , Ansible показывает, что он все еще использует эту более новую версию Python (мне нужно использовать эту старую версию для тестирования)

# ansible-playbook --version -e "ansible_python_interpreter=/usr/local/bin/python"

ansible-playbook 2.5.1
  config file = /home/fortinet/Downloads/ansible/playbooks/complete_provisioning/ansible.cfg
  configured module search path = [u'/home/fortinet/Downloads/ansible/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
root@ubuntu18:/home/fortinet/Downloads/ansible/playbooks/complete_provisioning#

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

ansible_python_interpreter управляет версией python, которая используется на целевой машине .

В качестве примера на моей машине ubuntu 18.04 (localhost используется в качестве цели), python3 используется по умолчанию, но я могу переключиться на python 2.7:

$ ansible localhost -m setup -a filter=ansible_python_version
localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_python_version": "3.6.9"
    },
    "changed": false
}
$ ansible localhost -m setup -e ansible_python_interpreter=/usr/bin/python -a filter=ansible_python_version
localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_python_version": "2.7.17"
    },
    "changed": false
}

Теперь в вашем примере выше показана версия python, используемая ansible на контроллере . Если вы хотите изменить эту версию, вам необходимо переустановить ansible внутри указанной c версии python, которую вы хотите использовать. На самом деле это зависит от того, как вы установили ansible (rpm, deb, pip, from source ...). В основном, до go от python 2.7 до python 3.x при установке с помощью pip:

pip uninstall ansible
pip3 install ansible
1 голос
/ 20 июня 2020

Невозможно настроить версию Python, используемую Ansible на контроллере.

ANSIBLE_PYTHON_INTERPRETER параметр конфигурации будет установлен:

Путь к интерпретатору Python, который будет использоваться для выполнения модуля на удаленных целях

Версия Python на контроллере зависит от того, как Ansible построен. Например,

shell> grep DISTRIB_DESCRIPTION /etc/lsb-release
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

shell> dpkg -l | grep ansible
ii  ansible                                2.9.6-1ppa~bionic

shell> ansible --version
ansible 2.9.6
  config file = /home/admin/.ansible.cfg
  configured module search path = [u'/home/admin/.ansible/my_modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.17 (default, Nov  7 2019, 10:07:09) [GCC 7.4.0]
shell> grep DISTRIB_DESCRIPTION /etc/lsb-release
DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"

shell> dpkg -l | grep ansible
ii  ansible                               2.9.6+dfsg-1

shell> ansible --version
ansible 2.9.6
  config file = /home/admin/.ansible.cfg
  configured module search path = ['/home/admin/.ansible/my_modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.2 (default, Apr 27 2020, 15:53:34) [GCC 9.3.0]
...