Overview
I wanted to update Ansible to use Python3.
References
Procedure
First Attempt to Install Python3 Version of Ansible
The procedure given in “ Python 3 Support ” is very simple:
pip3 install ansible
The command failed with:
Command 'pip3' not found, but can be installed with: sudo apt install python3-pip
Install Pip3
As suggested by the error messages above, I ran the following command:
sudo apt install python3-pip
The command succeeded (the log is attached as install_pip3.log)
Second Attempt to Install Python3 Version of Ansible
I repeated the procedure given in “ Python 3 Support ”:
pip3 install ansible
The command succeeded as shown below:
Collecting ansible Downloading https://files.pythonhosted.org/packages/f3/0d/ee54843308769f2c78be849d9e9f65dc8d63781941dc880f68507aae33ba/ansible-2.9.2.tar.gz (14.2MB) 100% |████████████████████████████████| 14.2MB 99kB/s Collecting PyYAML (from ansible) Downloading https://files.pythonhosted.org/packages/8d/c9/e5be955a117a1ac548cdd31e37e8fd7b02ce987f9655f5c7563c656d5dcb/PyYAML-5.2.tar.gz (265kB) 100% |████████████████████████████████| 266kB 763kB/s Collecting cryptography (from ansible) Downloading https://files.pythonhosted.org/packages/45/73/d18a8884de8bffdcda475728008b5b13be7fbef40a2acc81a0d5d524175d/cryptography-2.8-cp34-abi3-manylinux1_x86_64.whl (2.3MB) 100% |████████████████████████████████| 2.3MB 393kB/s Collecting jinja2 (from ansible) Downloading https://files.pythonhosted.org/packages/65/e0/eb35e762802015cab1ccee04e8a277b03f1d8e53da3ec3106882ec42558b/Jinja2-2.10.3-py2.py3-none-any.whl (125kB) 100% |████████████████████████████████| 133kB 821kB/s Collecting six>=1.4.1 (from cryptography->ansible) Downloading https://files.pythonhosted.org/packages/65/26/32b8464df2a97e6dd1b656ed26b2c194606c16fe163c695a992b36c11cdf/six-1.13.0-py2.py3-none-any.whl Collecting cffi!=1.11.3,>=1.8 (from cryptography->ansible) Downloading https://files.pythonhosted.org/packages/49/72/0d42f94fe94afa8030350c26e9d787219f3f008ec9bf6b86c66532b29236/cffi-1.13.2-cp36-cp36m-manylinux1_x86_64.whl (397kB) 100% |████████████████████████████████| 399kB 692kB/s Collecting MarkupSafe>=0.23 (from jinja2->ansible) Downloading https://files.pythonhosted.org/packages/b2/5f/23e0023be6bb885d00ffbefad2942bc51a620328ee910f64abe5a8d18dd1/MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl Collecting pycparser (from cffi!=1.11.3,>=1.8->cryptography->ansible) Downloading https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz (158kB) 100% |████████████████████████████████| 163kB 816kB/s Building wheels for collected packages: ansible, PyYAML, pycparser Running setup.py bdist_wheel for ansible ... done Stored in directory: /home/douglas/.cache/pip/wheels/3c/9c/04/feedbe29d7d314714eb5a8c8b5a18fe7fcc9ceca8f3789159c Running setup.py bdist_wheel for PyYAML ... done Stored in directory: /home/douglas/.cache/pip/wheels/54/b7/c7/2ada654ee54483c9329871665aaf4a6056c3ce36f29cf66e67 Running setup.py bdist_wheel for pycparser ... done Stored in directory: /home/douglas/.cache/pip/wheels/f2/9a/90/de94f8556265ddc9d9c8b271b0f63e57b26fb1d67a45564511 Successfully built ansible PyYAML pycparser Installing collected packages: PyYAML, six, pycparser, cffi, cryptography, MarkupSafe, jinja2, ansible Successfully installed MarkupSafe-1.1.1 PyYAML-5.2 ansible-2.9.2 cffi-1.13.2 cryptography-2.8 jinja2-2.10.3 pycparser-2.19 six-1.13.0
Verify Installation
I used the following procedure to verify the installation of the Python3 version of Ansible:
ansible --version
The Python2 version was still active as shown below:
ansible 2.6.3 config file = /etc/ansible/ansible-ocm12c/ansible.cfg configured module search path = [u'/home/douglas/.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.17 (default, Nov 7 2019, 10:07:09) [GCC 7.4.0]
Uninstall and Re-install Ansible
I used the following commands to uninstall and re-install Ansible. This time, I will use elevated privileges (as root ) to install Ansible:
pip3 uninstall ansible sudo pip3 install ansible
The logs are similar to above.
Find All Versions of Ansible
The verification tests said that I was still finding the Python2 version of Ansible. I used the following command to find all versions of the Ansible executable:
sudo find / -name ansible -executable -type f 2>/dev/null
The following three (3) versions were returned:
/usr/local/lib/python3.6/dist-packages/ansible_test/_data/injector/ansible /usr/local/bin/ansible /usr/bin/ansible
I assume I can safely ignore the first result returned.
The second result is the Python2 as shown below:
douglas@auburn:/etc/ansible/ansible-ocm12c$ /usr/bin/ansible --version
ansible 2.6.3
config file = /etc/ansible/ansible-ocm12c/ansible.cfg
configured module search path = [u'/home/douglas/.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.17 (default, Nov 7 2019, 10:07:09) [GCC 7.4.0]
The third result is the Python3 version as shown below:
douglas@auburn:/etc/ansible/ansible-ocm12c$ /usr/local/bin/ansible --version
ansible 2.9.2
config file = /etc/ansible/ansible-ocm12c/ansible.cfg
configured module search path = ['/home/douglas/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.9 (default, Nov 7 2019, 10:44:02) [GCC 8.3.0]
Logoff and Logon
I got the new version of Ansible after I logged off and back on to Auburn:
douglas@auburn:~$ which ansible
/usr/local/bin/ansible
douglas@auburn:~$ ansible --version
ansible 2.9.2
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/douglas/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.9 (default, Nov 7 2019, 10:44:02) [GCC 8.3.0]