
Estou tentando instalar o Ansible no CentOS 7 e tenho o Ansible configurado para usar o Python 3. Tenho o Python2 e o Python3 instalados.
[root@ansible1 ~]# python --version
Python 2.7.5
[root@ansible1 ~]# python3 --version
Python 3.6.8
Se eu instalar o Ansible usando yum install ansible
, o ansible --version
comando mostrará que o Ansible está configurado para usar o Python 2.7.5. Eu desinstalo o ansible( yum remove ansible
);
[root@ansible1 ~]# ansible --version
ansible 2.9.10
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/site-packages/ansible
executable location = /bin/ansible
python version = 2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
De acordo comhttps://docs.ansible.com/ansible/latest/reference_appendices/python_3_support.html:
A maneira mais fácil de executar /usr/bin/ansible no Python 3 é instalá-lo com a versão Python3 do pip. Isso fará com que o /usr/bin/ansible padrão seja executado com Python3
Tenho a versão 9.0.3 do pip instalada.
[root@ansible1 ~]# pip3 --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
Seguindo a documentação do Ansibles, resolvo pip3 install ansible
instalar o Ansible usando pip3.
[root@ansible1 ~]# pip3 install ansible
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting ansible
Using cached https://files.pythonhosted.org/packages/4b/69/c8aef60ce070fe6872e27db65f588bd0ffe8892a980cd3f4d844d8b72152/ansible-2.9.12.tar.gz
Requirement already satisfied: jinja2 in /usr/local/lib64/python3.6/site-packages (from ansible)
Requirement already satisfied: PyYAML in /usr/local/lib64/python3.6/site-packages (from ansible)
Requirement already satisfied: cryptography in /usr/local/lib64/python3.6/site-packages (from ansible)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib64/python3.6/site-packages (from jinja2->ansible)
Requirement already satisfied: six>=1.4.1 in /usr/local/lib/python3.6/site-packages (from cryptography->ansible)
Requirement already satisfied: cffi!=1.11.3,>=1.8 in /usr/local/lib64/python3.6/site-packages (from cryptography->ansible)
Requirement already satisfied: pycparser in /usr/local/lib/python3.6/site-packages (from cffi!=1.11.3,>=1.8->cryptography->ansible)
Installing collected packages: ansible
Running setup.py install for ansible ... done
Successfully installed ansible-2.9.12
Aqui está a saída do pip3 show ansible
comando.
[root@ansible1 ~]# pip3 show ansible
Name: ansible
Version: 2.9.12
Summary: Radically simple IT automation
Home-page: https://ansible.com/
Author: Ansible, Inc.
Author-email: [email protected]
License: GPLv3+
Location: /usr/local/lib/python3.6/site-packages
Requires: jinja2, PyYAML, cryptography
No entanto, o ansible --version
comando retorna o seguinte.
-bash: /bin/ansible: No such file or directory
Da mesma maneira, /usr/bin/ansible --version
:
-bash: /usr/bin/ansible: No such file or directory
O pip show ansible
comando mostra que o local é /usr/local/lib/python3.6/site-packages/ansible
. Este diretório existe e contém muitos arquivos e pastas, mas nenhum arquivo de configuração específico do Ansible (por exemplo, ansible.cfg) ou arquivos binários (por exemplo, ansible) que possam ser usados (o melhor que posso dizer).
Responder1
Basharmazena em cache os caminhos para comandos, e se um comando for realocado (como parece ser o seu caso), o bash não o selecionará, a menos que o cache seja limpo.
Você pode limpar ansible
o cache com:
hash -d ansible
Ou limpe todo o cache com:
hash -r