If you ever get an error while trying to provision an Ubuntu server with Ansible, check whether it’s not a case of a mismatched Python interpreter.
Today we wanted to provision one of our Ubuntu servers with Ansible and got an error:
/bin/sh: 1: /usr/bin/python: not found\r\n
After a quick search it turned out you need to explicitly provide a path to the
python3 interpreter, which is installed by default (instead of the Python 2 version):
[your-server] ip.ip.ip.ip ansible_user=ubuntu ansible_python_interpreter=/usr/bin/python3
Seems easy, so we did it and retried the playbook. Then we hit another error:
Could not find aptitude. Please ensure it is installed.
Ubuntu does not come with
aptitude by default any more (at least on AWS; on Vagrant the playbook ran fine), and it’s used by Ansible (link to the issue on Github). It turned out we can solve this by defining a
pre-task in the playbook to install it:
pre_tasks: - name: 'install aplitude' raw: sudo apt-get install -y aptitude become: true become_user: root become_method: sudo
Today’s Developers’ Notes were prepared by Łukasz, our Web Application Development Team Leader. Stay tuned, because there’s more where this came from!