-
-
Save gwillem/4ba393dceb55e5ae276a87300f6b8e6f to your computer and use it in GitHub Desktop.
# Add this snippet to the top of your playbook. | |
# It will install python2 if missing (but checks first so no expensive repeated apt updates) | |
# gwillem@gmail.com | |
- hosts: all | |
gather_facts: False | |
tasks: | |
- name: install python 2 | |
raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal) |
FWIW, I've got an ansible role based upon this thread that works for EL/RedHat/Debian/Ubuntu/FreeBSD. I just published it to ansible- galaxy. Would love for some feedback.
does anyone know how to install python if the target machine has no internet access? Let's say I have python package located on my control machine, is there any way to copy the python package to target machine?
I hope you've found a solution by now, but if not my suggestion would be to use 'local_action' and perform an scp or sftp command.
Lil' update, on ubuntu 18.04 installing python-minimal will prompt interactively for some libssl installation, which then sits there forever. Using test -e /usr/bin/python || (apt -y update && UCF_FORCE_CONFOLD=1 DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" -qq -y install python-minimal)
fixes this behavior.
Inspired by https://bugs.launchpad.net/ubuntu/+source/ansible/+bug/1833013/comments/6
Why is the raw
command necessary for this? I've been having trouble running this lately (likely due to @mahlingam's comment above), and I found that this seems to work for me:
- hosts: all
become: true
become_user: root
become_method: sudo
gather_facts: no
pre_tasks:
- name: Install python for Ansible
apt:
update_cache: yes
name:
- python-minimal
- setup: # aka gather_facts
tasks:
...
Just wondering if there's a reason not to do this
Just wondering if there's a reason not to do this
Yep, I think it's simply that a target server without python installed, is unable to run normal ansible task steps. Using 'raw' side-steps the need for python.
PS I think bootstrapping a Python 2 installation is now likely to be unnecessary, since Ansible 2.8+ will auto-detect a suitable Python interpreter to use anyway.
https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html
If anyone is looking for a solution for Ubuntu 20.04 - change python-minimal
to python2-minimal
.
does anyone know how to install python if the target machine has no internet access? Let's say I have python package located on my control machine, is there any way to copy the python package to target machine?