Ansible - Bootstrap python
When you’re starting hosts from scratch, you can avoid preinstalling python in your image or startup scripts by issuing a raw
command in ansible in a pre_tasks
section. This doesn’t require python to be available on the remote host, effectively bootstrapping it to continue with the playbook.
Here’s an example for debian-based hosts:
- hosts: my_host
remote_user: my_user
become: yes
gather_facts: false
pre_tasks:
- name: Bootsrap Python2 for Ansible
raw: bash -c "test -e /usr/bin/python || (apt -qqy update && apt install -qqy python-minimal)"
register: output
changed_when: output.stdout != ""
- name: Gathering Facts
setup: Also known as gather_facts
Note: gather_facts
is set to false since some advanced facts require running python code on the remote host, hence we disable it in the beginning and then re-run it using setup: